Class: Teeth::ScannerDefinitionGroup
- Inherits:
-
Array
- Object
- Array
- Teeth::ScannerDefinitionGroup
show all
- Defined in:
- lib/teeth/scanner_definition.rb
Constant Summary
collapse
- DEFAULT_DEFINITIONS =
{}
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(called_method_name, *args, &block) ⇒ Object
96
97
98
99
|
# File 'lib/teeth/scanner_definition.rb', line 96
def method_missing(called_method_name, *args, &block)
args[1] ||={}
add(called_method_name, args[0], args[1])
end
|
Instance Method Details
#add(name, regex, options = {}) ⇒ Object
81
82
83
84
|
# File 'lib/teeth/scanner_definition.rb', line 81
def add(name, regex, options={})
assert_defn_has_unique_name(name)
push ScannerDefinition.new(name, regex, options)
end
|
#assert_defn_has_unique_name(name) ⇒ Object
86
87
88
89
90
|
# File 'lib/teeth/scanner_definition.rb', line 86
def assert_defn_has_unique_name(name)
if defn_names.include?(name.to_s)
raise DuplicateDefinitionError, "a definition for #{name.to_s} has already been defined"
end
end
|
#defaults_for(*default_types) ⇒ Object
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/teeth/scanner_definition.rb', line 101
def defaults_for(*default_types)
default_types.each do |default_type|
unless default_definitions = DEFAULT_DEFINITIONS[default_type]
raise InvalidDefaultDefinitionName, "no default definitions found for #{default_type.to_s}"
end
default_definitions.each do |defn|
begin
add(defn.first, defn.last)
rescue DuplicateDefinitionError
end
end
end
end
|
#defn_names ⇒ Object
92
93
94
|
# File 'lib/teeth/scanner_definition.rb', line 92
def defn_names
map { |defn_statement| defn_statement.name.to_s }
end
|