module FTL::Serializer::DSL

Attributes

attribute_list[R]
object_merge[R]

Public Instance Methods

attributes(*attrs) click to toggle source
# File lib/ftl/serializer/dsl.rb, line 27
def attributes(*attrs)
  attribute_list.push(attrs).flatten!.uniq!
end
define_to_h() click to toggle source
# File lib/ftl/serializer/dsl.rb, line 35
    def define_to_h
      class_eval <<-METHOD, __FILE__, __LINE__ + 1
        def hashify
          hash = {
            #{
              attribute_list.reduce('') do |method_str, attr|
                if self.camel_case?
                  attr_name = attr.to_s.camelize(:lower)
                else
                  attr_name = attr
                end

                if instance_methods.include?(attr)
                  method_str + "\"#{attr_name}\" => #{attr},"
                else
                  method_str + "\"#{attr_name}\" => obj.#{attr},"
                end
              end
            }
          }

          merge!(hash)
        end
      METHOD
    end
inherited(child) click to toggle source
# File lib/ftl/serializer/dsl.rb, line 11
def inherited(child)
  child.attributes(attribute_list) unless attribute_list.nil?
  child.merge_with(object_merge) unless object_merge.nil?
  child.root(root_name)

  FTL::Serializer.register_serializer(child)
end
merge_with(*attrs) click to toggle source
# File lib/ftl/serializer/dsl.rb, line 31
def merge_with(*attrs)
  object_merge.push(attrs).flatten!.uniq!
end