module Flatter::Mapper::Traits::ClassMethods

Public Instance Methods

mount(*, &block) click to toggle source
Calls superclass method
# File lib/flatter/mapper/traits.rb, line 26
def mount(*, &block)
  super.tap{ |f| f.extension = block }
end
trait(trait_name, label: name, includes: nil, &block) click to toggle source
# File lib/flatter/mapper/traits.rb, line 30
def trait(trait_name, label: name, includes: nil, &block)
  trait_name   = "#{trait_name}_trait"
  mapper_class = Class.new(Flatter::Mapper)
  mapper_class.label = label
  mapper_class.class_eval(&block) if block.present?

  if self.name.present?
    mapper_class_name = trait_name.camelize
    const_set(mapper_class_name, mapper_class)
  end

  mount trait_name, mapper_class: mapper_class, trait: true, includes: includes
end