Module: Cartograph::DSL::ClassMethods

Defined in:
lib/cartograph/dsl.rb

Instance Method Summary collapse

Instance Method Details

#cartograph(&block) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/cartograph/dsl.rb', line 8

def cartograph(&block)
  @cartograph_map ||= Map.new

  if block_given?
    block.arity > 0 ? block.call(@cartograph_map) : @cartograph_map.instance_eval(&block)
  end

  @cartograph_map
end

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



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/cartograph/dsl.rb', line 73

def extract_collection(content, scope, loader = Cartograph.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, @cartograph_map).sculpt(scope)
  end
end

#extract_into_object(object, content, scope, loader = Cartograph.default_loader) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/cartograph/dsl.rb', line 60

def extract_into_object(object, content, scope, loader = Cartograph.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, @cartograph_map)
  sculptor.sculpted_object = object
  sculptor.sculpt(scope)
end

#extract_single(content, scope, loader = Cartograph.default_loader) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/cartograph/dsl.rb', line 49

def extract_single(content, scope, loader = Cartograph.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, @cartograph_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)


33
34
35
36
37
38
39
# File 'lib/cartograph/dsl.rb', line 33

def hash_collection_for(scope, objects)
  drawn_objects = objects.map do |object|
    Artist.new(object, @cartograph_map).draw(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)


23
24
25
26
# File 'lib/cartograph/dsl.rb', line 23

def hash_for(scope, object)
  drawn_object = Artist.new(object, @cartograph_map).draw(scope)
  prepend_root_key(scope, :singular, drawn_object)
end

#represent_collection_for(scope, objects, dumper = Cartograph.default_dumper) ⇒ Object



45
46
47
# File 'lib/cartograph/dsl.rb', line 45

def represent_collection_for(scope, objects, dumper = Cartograph.default_dumper)
  dumper.dump(hash_collection_for(scope, objects))
end

#representation_for(scope, object, dumper = Cartograph.default_dumper) ⇒ Object



41
42
43
# File 'lib/cartograph/dsl.rb', line 41

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