Module: Kartograph::DSL::ClassMethods

Defined in:
lib/kartograph/dsl.rb

Instance Method Summary collapse

Instance Method Details

#extract_collection(content, scope, loader = Kartograph.default_loader) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
# 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) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
# 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) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# 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) ⇒ Hash, Array

Returns a hash representation of the collection of objects based on the mapping

Parameters:

  • scope (Symbol)

    the scope of the mapping

Returns:

  • (Hash, Array)


35
36
37
38
39
40
41
# 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) ⇒ Hash, Array

Returns a hash representation of the object based on the mapping

Parameters:

  • scope (Symbol)

    the scope of the mapping

  • object

    the object to be mapped

Returns:

  • (Hash, Array)


25
26
27
28
# 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) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# 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) ⇒ Object



47
48
49
# 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) ⇒ Object



43
44
45
# File 'lib/kartograph/dsl.rb', line 43

def representation_for(scope, object, dumper = Kartograph.default_dumper)
  dumper.dump(hash_for(scope, object))
end