module Kartograph::DSL::ClassMethods
Public Instance Methods
extract_collection(content, scope, loader = Kartograph.default_loader)
click to toggle source
# File lib/kartograph/dsl.rb, line 75 def extract_collection(content, scope, loader = Kartograph.default_loader) loaded = loader.load(content) retrieve_root_key(scope, :plural) do |root_key| # Reassign loaded if a root key exists loaded = loaded[root_key] end loaded.map do |object| Sculptor.new(object, @kartograph_map).sculpt(scope) end end
extract_into_object(object, content, scope, loader = Kartograph.default_loader)
click to toggle source
# File lib/kartograph/dsl.rb, line 62 def extract_into_object(object, content, scope, loader = Kartograph.default_loader) loaded = loader.load(content) retrieve_root_key(scope, :singular) do |root_key| # Reassign loaded if a root key exists loaded = loaded[root_key] end sculptor = Sculptor.new(loaded, @kartograph_map) sculptor.sculpted_object = object sculptor.sculpt(scope) end
extract_single(content, scope, loader = Kartograph.default_loader)
click to toggle source
# File lib/kartograph/dsl.rb, line 51 def extract_single(content, scope, loader = Kartograph.default_loader) loaded = loader.load(content) retrieve_root_key(scope, :singular) do |root_key| # Reassign loaded if a root key exists loaded = loaded[root_key] end Sculptor.new(loaded, @kartograph_map).sculpt(scope) end
hash_collection_for(scope, objects)
click to toggle source
Returns a hash representation of the collection of objects based on the mapping
@param scope [Symbol] the scope of the mapping @params objects [Array] the array of objects to be mapped @return [Hash, Array]
# File lib/kartograph/dsl.rb, line 35 def hash_collection_for(scope, objects) drawn_objects = objects.map do |object| @artist.draw(object, scope) end prepend_root_key(scope, :plural, drawn_objects) end
hash_for(scope, object)
click to toggle source
Returns a hash representation of the object based on the mapping
@param scope [Symbol] the scope of the mapping @param object the object to be mapped @return [Hash, Array]
# File lib/kartograph/dsl.rb, line 25 def hash_for(scope, object) drawn_object = @artist.draw(object, scope) prepend_root_key(scope, :singular, drawn_object) end
kartograph(&block)
click to toggle source
# File lib/kartograph/dsl.rb, line 8 def kartograph(&block) @kartograph_map ||= Map.new if block_given? block.arity > 0 ? block.call(@kartograph_map) : @kartograph_map.instance_eval(&block) end @artist = Artist.new(@kartograph_map) @kartograph_map end
represent_collection_for(scope, objects, dumper = Kartograph.default_dumper)
click to toggle source
# File lib/kartograph/dsl.rb, line 47 def represent_collection_for(scope, objects, dumper = Kartograph.default_dumper) dumper.dump(hash_collection_for(scope, objects)) end
representation_for(scope, object, dumper = Kartograph.default_dumper)
click to toggle source
# File lib/kartograph/dsl.rb, line 43 def representation_for(scope, object, dumper = Kartograph.default_dumper) dumper.dump(hash_for(scope, object)) end
Private Instance Methods
prepend_root_key(scope, plurality, payload)
click to toggle source
# File lib/kartograph/dsl.rb, line 89 def prepend_root_key(scope, plurality, payload) retrieve_root_key(scope, plurality) do |root_key| # Reassign drawed if a root key exists payload = { root_key => payload } end payload end
retrieve_root_key(scope, type) { |root_key| ... }
click to toggle source
# File lib/kartograph/dsl.rb, line 98 def retrieve_root_key(scope, type, &block) if root_key = @kartograph_map.root_key_for(scope, type) yield root_key end end