Package com.google.javascript.jscomp
Class SourceFile
- java.lang.Object
-
- com.google.javascript.jscomp.SourceFile
-
- All Implemented Interfaces:
StaticSourceFile
,java.io.Serializable
- Direct Known Subclasses:
JSSourceFile
public 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.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SourceFile.Builder
A builder interface for source files.static interface
SourceFile.Generator
A JavaScript source code provider.
-
Constructor Summary
Constructors Constructor Description SourceFile(java.lang.String fileName)
Construct a new abstract source file.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SourceFile.Builder
builder()
Create a new builder for source files.void
clearCachedSource()
static SourceFile
fromCode(java.lang.String fileName, java.lang.String code)
static SourceFile
fromCode(java.lang.String fileName, java.lang.String originalPath, java.lang.String code)
static SourceFile
fromFile(java.io.File file)
static SourceFile
fromFile(java.io.File file, java.nio.charset.Charset c)
static SourceFile
fromFile(java.lang.String fileName)
static SourceFile
fromFile(java.lang.String fileName, java.nio.charset.Charset c)
static SourceFile
fromGenerator(java.lang.String fileName, SourceFile.Generator generator)
static SourceFile
fromInputStream(java.lang.String fileName, java.io.InputStream s)
static SourceFile
fromInputStream(java.lang.String fileName, java.lang.String originalPath, java.io.InputStream s)
static SourceFile
fromReader(java.lang.String fileName, java.io.Reader r)
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.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.java.lang.String
getName()
Returns a unique name for the source file.java.lang.String
getOriginalPath()
Region
getRegion(int lineNumber)
Get a region around the indicated line number.boolean
isExtern()
Returns whether this is an extern.void
setOriginalPath(java.lang.String originalPath)
java.lang.String
toString()
-
-
-
Constructor Detail
-
SourceFile
public SourceFile(java.lang.String fileName)
Construct a new abstract source file.- Parameters:
fileName
- The file name of the source file. It does not necessarily need to correspond to a real path. But it should be unique. Will appear in warning messages emitted by the compiler.
-
-
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 java.lang.String getCode() throws java.io.IOException
Gets all the code in this source file.- Throws:
java.io.IOException
-
getCodeReader
public java.io.Reader getCodeReader() throws java.io.IOException
Gets a reader for the code in this source file.- Throws:
java.io.IOException
-
getOriginalPath
public java.lang.String getOriginalPath()
-
setOriginalPath
public void setOriginalPath(java.lang.String originalPath)
-
clearCachedSource
public void clearCachedSource()
-
getName
public java.lang.String getName()
Returns a unique name for the source file.- Specified by:
getName
in interfaceStaticSourceFile
-
isExtern
public boolean isExtern()
Returns whether this is an extern.- Specified by:
isExtern
in interfaceStaticSourceFile
-
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.
-
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
-
fromFile
public static SourceFile fromFile(java.lang.String fileName, java.nio.charset.Charset c)
-
fromFile
public static SourceFile fromFile(java.lang.String fileName)
-
fromFile
public static SourceFile fromFile(java.io.File file, java.nio.charset.Charset c)
-
fromFile
public static SourceFile fromFile(java.io.File file)
-
fromCode
public static SourceFile fromCode(java.lang.String fileName, java.lang.String code)
-
fromCode
public static SourceFile fromCode(java.lang.String fileName, java.lang.String originalPath, java.lang.String code)
-
fromInputStream
public static SourceFile fromInputStream(java.lang.String fileName, java.io.InputStream s) throws java.io.IOException
- Throws:
java.io.IOException
-
fromInputStream
public static SourceFile fromInputStream(java.lang.String fileName, java.lang.String originalPath, java.io.InputStream s) throws java.io.IOException
- Throws:
java.io.IOException
-
fromReader
public static SourceFile fromReader(java.lang.String fileName, java.io.Reader r) throws java.io.IOException
- Throws:
java.io.IOException
-
fromGenerator
public static SourceFile fromGenerator(java.lang.String fileName, SourceFile.Generator generator)
-
builder
public static SourceFile.Builder builder()
Create a new builder for source files.
-
-