Class: Opencdd::Visitor

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

Direct Known Subclasses

Exporters::Json, Exporters::Mermaid

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeVisitor

Returns a new instance of Visitor.



9
10
11
# File 'lib/opencdd/visitor.rb', line 9

def initialize
  @seen = Set.new
end

Instance Attribute Details

#seenObject (readonly)

Returns the value of attribute seen.



7
8
9
# File 'lib/opencdd/visitor.rb', line 7

def seen
  @seen
end

Instance Method Details

#each_sorted(entities) ⇒ Object

Single source of truth for sort-by-code traversal. Was duplicated as .sort_by { |x| x.code.to_s } in 7 methods.



65
66
67
# File 'lib/opencdd/visitor.rb', line 65

def each_sorted(entities)
  entities.sort_by { |e| e.code.to_s }.each { |e| yield e }
end

#reset!Object



97
98
99
100
# File 'lib/opencdd/visitor.rb', line 97

def reset!
  @seen.clear
  self
end

#visit_class(klass) ⇒ Object



29
30
31
32
33
# File 'lib/opencdd/visitor.rb', line 29

def visit_class(klass)
  return if @seen.include?(klass.irdi)
  @seen << klass.irdi
  each_sorted(klass.children) { |c| visit_class(c) }
end

#visit_classes(database) ⇒ Object



25
26
27
# File 'lib/opencdd/visitor.rb', line 25

def visit_classes(database)
  each_sorted(database.root_classes) { |k| visit_class(k) }
end

#visit_database(database) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/opencdd/visitor.rb', line 13

def visit_database(database)
  visit_classes(database)
  visit_properties(database)
  visit_units(database)
  visit_value_lists(database)
  visit_value_terms(database)
  visit_relations(database)
  visit_view_controls(database)
  visit_list_of_units(database)
  self
end

#visit_list_of_unit(lou) ⇒ Object



93
94
95
# File 'lib/opencdd/visitor.rb', line 93

def visit_list_of_unit(lou)
  @seen << lou.irdi if lou.irdi
end

#visit_list_of_units(database) ⇒ Object



59
60
61
# File 'lib/opencdd/visitor.rb', line 59

def visit_list_of_units(database)
  each_sorted(database.list_of_units) { |l| visit_list_of_unit(l) }
end

#visit_properties(database) ⇒ Object



35
36
37
# File 'lib/opencdd/visitor.rb', line 35

def visit_properties(database)
  each_sorted(database.properties) { |p| visit_property(p) }
end

#visit_property(prop) ⇒ Object



69
70
71
# File 'lib/opencdd/visitor.rb', line 69

def visit_property(prop)
  @seen << prop.irdi if prop.irdi
end

#visit_relation(rel) ⇒ Object



85
86
87
# File 'lib/opencdd/visitor.rb', line 85

def visit_relation(rel)
  @seen << rel.irdi if rel.irdi
end

#visit_relations(database) ⇒ Object



51
52
53
# File 'lib/opencdd/visitor.rb', line 51

def visit_relations(database)
  each_sorted(database.relations) { |r| visit_relation(r) }
end

#visit_unit(unit) ⇒ Object



73
74
75
# File 'lib/opencdd/visitor.rb', line 73

def visit_unit(unit)
  @seen << unit.irdi if unit.irdi
end

#visit_units(database) ⇒ Object



39
40
41
# File 'lib/opencdd/visitor.rb', line 39

def visit_units(database)
  each_sorted(database.units) { |u| visit_unit(u) }
end

#visit_value_list(vl) ⇒ Object



77
78
79
# File 'lib/opencdd/visitor.rb', line 77

def visit_value_list(vl)
  @seen << vl.irdi if vl.irdi
end

#visit_value_lists(database) ⇒ Object



43
44
45
# File 'lib/opencdd/visitor.rb', line 43

def visit_value_lists(database)
  each_sorted(database.value_lists) { |v| visit_value_list(v) }
end

#visit_value_term(vt) ⇒ Object



81
82
83
# File 'lib/opencdd/visitor.rb', line 81

def visit_value_term(vt)
  @seen << vt.irdi if vt.irdi
end

#visit_value_terms(database) ⇒ Object



47
48
49
# File 'lib/opencdd/visitor.rb', line 47

def visit_value_terms(database)
  each_sorted(database.value_terms) { |v| visit_value_term(v) }
end

#visit_view_control(vc) ⇒ Object



89
90
91
# File 'lib/opencdd/visitor.rb', line 89

def visit_view_control(vc)
  @seen << vc.irdi if vc.irdi
end

#visit_view_controls(database) ⇒ Object



55
56
57
# File 'lib/opencdd/visitor.rb', line 55

def visit_view_controls(database)
  each_sorted(database.view_controls) { |v| visit_view_control(v) }
end