Class: TreeSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/tree_serializer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency_tree) ⇒ TreeSerializer



5
6
7
# File 'lib/tree_serializer.rb', line 5

def initialize(dependency_tree)
  @dependency_tree = dependency_tree
end

Instance Attribute Details

#dependency_treeObject (readonly)

Returns the value of attribute dependency_tree.



2
3
4
# File 'lib/tree_serializer.rb', line 2

def dependency_tree
  @dependency_tree
end

Instance Method Details

#serialize(output_format) ⇒ String



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/tree_serializer.rb', line 11

def serialize(output_format)
  object_to_serialize = {}
  object_to_serialize[:links] = @dependency_tree.links_with_types
  object_to_serialize[:links_count] = @dependency_tree.links_count
  object_to_serialize[:objects] = Hash[
    @dependency_tree.objects.map do |o|
      [o, { type: @dependency_tree.type(o) }]
    end
  ]

  case output_format
  when 'dot'
    serialize_to_dot(object_to_serialize)
  when 'json-pretty'
    serialize_to_json_pretty(object_to_serialize)
  when 'json'
    serialize_to_json(object_to_serialize)
  when 'json-var'
    serialize_to_json_var(object_to_serialize)
  when 'yaml'
    serialize_to_yaml(object_to_serialize)
  else
    raise
  end

end

#serialize_to_dot(object_to_serialize) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/tree_serializer.rb', line 54

def serialize_to_dot(object_to_serialize)
  indent = "\t"
  s = "digraph dependencies {\n#{indent}node [fontname=monospace, fontsize=9, shape=box, style=rounded]\n"
  object_to_serialize[:links].each do |link|
    s += "#{indent}\"#{link['source']}\" -> \"#{link['dest']}\"\n"
  end
  s += "}\n"
  s
end

#serialize_to_json(object_to_serialize) ⇒ Object



46
47
48
# File 'lib/tree_serializer.rb', line 46

def serialize_to_json(object_to_serialize)
  object_to_serialize.to_json
end

#serialize_to_json_pretty(object_to_serialize) ⇒ Object



50
51
52
# File 'lib/tree_serializer.rb', line 50

def serialize_to_json_pretty(object_to_serialize)
  JSON.pretty_generate(object_to_serialize)
end

#serialize_to_json_var(object_to_serialize) ⇒ Object



42
43
44
# File 'lib/tree_serializer.rb', line 42

def serialize_to_json_var(object_to_serialize)
  'var dependencies = ' + object_to_serialize.to_json
end

#serialize_to_yaml(object_to_serialize) ⇒ Object



38
39
40
# File 'lib/tree_serializer.rb', line 38

def serialize_to_yaml(object_to_serialize)
  object_to_serialize.to_yaml
end