File: logical_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 (104 lines) | stat: -rw-r--r-- 1,916 bytes parent folder | download | duplicates (4)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
module Ohcount
	module Gestalt
		class LogicalRule < Rule
			attr_reader :rules

			def initialize(*rules, &block)
				@rules = rules
        self.instance_eval(&block) if block
			end

      def each_rule(&block)
        @rules.each { |r| r.each_rule(&block) }
        yield self
      end

      def clone
        cloned_rules = @rules.map { |r|
          r.clone
        }
        self.class.new(*cloned_rules)
      end

			def new_rule(r_class, *args, &block)
				@rules << r_class.new(*args,&block)
			end

			def _or(*args, &block)
				new_rule OrRule, *args, &block
			end

			def _and(*args, &block)
				new_rule AndRule, *args, &block
			end

			def _not(*args, &block)
				new_rule NotRule, *args, &block
			end

			def gestalt(*args)
				new_rule GestaltRule, *args
			end

			def language(*args)
				new_rule LanguageRule, *args
			end

			def csproj_import(*args)
				new_rule CsprojRule, *args
			end

			def maven_dependency(*args)
				new_rule MavenRule, *(['dependency'] + args)
			end

			def maven_plugin(*args)
				new_rule MavenRule, *(['plugin'] + args)
			end

			# file rules
			def c_headers(*args)
				new_rule CHeaderRule, *args
			end

			def filenames(*args)
				new_rule FilenameRule, *args
			end

			def keywords(*args)
				new_rule KeywordRule, *([nil] << args)
			end

			def c_keywords(*args)
				new_rule CKeywordRule, *args
			end

			def java_import(*args)
				new_rule JavaImportRule, *args
			end

			def csharp_using(*args)
				new_rule CSharpUsingRule, *args
			end

      def find_filenames(*args)
        new_rule FindFilenamesRule, *args
      end

      def find_java_imports(*args)
        new_rule FindJavaImportsRule, *args
      end

			def method_missing(m,*args, &block)
				if m.to_s =~ /^(.*)_keywords$/
					language = $1
					new_args = [language] + args
					new_rule(KeywordRule, *new_args, &block)
				  return
        end
				super
			end

		end
	end
end