Class: HALPresenter::CurieCollection
- Inherits:
-
Object
- Object
- HALPresenter::CurieCollection
show all
- Defined in:
- lib/hal_presenter/curie_collection.rb
Defined Under Namespace
Classes: CurieWithReferences
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of CurieCollection.
74
75
76
|
# File 'lib/hal_presenter/curie_collection.rb', line 74
def initialize
@collection = []
end
|
Instance Attribute Details
#collection ⇒ Object
Returns the value of attribute collection.
63
64
65
|
# File 'lib/hal_presenter/curie_collection.rb', line 63
def collection
@collection
end
|
Class Method Details
65
66
67
68
69
70
71
72
|
# File 'lib/hal_presenter/curie_collection.rb', line 65
def self.(hash, resolve_collisions: true)
new.tap do |curies|
curies.add_curies(hash[:_links]&.delete(:curies))
curies.send(:add_references, hash[:_links], :links)
curies.send(:add_references, hash[:_embedded], :embedded)
curies.resolve_collisions! if resolve_collisions
end
end
|
Instance Method Details
#add_curies(curies) ⇒ Object
78
79
80
81
82
83
84
85
|
# File 'lib/hal_presenter/curie_collection.rb', line 78
def add_curies(curies)
return unless curies
curies.each do |curie|
next if find(curie[:name])
collection << CurieWithReferences.new(curie)
end
end
|
#each ⇒ Object
111
112
113
114
|
# File 'lib/hal_presenter/curie_collection.rb', line 111
def each
return collection.each unless block_given?
collection.each { |c| yield c }
end
|
#empty? ⇒ Boolean
107
108
109
|
# File 'lib/hal_presenter/curie_collection.rb', line 107
def empty?
collection.empty?
end
|
#generate_curie_name(base) ⇒ Object
87
88
89
90
91
|
# File 'lib/hal_presenter/curie_collection.rb', line 87
def generate_curie_name(base)
name = "#{base}0"
name = name.next while find(name.to_sym)
name.to_sym
end
|
#resolve_collisions! ⇒ Object
93
94
95
96
97
98
99
100
101
|
# File 'lib/hal_presenter/curie_collection.rb', line 93
def resolve_collisions!
collection.reverse_each do |curie|
next if collection.none? { |c| c.name == curie.name && c.href != curie.href }
new_name = generate_curie_name(curie.name)
curie.rename new_name
end
self
end
|
#to_a ⇒ Object
103
104
105
|
# File 'lib/hal_presenter/curie_collection.rb', line 103
def to_a
collection.map(&:to_h)
end
|