Class SourceFile

java.lang.Object
com.google.javascript.jscomp.SourceFile
All Implemented Interfaces:
StaticSourceFile, Serializable
Direct Known Subclasses:
JSSourceFile

public class SourceFile extends Object implements StaticSourceFile, 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:
  • Constructor Details

    • SourceFile

      public SourceFile(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 Details

    • 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 interface StaticSourceFile
      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 String getCode() throws IOException
      Gets all the code in this source file.
      Throws:
      IOException
    • getCodeReader

      public Reader getCodeReader() throws IOException
      Gets a reader for the code in this source file.
      Throws:
      IOException
    • getOriginalPath

      public String getOriginalPath()
    • setOriginalPath

      public void setOriginalPath(String originalPath)
    • clearCachedSource

      public void clearCachedSource()
    • getName

      public String getName()
      Returns a unique name for the source file.
      Specified by:
      getName in interface StaticSourceFile
    • isExtern

      public boolean isExtern()
      Returns whether this is an extern.
      Specified by:
      isExtern in interface StaticSourceFile
    • 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 interface StaticSourceFile
      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 interface StaticSourceFile
      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 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 String toString()
      Overrides:
      toString in class Object
    • fromFile

      public static SourceFile fromFile(String fileName, Charset c)
    • fromFile

      public static SourceFile fromFile(String fileName)
    • fromFile

      public static SourceFile fromFile(File file, Charset c)
    • fromFile

      public static SourceFile fromFile(File file)
    • fromCode

      public static SourceFile fromCode(String fileName, String code)
    • fromCode

      public static SourceFile fromCode(String fileName, String originalPath, String code)
    • fromInputStream

      public static SourceFile fromInputStream(String fileName, InputStream s) throws IOException
      Throws:
      IOException
    • fromInputStream

      public static SourceFile fromInputStream(String fileName, String originalPath, InputStream s) throws IOException
      Throws:
      IOException
    • fromReader

      public static SourceFile fromReader(String fileName, Reader r) throws IOException
      Throws:
      IOException
    • fromGenerator

      public static SourceFile fromGenerator(String fileName, SourceFile.Generator generator)
    • builder

      public static SourceFile.Builder builder()
      Create a new builder for source files.