File: rule.rb

package info (click to toggle)
ohcount 3.0.0-6.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,828 kB
  • sloc: ansic: 6,534; ruby: 2,560; perl: 2,041; erlang: 350; lisp: 272; sh: 244; pascal: 196; vhdl: 150; haskell: 149; asm: 127; cs: 124; awk: 98; java: 92; php: 73; tcl: 58; xml: 57; fortran: 54; makefile: 32; python: 31; ada: 30; objc: 30; jsp: 28; sql: 18; cobol: 13; ml: 9; cpp: 3
file content (47 lines) | stat: -rw-r--r-- 1,092 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
module Ohcount
	module Gestalt
		class Rule
			def ==(other)
				return false unless self.class == other.class
				return false unless self.instance_variables == other.instance_variables
				self.instance_variables.each do |v|
					return false unless self.instance_eval(v) == other.instance_eval(v)
				end
				true
			end

      def each_rule
        yield self
      end

			def to_sym
				self.class.to_sym
			end

			# when tallying up libraries, its easier to
			# use symbol names instead of class names
			# to_sym maps FooLib to :foo_lib
			def self.to_sym
				@symbol ||= begin
											to_s =~ /([^:]*)$/
											naked_classname = $1
											chars = naked_classname.scan(/./)
											chars[0] = chars[0].downcase
											ruby_s = chars.collect do |char|
												char.downcase == char ? char : "_" + char.downcase
											end.to_s
											ruby_s.intern
										end
			end

			def self.method_missing(m,*args)
				if /(.*)_keywords$/ =~ m.to_s
					language = $1
					return rules << KeywordRule.new(language,*args)
				end
				super
			end

		end
	end
end