mirror of
https://github.com/github/codeql.git
synced 2026-01-04 02:00:18 +01:00
53 lines
1.9 KiB
Plaintext
53 lines
1.9 KiB
Plaintext
/**
|
|
* Provides classes for working with lines of text in source files.
|
|
*
|
|
* This information is only available for snapshots that have been extracted with
|
|
* the `--extract-program-text` flag.
|
|
*/
|
|
|
|
import javascript
|
|
|
|
/**
|
|
* A line of text (code, comment, or whitespace) in a source file.
|
|
*
|
|
* Note that textual information is only available for snapshots that have been
|
|
* extracted with the `--extract-program-text` flag.
|
|
*/
|
|
class Line extends @line, Locatable {
|
|
override Location getLocation() { hasLocation(this, result) }
|
|
|
|
/** Gets the toplevel element this line belongs to. */
|
|
TopLevel getTopLevel() { lines(this, result, _, _) }
|
|
|
|
/** Gets the text of this line, excluding the terminator character(s). */
|
|
string getText() { lines(this, _, result, _) }
|
|
|
|
/**
|
|
* Gets the terminator character(s) of this line.
|
|
*
|
|
* This predicate may return:
|
|
*
|
|
* - the empty string if this line is the last line in a file
|
|
* and there is no line terminator after it;
|
|
* - a single-character string containing the character `\n` (newline),
|
|
* `\r` (carriage return), `\u2028` (Unicode character LINE SEPARATOR)
|
|
* or `\u2029` (Unicode character PARAGRAPH SEPARATOR);
|
|
* - the two-character string `\r\n` (carriage return followed by newline).
|
|
*/
|
|
string getTerminator() { lines(this, _, _, result) }
|
|
|
|
/**
|
|
* Gets the indentation character used by this line.
|
|
*
|
|
* The indentation character of a line is defined to be the whitespace character
|
|
* `c` such that the line starts with one or more instances of `c`, followed by a
|
|
* non-whitespace character.
|
|
*
|
|
* If the line does not start with a whitespace character, or with a mixture of
|
|
* different whitespace characters, its indentation character is undefined.
|
|
*/
|
|
string getIndentChar() { result = this.getText().regexpCapture("(\\s)\\1*\\S.*", 1) }
|
|
|
|
override string toString() { result = this.getText() }
|
|
}
|