Class 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
    • 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 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 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 of getName(). 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 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 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 class java.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)
      • 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()