Method: Toys::Tool#define_helper_module

Defined in:
lib/toys/tool.rb

#define_helper_module(name, &block) ⇒ Object



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