Initial Revision
[ohcount] / lib / ohcount / sloc_info.rb
1 # a DTO class to hold the sloc information
2 class Ohcount::SlocInfo
3         attr_reader :language
4         attr_accessor :code_added, :code_removed, :comments_added, :comments_removed, :blanks_added, :blanks_removed
5
6         def initialize(language)
7                 raise ArgumentError.new('language can not be nil') unless language
8                 @language = language
9                 @code_added       = 0
10                 @code_removed     = 0
11                 @comments_added   = 0
12                 @comments_removed = 0
13                 @blanks_added     = 0
14                 @blanks_removed   = 0
15         end
16
17         def ==(b)
18                 @language         == b.language &&
19                 @code_added       == b.code_added &&
20                 @code_removed     == b.code_removed &&
21                 @comments_added   == b.comments_added &&
22                 @comments_removed == b.comments_removed &&
23                 @blanks_added     == b.blanks_added &&
24                 @blanks_removed   == b.blanks_removed
25         end
26
27         def empty?
28                 if (@code_added       == 0 && @code_removed     == 0 &&
29                           @comments_added   == 0 && @comments_removed == 0 &&
30                           @blanks_added     == 0 && @blanks_removed   == 0)
31                         return true
32                 end
33                 return false
34         end
35
36         @@lang_map = {
37                         'ada'           => {:nice_name => 'Ada'              , :category => 0},
38                         'assembler'     => {:nice_name => 'Assembler'        , :category => 0},
39                         'awk'           => {:nice_name => 'AWK'              , :category => 0},
40                         'bat'           => {:nice_name => 'DOS batch script' , :category => 0},
41                         'boo'           => {:nice_name => 'Boo'              , :category => 0},
42                         'cncpp'         => {:nice_name => 'C/C++'            , :category => 0},
43                         'clearsilver'   => {:nice_name => 'ClearSilver'      , :category => 0},
44                         'csharp'        => {:nice_name => 'C#'               , :category => 0},
45                         'css'           => {:nice_name => 'CSS'              , :category => 1},
46                         'dylan'         => {:nice_name => 'Dylan'            , :category => 0},
47                         'emacslisp'     => {:nice_name => 'Emacs Lisp'       , :category => 0},
48                         'erlang'        => {:nice_name => 'Erlang'           , :category => 0},
49                         'groovy'        => {:nice_name => 'Groovy'           , :category => 0},
50                         'html'          => {:nice_name => 'HTML'             , :category => 1},
51                         'java'          => {:nice_name => 'Java'             , :category => 0},
52                         'javascript'    => {:nice_name => 'JavaScript'       , :category => 0},
53                         'lisp'          => {:nice_name => 'Lisp'             , :category => 0},
54                         'lua'           => {:nice_name => 'Lua'              , :category => 0},
55                         'matlab'        => {:nice_name => 'Matlab'           , :category => 0},
56                         'objective_c'   => {:nice_name => 'Objective C'      , :category => 0},
57                         'pascal'        => {:nice_name => 'Pascal'           , :category => 0},
58                         'perl'          => {:nice_name => 'Perl'             , :category => 0},
59                         'php'           => {:nice_name => 'PHP'              , :category => 0},
60                         'python'        => {:nice_name => 'Python'           , :category => 0},
61                         'rexx'          => {:nice_name => 'rexx'             , :category => 0},
62                         'ruby'          => {:nice_name => 'Ruby'             , :category => 0},
63                         'scheme'        => {:nice_name => 'Scheme'           , :category => 0},
64                         'shell'         => {:nice_name => 'shell script'     , :category => 0},
65                         'sql'           => {:nice_name => 'SQL'              , :category => 0},
66                         'tcl'           => {:nice_name => 'Tcl'              , :category => 0},
67                         'visualbasic'   => {:nice_name => 'Visual Basic'     , :category => 0},
68                         'xml'           => {:nice_name => 'XML'              , :category => 1},
69                         'dmd'           => {:nice_name => 'D'                , :category => 0}
70         }
71
72         def language_nice_name
73                 @@lang_map[self.language][:nice_name]
74         end
75
76         def language_category
77                 @@lang_map[self.language][:category]
78         end
79
80 end