Module: Jei::Builder::RelationshipNodeBuilder
- Defined in:
- lib/jei/builders/relationship_node_builder.rb
Class Method Summary collapse
- .build(relationship, serializer) ⇒ RelationshipNode
- .build_collection_data_node(relationship, serializer) ⇒ CollectionDataNode
- .build_data_node(relationship, serializer) ⇒ DataNode
- .build_links_node(relationship, serializer) ⇒ LinksNode
Class Method Details
.build(relationship, serializer) ⇒ RelationshipNode
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/jei/builders/relationship_node_builder.rb', line 7 def self.build(relationship, serializer) node = RelationshipNode.new(relationship) if !relationship.[:no_data] node.children << case relationship when BelongsToRelationship build_data_node(relationship, serializer) when HasManyRelationship build_collection_data_node(relationship, serializer) else raise ArgumentError, 'invalid relationship type' end end if relationship.[:links] node.children << build_links_node(relationship, serializer) end node end |
.build_collection_data_node(relationship, serializer) ⇒ CollectionDataNode
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/jei/builders/relationship_node_builder.rb', line 45 def self.build_collection_data_node(relationship, serializer) node = CollectionDataNode.new resources = relationship.evaluate(serializer) resources.each do |resource| serializer = Serializer.factory(resource) node.children << ResourceIdentifierNode.new(serializer) end node end |
.build_data_node(relationship, serializer) ⇒ DataNode
32 33 34 35 36 37 38 39 40 |
# File 'lib/jei/builders/relationship_node_builder.rb', line 32 def self.build_data_node(relationship, serializer) node = DataNode.new resource = relationship.evaluate(serializer) serializer = Serializer.factory(resource) node.children << ResourceIdentifierNode.new(serializer) node end |
.build_links_node(relationship, serializer) ⇒ LinksNode
60 61 62 63 |
# File 'lib/jei/builders/relationship_node_builder.rb', line 60 def self.build_links_node(relationship, serializer) links = relationship.links(serializer) LinksNodeBuilder.build(links) end |