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.
60
61
62
|
# File 'lib/opencdd/visitor.rb', line 60
def each_sorted(entities)
entities.sort_by { |e| e.code.to_s }.each { |e| yield e }
end
|
#reset! ⇒ Object
88
89
90
91
|
# File 'lib/opencdd/visitor.rb', line 88
def reset!
@seen.clear
self
end
|
#visit_class(klass) ⇒ Object
28
29
30
31
32
|
# File 'lib/opencdd/visitor.rb', line 28
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
24
25
26
|
# File 'lib/opencdd/visitor.rb', line 24
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
|
# 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)
self
end
|
#visit_properties(database) ⇒ Object
34
35
36
|
# File 'lib/opencdd/visitor.rb', line 34
def visit_properties(database)
each_sorted(database.properties) { |p| visit_property(p) }
end
|
#visit_property(prop) ⇒ Object
64
65
66
|
# File 'lib/opencdd/visitor.rb', line 64
def visit_property(prop)
@seen << prop.irdi if prop.irdi
end
|
#visit_relation(rel) ⇒ Object
80
81
82
|
# File 'lib/opencdd/visitor.rb', line 80
def visit_relation(rel)
@seen << rel.irdi if rel.irdi
end
|
#visit_relations(database) ⇒ Object
50
51
52
|
# File 'lib/opencdd/visitor.rb', line 50
def visit_relations(database)
each_sorted(database.relations) { |r| visit_relation(r) }
end
|
#visit_unit(unit) ⇒ Object
68
69
70
|
# File 'lib/opencdd/visitor.rb', line 68
def visit_unit(unit)
@seen << unit.irdi if unit.irdi
end
|
#visit_units(database) ⇒ Object
38
39
40
|
# File 'lib/opencdd/visitor.rb', line 38
def visit_units(database)
each_sorted(database.units) { |u| visit_unit(u) }
end
|
#visit_value_list(vl) ⇒ Object
72
73
74
|
# File 'lib/opencdd/visitor.rb', line 72
def visit_value_list(vl)
@seen << vl.irdi if vl.irdi
end
|
#visit_value_lists(database) ⇒ Object
42
43
44
|
# File 'lib/opencdd/visitor.rb', line 42
def visit_value_lists(database)
each_sorted(database.value_lists) { |v| visit_value_list(v) }
end
|
#visit_value_term(vt) ⇒ Object
76
77
78
|
# File 'lib/opencdd/visitor.rb', line 76
def visit_value_term(vt)
@seen << vt.irdi if vt.irdi
end
|
#visit_value_terms(database) ⇒ Object
46
47
48
|
# File 'lib/opencdd/visitor.rb', line 46
def visit_value_terms(database)
each_sorted(database.value_terms) { |v| visit_value_term(v) }
end
|
#visit_view_control(vc) ⇒ Object
84
85
86
|
# File 'lib/opencdd/visitor.rb', line 84
def visit_view_control(vc)
@seen << vc.irdi if vc.irdi
end
|
#visit_view_controls(database) ⇒ Object
54
55
56
|
# File 'lib/opencdd/visitor.rb', line 54
def visit_view_controls(database)
each_sorted(database.view_controls) { |v| visit_view_control(v) }
end
|