1 # A generic data object for returning parsing results from Ohcount to Ohloh.
3 # This class has the additional job of declaring a "nice" (human readable) name
4 # for each language, as well as the category (procedural code vs. markup) for each
5 # language. These features should probably live elsewhere, and are currently
6 # not covered by unit tests.
7 class Ohcount::SlocInfo
9 attr_accessor :code_added, :code_removed, :comments_added, :comments_removed, :blanks_added, :blanks_removed
11 def initialize(language)
12 raise ArgumentError.new('language can not be nil') unless language
23 @language == b.language &&
24 @code_added == b.code_added &&
25 @code_removed == b.code_removed &&
26 @comments_added == b.comments_added &&
27 @comments_removed == b.comments_removed &&
28 @blanks_added == b.blanks_added &&
29 @blanks_removed == b.blanks_removed
33 if (@code_added == 0 && @code_removed == 0 &&
34 @comments_added == 0 && @comments_removed == 0 &&
35 @blanks_added == 0 && @blanks_removed == 0)
42 'ada' => {:nice_name => 'Ada' , :category => 0},
43 'assembler' => {:nice_name => 'Assembler' , :category => 0},
44 'awk' => {:nice_name => 'AWK' , :category => 0},
45 'bat' => {:nice_name => 'DOS batch script' , :category => 0},
46 'boo' => {:nice_name => 'Boo' , :category => 0},
47 'c' => {:nice_name => 'C' , :category => 0},
48 'cpp' => {:nice_name => 'C++' , :category => 0},
49 'c_web' => {:nice_name => 'CWEB' , :category => 0},
50 'clearsilver' => {:nice_name => 'ClearSilver' , :category => 0},
51 'csharp' => {:nice_name => 'C#' , :category => 0},
52 'css' => {:nice_name => 'CSS' , :category => 1},
53 'dcl' => {:nice_name => 'DCL' , :category => 0},
54 'dylan' => {:nice_name => 'Dylan' , :category => 0},
55 'documentation' => {:nice_name => 'Documentation' , :category => 1},
56 'emacslisp' => {:nice_name => 'Emacs Lisp' , :category => 0},
57 'erlang' => {:nice_name => 'Erlang' , :category => 0},
58 'fortranfixed' => {:nice_name => 'Fortran (Fixed-format)', :category => 0},
59 'fortranfree' => {:nice_name => 'Fortran (Free-format)', :category => 0},
60 'groovy' => {:nice_name => 'Groovy' , :category => 0},
61 'html' => {:nice_name => 'HTML' , :category => 1},
62 'java' => {:nice_name => 'Java' , :category => 0},
63 'javascript' => {:nice_name => 'JavaScript' , :category => 0},
64 'knuth_web' => {:nice_name => 'WEB (Pascal)' , :category => 0},
65 'lisp' => {:nice_name => 'Lisp' , :category => 0},
66 'lua' => {:nice_name => 'Lua' , :category => 0},
67 'matlab' => {:nice_name => 'Matlab' , :category => 0},
68 'metafont' => {:nice_name => 'MetaFont' , :category => 1},
69 'metapost' => {:nice_name => 'MetaPost' , :category => 1},
70 'objective_c' => {:nice_name => 'Objective C' , :category => 0},
71 'pascal' => {:nice_name => 'Pascal' , :category => 0},
72 'perl' => {:nice_name => 'Perl' , :category => 0},
73 'php' => {:nice_name => 'PHP' , :category => 0},
74 'pike' => {:nice_name => 'Pike' , :category => 0},
75 'python' => {:nice_name => 'Python' , :category => 0},
76 'rexx' => {:nice_name => 'rexx' , :category => 0},
77 'ruby' => {:nice_name => 'Ruby' , :category => 0},
78 'scheme' => {:nice_name => 'Scheme' , :category => 0},
79 'shell' => {:nice_name => 'shell script' , :category => 0},
80 'smalltalk' => {:nice_name => 'Smalltalk' , :category => 0},
81 'sql' => {:nice_name => 'SQL' , :category => 0},
82 'tcl' => {:nice_name => 'Tcl' , :category => 0},
83 'vala' => {:nice_name => 'Vala' , :category => 0},
84 'visualbasic' => {:nice_name => 'Visual Basic' , :category => 0},
85 'xml' => {:nice_name => 'XML' , :category => 1},
86 'xmlschema' => {:nice_name => 'XML Schema' , :category => 1},
87 'xslt' => {:nice_name => 'XSL Transformation',:category => 0},
88 'dmd' => {:nice_name => 'D' , :category => 0},
89 'tex' => {:nice_name => 'TeX/LaTeX' , :category => 1},
90 'lit_haskell' => {:nice_name => 'Literate Haskell' , :category => 0},
91 'haskell' => {:nice_name => 'Haskell' , :category => 0}
94 # Returns the human readable name for a language.
95 def language_nice_name
96 @@lang_map[self.language][:nice_name]
99 # Returns the category (procedural code vs. markup) for a language.
101 # Category 0 indicates procedural code (most languages).
102 # Category 1 indicates a markup file, such as XML.
103 def language_category
104 @@lang_map[self.language][:category]