Package com.google.javascript.jscomp
Class SourceFile
- java.lang.Object
-
- com.google.javascript.jscomp.SourceFile
-
- All Implemented Interfaces:
StaticSourceFile
,java.io.Serializable
public final class SourceFile extends java.lang.Object implements StaticSourceFile, java.io.Serializable
An abstract representation of a source file that provides access to language-neutral features.The source file can be loaded from various locations, such as from disk or from a preloaded string. Loading is done as lazily as possible to minimize IO delays and memory cost of source text.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SourceFile.Builder
A builder interface for source files.-
Nested classes/interfaces inherited from interface com.google.javascript.rhino.StaticSourceFile
StaticSourceFile.SourceKind
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static SourceFile.Builder
builder()
Create a new builder for source files.void
clearCachedSource()
For SourceFile types which cache source code that can be regenerated easily, flush the cache.static SourceFile
fromCode(java.lang.String fileName, java.lang.String code)
static SourceFile
fromCode(java.lang.String fileName, java.lang.String code, StaticSourceFile.SourceKind kind)
static SourceFile
fromFile(java.lang.String fileName)
static SourceFile
fromFile(java.lang.String fileName, java.nio.charset.Charset charset)
static SourceFile
fromPath(java.nio.file.Path path, java.nio.charset.Charset charset)
static SourceFile
fromProto(com.google.javascript.jscomp.serialization.SourceFileProto protoSourceFile)
static java.util.List<SourceFile>
fromZipFile(java.lang.String zipName, java.nio.charset.Charset inputCharset)
static java.util.List<SourceFile>
fromZipInput(java.lang.String zipName, java.io.InputStream input, java.nio.charset.Charset inputCharset)
java.lang.String
getCode()
Gets all the code in this source file.java.io.Reader
getCodeReader()
Gets a reader for the code in this source file.int
getColumnOfOffset(int offset)
Gets the 0-based column number of the given source offset.StaticSourceFile.SourceKind
getKind()
Returns the source kind.java.lang.String
getLine(int lineNumber)
Gets the source line for the indicated line number.int
getLineOffset(int lineno)
Returns the offset of the given line number relative to the file start.int
getLineOfOffset(int offset)
Gets the 1-based line number of the given source offset.Region
getLines(int lineNumber, int length)
Gets the source lines starting at `lineNumber` and continuing until `length`.java.lang.String
getName()
Returns a unique name for the source file.java.lang.String
getOriginalPath()
Deprecated.alias ofgetName()
.com.google.javascript.jscomp.serialization.SourceFileProto
getProto()
Region
getRegion(int lineNumber)
Get a region around the indicated line number.void
restoreFrom(SourceFile other)
void
setKind(StaticSourceFile.SourceKind kind)
Sets the source kind.java.lang.String
toString()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.google.javascript.rhino.StaticSourceFile
isExtern, isStrong, isWeak
-
-
-
-
Method Detail
-
getLineOffset
public int getLineOffset(int lineno)
Description copied from interface:StaticSourceFile
Returns the offset of the given line number relative to the file start. Line number should be 1-based. If the source file doesn't have line information, it should return Integer.MIN_VALUE. The negative offsets will make it more obvious what happened.- Specified by:
getLineOffset
in interfaceStaticSourceFile
- Parameters:
lineno
- the line of the input to get the absolute offset of.- Returns:
- the absolute offset of the start of the provided line.
-
getCode
public final java.lang.String getCode() throws java.io.IOException
Gets all the code in this source file.- Throws:
java.io.IOException
-
getCodeReader
@GwtIncompatible("java.io.Reader") public java.io.Reader getCodeReader() throws java.io.IOException
Gets a reader for the code in this source file.- Throws:
java.io.IOException
-
getOriginalPath
@Deprecated public java.lang.String getOriginalPath()
Deprecated.alias ofgetName()
. Use that instead
-
clearCachedSource
public void clearCachedSource()
For SourceFile types which cache source code that can be regenerated easily, flush the cache.We maintain the cache mostly to speed up generating source when displaying error messages, so dumping the file contents after the compile is a fine thing to do.
-
getName
public java.lang.String getName()
Returns a unique name for the source file.This name is not required to be an actual file path on disk.
- Specified by:
getName
in interfaceStaticSourceFile
-
getKind
public StaticSourceFile.SourceKind getKind()
Returns the source kind.- Specified by:
getKind
in interfaceStaticSourceFile
-
setKind
public void setKind(StaticSourceFile.SourceKind kind)
Sets the source kind.
-
getLineOfOffset
public int getLineOfOffset(int offset)
Description copied from interface:StaticSourceFile
Gets the 1-based line number of the given source offset.- Specified by:
getLineOfOffset
in interfaceStaticSourceFile
- Parameters:
offset
- An absolute file offset.- Returns:
- The 1-based line number of that offset. The behavior is undefined if this offset does not exist in the source file.
-
getColumnOfOffset
public int getColumnOfOffset(int offset)
Description copied from interface:StaticSourceFile
Gets the 0-based column number of the given source offset.- Specified by:
getColumnOfOffset
in interfaceStaticSourceFile
- Parameters:
offset
- An absolute file offset.- Returns:
- The 0-based column number of that offset. The behavior is undefined if this offset does not exist in the source file.
-
getLine
public java.lang.String getLine(int lineNumber)
Gets the source line for the indicated line number.- Parameters:
lineNumber
- the line number, 1 being the first line of the file.- Returns:
- The line indicated. Does not include the newline at the end
of the file. Returns
null
if it does not exist, or if there was an IO exception.
-
getLines
public Region getLines(int lineNumber, int length)
Gets the source lines starting at `lineNumber` and continuing until `length`. Omits any trailing newlines.- Parameters:
lineNumber
- the line number, 1 being the first line of the file.length
- the number of characters desired, starting at the 0th character of the specified line. If negative or 0, returns a single line.- Returns:
- The line(s) indicated. Returns
null
if it does not exist or if there was an IO exception.
-
getRegion
public Region getRegion(int lineNumber)
Get a region around the indicated line number. The exact definition of a region is implementation specific, but it must contain the line indicated by the line number. A region must not start or end by a carriage return.- Parameters:
lineNumber
- the line number, 1 being the first line of the file.- Returns:
- The line indicated. Returns
null
if it does not exist, or if there was an IO exception.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
fromZipFile
@GwtIncompatible("fromZipInput") public static java.util.List<SourceFile> fromZipFile(java.lang.String zipName, java.nio.charset.Charset inputCharset) throws java.io.IOException
- Throws:
java.io.IOException
-
fromZipInput
@GwtIncompatible("java.util.zip.ZipInputStream") public static java.util.List<SourceFile> fromZipInput(java.lang.String zipName, java.io.InputStream input, java.nio.charset.Charset inputCharset) throws java.io.IOException
- Throws:
java.io.IOException
-
fromFile
@GwtIncompatible("java.io.File") public static SourceFile fromFile(java.lang.String fileName, java.nio.charset.Charset charset)
-
fromFile
@GwtIncompatible("java.io.File") public static SourceFile fromFile(java.lang.String fileName)
-
fromPath
@GwtIncompatible("java.io.File") public static SourceFile fromPath(java.nio.file.Path path, java.nio.charset.Charset charset)
-
fromCode
public static SourceFile fromCode(java.lang.String fileName, java.lang.String code, StaticSourceFile.SourceKind kind)
-
fromCode
public static SourceFile fromCode(java.lang.String fileName, java.lang.String code)
-
fromProto
@GwtIncompatible("java.io.Reader") public static SourceFile fromProto(com.google.javascript.jscomp.serialization.SourceFileProto protoSourceFile)
-
builder
public static SourceFile.Builder builder()
Create a new builder for source files.
-
restoreFrom
public void restoreFrom(SourceFile other)
-
getProto
public com.google.javascript.jscomp.serialization.SourceFileProto getProto()
-
-