Mercurial > hg > soundsoftware-site
annotate vendor/gems/coderay-1.0.0/lib/coderay/encoders/lines_of_code.rb @ 1022:f2ec92061fca browsing
Merge from live branch
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Tue, 13 Nov 2012 10:35:40 +0000 |
parents | cbb26bc654de |
children |
rev | line source |
---|---|
Chris@909 | 1 module CodeRay |
Chris@909 | 2 module Encoders |
Chris@909 | 3 |
Chris@909 | 4 # Counts the LoC (Lines of Code). Returns an Integer >= 0. |
Chris@909 | 5 # |
Chris@909 | 6 # Alias: +loc+ |
Chris@909 | 7 # |
Chris@909 | 8 # Everything that is not comment, markup, doctype/shebang, or an empty line, |
Chris@909 | 9 # is considered to be code. |
Chris@909 | 10 # |
Chris@909 | 11 # For example, |
Chris@909 | 12 # * HTML files not containing JavaScript have 0 LoC |
Chris@909 | 13 # * in a Java class without comments, LoC is the number of non-empty lines |
Chris@909 | 14 # |
Chris@909 | 15 # A Scanner class should define the token kinds that are not code in the |
Chris@909 | 16 # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype]. |
Chris@909 | 17 class LinesOfCode < TokenKindFilter |
Chris@909 | 18 |
Chris@909 | 19 register_for :lines_of_code |
Chris@909 | 20 |
Chris@909 | 21 NON_EMPTY_LINE = /^\s*\S.*$/ |
Chris@909 | 22 |
Chris@909 | 23 protected |
Chris@909 | 24 |
Chris@909 | 25 def setup options |
Chris@909 | 26 if scanner |
Chris@909 | 27 kinds_not_loc = scanner.class::KINDS_NOT_LOC |
Chris@909 | 28 else |
Chris@909 | 29 warn "Tokens have no associated scanner, counting all nonempty lines." if $VERBOSE |
Chris@909 | 30 kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC |
Chris@909 | 31 end |
Chris@909 | 32 |
Chris@909 | 33 options[:exclude] = kinds_not_loc |
Chris@909 | 34 |
Chris@909 | 35 super options |
Chris@909 | 36 end |
Chris@909 | 37 |
Chris@909 | 38 def finish options |
Chris@909 | 39 output @tokens.text.scan(NON_EMPTY_LINE).size |
Chris@909 | 40 end |
Chris@909 | 41 |
Chris@909 | 42 end |
Chris@909 | 43 |
Chris@909 | 44 end |
Chris@909 | 45 end |