diff vendor/gems/coderay-1.0.0/lib/coderay/encoders/lines_of_code.rb @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/gems/coderay-1.0.0/lib/coderay/encoders/lines_of_code.rb	Fri Feb 24 19:09:32 2012 +0000
@@ -0,0 +1,45 @@
+module CodeRay
+module Encoders
+  
+  # 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,
+  # * HTML files not containing JavaScript have 0 LoC
+  # * in a Java class without comments, LoC is the number of non-empty lines
+  # 
+  # A Scanner class should define the token kinds that are not code in the
+  # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype].
+  class LinesOfCode < TokenKindFilter
+    
+    register_for :lines_of_code
+    
+    NON_EMPTY_LINE = /^\s*\S.*$/
+    
+  protected
+    
+    def setup options
+      if scanner
+        kinds_not_loc = scanner.class::KINDS_NOT_LOC
+      else
+        warn "Tokens have no associated scanner, counting all nonempty lines." if $VERBOSE
+        kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC
+      end
+      
+      options[:exclude] = kinds_not_loc
+      
+      super options
+    end
+    
+    def finish options
+      output @tokens.text.scan(NON_EMPTY_LINE).size
+    end
+    
+  end
+  
+end
+end