View Source erl_comment_scan (syntax_tools v3.2)

Functions for reading comment lines from Erlang source code.

Summary

Functions

Extracts comments from an Erlang source code file. Returns a list of entries representing multi-line comments, listed in order of increasing line-numbers. For each entry, Text is a list of strings representing the consecutive comment lines in top-down order; the strings contain all characters following (but not including) the first comment-introducing % character on the line, up to (but not including) the line-terminating newline.

Joins individual comment lines into multi-line comments. The input is a list of entries representing individual comment lines, in order of decreasing line-numbers; see scan_lines/1 for details. The result is a list of entries representing multi-line comments, still listed in order of decreasing line-numbers, but where for each entry, Text is a list of consecutive comment lines in order of increasing line-numbers (i.e., top-down).

Extracts individual comment lines from a source code string. Returns a list of comment lines found in the text, listed in order of decreasing line-numbers, i.e., the last comment line in the input is first in the resulting list. Text is a single string, containing all characters following (but not including) the first comment-introducing % character on the line, up to (but not including) the line-terminating newline. For details on Line, Column and Indent, see file/1.

Extracts comments from a string containing Erlang source code. Except for reading directly from a string, the behaviour is the same as for file/1.

Types

-type comment() ::
    {Line :: integer(), Column :: integer(), Indentation :: integer(), Text :: [string()]}.
Link to this type

commentLine()

View Source (not exported)
-type commentLine() :: {Line :: integer(), Column :: integer(), Indent :: integer(), Text :: string()}.

Functions

-spec file(file:filename()) -> [comment()].

Extracts comments from an Erlang source code file. Returns a list of entries representing multi-line comments, listed in order of increasing line-numbers. For each entry, Text is a list of strings representing the consecutive comment lines in top-down order; the strings contain all characters following (but not including) the first comment-introducing % character on the line, up to (but not including) the line-terminating newline.

Furthermore, Line is the line number and Column the left column of the comment (i.e., the column of the comment-introducing % character). Indent is the indentation (or padding), measured in character positions between the last non-whitespace character before the comment (or the left margin), and the left column of the comment. Line and Column are always positive integers, and Indentation is a nonnegative integer.

Evaluation exits with reason {read, Reason} if a read error occurred, where Reason is an atom corresponding to a Posix error code; see the module //kernel/file for details.

-spec join_lines([commentLine()]) -> [comment()].

Joins individual comment lines into multi-line comments. The input is a list of entries representing individual comment lines, in order of decreasing line-numbers; see scan_lines/1 for details. The result is a list of entries representing multi-line comments, still listed in order of decreasing line-numbers, but where for each entry, Text is a list of consecutive comment lines in order of increasing line-numbers (i.e., top-down).

See also: scan_lines/1.

-spec scan_lines(string()) -> [commentLine()].

Extracts individual comment lines from a source code string. Returns a list of comment lines found in the text, listed in order of decreasing line-numbers, i.e., the last comment line in the input is first in the resulting list. Text is a single string, containing all characters following (but not including) the first comment-introducing % character on the line, up to (but not including) the line-terminating newline. For details on Line, Column and Indent, see file/1.

-spec string(string()) -> [comment()].

Extracts comments from a string containing Erlang source code. Except for reading directly from a string, the behaviour is the same as for file/1.

See also: file/1.