108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/toys/tool.rb', line 108
def define_helper_module(name, &block)
if @alias_target
raise ToolDefinitionError, "Tool #{display_name.inspect} is an alias"
end
unless name.is_a?(String)
raise ToolDefinitionError,
"Helper module name #{name.inspect} is not a string"
end
if @defined_modules.key?(name)
raise ToolDefinitionError,
"Helper module #{name.inspect} is already defined"
end
mod = Module.new(&block)
mod.instance_methods.each do |meth|
name_str = meth.to_s
unless name_str =~ /^[a-z]\w+$/
raise ToolDefinitionError,
"Illegal helper method name: #{name_str.inspect}"
end
end
@defined_modules[name] = mod
end
|