class Neewom::Collection

Constants

MOD_KEY
SEQ_KEY

Public Class Methods

build_for_field(field, bind) click to toggle source
# File lib/neewom/collection.rb, line 6
def self.build_for_field(field, bind)
  if field.collection_params.present?
    method_params = field.collection_params.map do |param|
      if param.start_with?(SEQ_KEY)
        deserialize(param)
      else
        eval param.to_s, bind
      end
    end

    field.collection_klass.constantize.public_send(field.collection_method, *method_params)
  else
    field.collection_klass.constantize.public_send(field.collection_method)
  end
end
deserialize(param) click to toggle source
# File lib/neewom/collection.rb, line 22
def self.deserialize(param)
  token = param.gsub(SEQ_KEY, "")

  value, mods = token.split(MOD_KEY)
  value = JSON.parse(value)

  value = mods.split('.').reduce(value) { |acc, mod| acc.public_send(mod) } if mods.present?

  value
end
serialize(value, mods="") click to toggle source
# File lib/neewom/collection.rb, line 33
def self.serialize(value, mods="")
  token = "#{SEQ_KEY}#{value.to_json}"
  token += "#{MOD_KEY}#{mods}" unless mods.blank?

  token
end