Package com.google.javascript.jscomp

# 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:
  - 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(String fileName)`
Construct a new abstract source file.

## Method Summary

Modifier and Type
Method
Description
`static SourceFile.Builder`
`builder()`
Create a new builder for source files.
`void`
`clearCachedSource()`
`static SourceFile`
`fromCode(String fileName, String code)`
`static SourceFile`
`fromCode(String fileName, String originalPath, String code)`
`static SourceFile`
`fromFile(File file)`
`static SourceFile`
`fromFile(File file, Charset c)`
`static SourceFile`
`fromFile(String fileName)`
`static SourceFile`
`fromFile(String fileName, Charset c)`
`static SourceFile`
`fromGenerator(String fileName, SourceFile.Generator generator)`
`static SourceFile`
`fromInputStream(String fileName, InputStream s)`
`static SourceFile`
`fromInputStream(String fileName, String originalPath, InputStream s)`
`static SourceFile`
`fromReader(String fileName, Reader r)`
`String`
`getCode()`
Gets all the code in this source file.
`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.
`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.
`String`
`getName()`
Returns a unique name for the source file.
`String`
`getOriginalPath()`
`Region`
`getRegion(int lineNumber)`
Get a region around the indicated line number.
`boolean`
`isExtern()`
Returns whether this is an extern.
`void`
`setOriginalPath(String originalPath)`
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## 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.