Class: Opencdd::Visitor
- Inherits:
-
Object
show all
- Defined in:
- lib/opencdd/visitor.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
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
#seen ⇒ Object
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
|