class VRT::Node
Attributes
children[RW]
id[R]
name[R]
parent[R]
priority[R]
qualified_vrt_id[R]
type[R]
version[R]
Public Class Methods
new(attributes = {})
click to toggle source
# File lib/vrt/node.rb, line 6 def initialize(attributes = {}) @id = attributes['id'].to_sym @name = attributes['name'] @priority = attributes['priority'] @type = attributes['type'] @has_children = attributes.key?('children') @children = {} @version = attributes['version'] @parent = attributes['parent'] @qualified_vrt_id = construct_vrt_id end
Public Instance Methods
as_json(options = nil)
click to toggle source
Since this object contains references to parent and children, as_json
must be overridden to avoid unending recursion.
# File lib/vrt/node.rb, line 36 def as_json(options = nil) json = {} instance_variables.each do |attribute| attr_name = attribute.to_s.tr('@', '') json[attr_name] = case attr_name when 'parent' parent&.qualified_vrt_id when 'children' children.inject({}) do |c, (k, v)| c[k] = v.nil? ? v : v.as_json(options) end else instance_variable_get(attribute) end end json end
children?()
click to toggle source
# File lib/vrt/node.rb, line 18 def children? @has_children end
construct_vrt_id()
click to toggle source
# File lib/vrt/node.rb, line 22 def construct_vrt_id id_list.join('.') end
id_list()
click to toggle source
# File lib/vrt/node.rb, line 30 def id_list parent ? parent.id_list << id : [id] end
mappings()
click to toggle source
# File lib/vrt/node.rb, line 26 def mappings Hash[VRT.mappings.map { |name, map| [name, map.get(id_list, @version)] }] end