3 class LogicalRule < Rule
6 def initialize(*rules, &block)
8 self.instance_eval(&block) if block
12 @rules.each { |r| r.each_rule(&block) }
17 cloned_rules = @rules.map { |r|
20 self.class.new(*cloned_rules)
23 def new_rule(r_class, *args, &block)
24 @rules << r_class.new(*args,&block)
27 def _or(*args, &block)
28 new_rule OrRule, *args, &block
31 def _and(*args, &block)
32 new_rule AndRule, *args, &block
35 def _not(*args, &block)
36 new_rule NotRule, *args, &block
40 new_rule GestaltRule, *args
44 new_rule LanguageRule, *args
47 def csproj_import(*args)
48 new_rule CsprojRule, *args
51 def maven_dependency(*args)
52 new_rule MavenRule, *(['dependency'] + args)
55 def maven_plugin(*args)
56 new_rule MavenRule, *(['plugin'] + args)
61 new_rule CHeaderRule, *args
65 new_rule FilenameRule, *args
69 new_rule KeywordRule, *([nil] << args)
73 new_rule CKeywordRule, *args
76 def java_import(*args)
77 new_rule JavaImportRule, *args
80 def csharp_using(*args)
81 new_rule CSharpUsingRule, *args
84 def find_filenames(*args)
85 new_rule FindFilenamesRule, *args
88 def method_missing(m,*args, &block)
89 if m.to_s =~ /^(.*)_keywords$/
91 new_args = [language] + args
92 new_rule(KeywordRule, *new_args, &block)