Class: Opencdd::Exporters::Json

Inherits:
Visitor
  • Object
show all
Defined in:
lib/opencdd/exporters/json.rb

Direct Known Subclasses

Yaml

Instance Attribute Summary collapse

Attributes inherited from Visitor

#seen

Instance Method Summary collapse

Methods inherited from Visitor

#each_sorted, #reset!, #visit_classes, #visit_properties, #visit_relations, #visit_units, #visit_value_lists, #visit_value_terms, #visit_view_controls

Constructor Details

#initializeJson

Returns a new instance of Json.



10
11
12
13
# File 'lib/opencdd/exporters/json.rb', line 10

def initialize
  super
  @nodes = []
end

Instance Attribute Details

#nodesObject (readonly)

Returns the value of attribute nodes.



8
9
10
# File 'lib/opencdd/exporters/json.rb', line 8

def nodes
  @nodes
end

Instance Method Details

#to_json(database, pretty: true) ⇒ Object



15
16
17
18
19
20
# File 'lib/opencdd/exporters/json.rb', line 15

def to_json(database, pretty: true)
  reset!
  @nodes.clear
  visit_database(database)
  pretty ? JSON.pretty_generate(@nodes) : JSON.generate(@nodes)
end

#visit_class(klass) ⇒ Object



27
28
29
30
# File 'lib/opencdd/exporters/json.rb', line 27

def visit_class(klass)
  @nodes << class_node(klass)
  super
end

#visit_database(database) ⇒ Object



22
23
24
25
# File 'lib/opencdd/exporters/json.rb', line 22

def visit_database(database)
  @database = database
  super
end

#visit_property(prop) ⇒ Object



32
33
34
# File 'lib/opencdd/exporters/json.rb', line 32

def visit_property(prop)
  @nodes << property_node(prop)
end

#visit_relation(rel) ⇒ Object



48
49
50
# File 'lib/opencdd/exporters/json.rb', line 48

def visit_relation(rel)
  @nodes << relation_node(rel)
end

#visit_unit(unit) ⇒ Object



36
37
38
# File 'lib/opencdd/exporters/json.rb', line 36

def visit_unit(unit)
  @nodes << unit_node(unit)
end

#visit_value_list(vl) ⇒ Object



40
41
42
# File 'lib/opencdd/exporters/json.rb', line 40

def visit_value_list(vl)
  @nodes << value_list_node(vl)
end

#visit_value_term(vt) ⇒ Object



44
45
46
# File 'lib/opencdd/exporters/json.rb', line 44

def visit_value_term(vt)
  @nodes << value_term_node(vt)
end

#visit_view_control(vc) ⇒ Object



52
53
54
# File 'lib/opencdd/exporters/json.rb', line 52

def visit_view_control(vc)
  @nodes << view_control_node(vc)
end