module Hefted::ClassMethod

Attributes

hefts[R]

Public Instance Methods

hefted(**args) click to toggle source
# File lib/hefted/class_method.rb, line 5
def hefted(**args)
  arguments = const_join(args)
  template = Base.new(*arguments.keys)
  self.const_set(arguments.name, template.new(*arguments.values).freeze)
  @hefts = (@hefts.nil? ? [] : @hefts) << arguments.name
end
release_hefted(*names) click to toggle source
# File lib/hefted/class_method.rb, line 13
def release_hefted(*names)
  names.each do |name|
    remove_const(name.to_camel) if const_defined?(name.to_camel)
  end
end

Private Instance Methods

const_join(**args) click to toggle source
# File lib/hefted/class_method.rb, line 78
def const_join(**args)
  arguments = Argument.new(**args)
  if arguments.join?
    _consts = arguments.joins.each_with_object({}) do |name, hash|
      hash.merge!(self.const_get(name).to_h)
    end.merge!(arguments.keys.zip(arguments.values).to_h)
    Argument.new(name: arguments.name, **_consts)
  else
    arguments
  end
end