| Class | CodeRay::Encoders::LinesOfCode |
| In: |
lib/coderay/encoders/lines_of_code.rb
|
| Parent: | Encoder |
Counts the LoC (Lines of Code). Returns an Integer >= 0.
Alias: :loc
Everything that is not comment, markup, doctype/shebang, or an empty line, is considered to be code.
For example,
A Scanner class should define the token kinds that are not code in the KINDS_NOT_LOC constant, which defaults to [:comment, :doctype].
| NON_EMPTY_LINE | = | /^\s*\S.*$/ |
# File lib/coderay/encoders/lines_of_code.rb, line 24
24: def compile tokens, options
25: if scanner = tokens.scanner
26: kinds_not_loc = scanner.class::KINDS_NOT_LOC
27: else
28: warn ArgumentError, 'Tokens have no scanner.' if $VERBOSE
29: kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC
30: end
31: code = tokens.token_class_filter :exclude => kinds_not_loc
32: @loc = code.text.scan(NON_EMPTY_LINE).size
33: end