Sha256: 32c6a05b629daf95deb9734404697e8aeb8f47e7dce9a806a160689698dd0f57
Contents?: true
Size: 1.02 KB
Versions: 2
Compression:
Stored size: 1.02 KB
Contents
module Esearch # Abstract base class for json response presenters class Presenter include Adamantium::Flat, AbstractType, Concord.new(:raw) # Define tagged collection exposer # # @param [Symbol] name # @param [Class:Presenter] presenter # # @return [undefined] # # @api private # def self.expose_tagged_collection(key, presenter) key = key.to_s # caches string in closure ;) define_method(key) do || raw.fetch(key).map do |name, element| presenter.new(element.merge('name' => name)) end end end private_class_method :expose_tagged_collection # Define primitive exposer # # @param [Symbol] key # @param [Symbol] method_name # # @return [undefined] # # @api private # def self.expose_primitive(key, method_name = key) key = key.to_s # caches string in closure ;) define_method(method_name) do || raw.fetch(key) end end private_class_method :expose_primitive end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
esearch-0.2.1 | lib/esearch/presenter.rb |
esearch-0.2.0 | lib/esearch/presenter.rb |