class AcademicBenchmarks::Standards::Publication
Attributes
acronym[RW]
children[RW]
code[RW]
descr[RW]
description[RW]
guid[RW]
Public Class Methods
from_hash(hash)
click to toggle source
# File lib/academic_benchmarks/standards/publication.rb, line 15 def self.from_hash(hash) self.new( acronym: hash["acronym"], descr: hash["descr"], guid: hash["guid"], authorities: hash["authorities"] ) end
new(acronym:, descr:, guid:, authorities:, children: [])
click to toggle source
# File lib/academic_benchmarks/standards/publication.rb, line 24 def initialize(acronym:, descr:, guid:, authorities:, children: []) @acronym = acronym @descr = descr @guid = guid @authorities = attr_to_vals(Authority, authorities) @children = children end
Public Instance Methods
rebranch_children()
click to toggle source
Children are standards, so rebranch them so we have the following structure:
Publication -> Document -> Section -> Standard
# File lib/academic_benchmarks/standards/publication.rb, line 36 def rebranch_children @seen = Set.new() @guid_to_obj = {} new_children = [] @children.each do |child| doc = reparent(child.document, new_children) sec = reparent(child.section, doc.children) sec.children.push(child) end @children.replace(new_children) remove_instance_variable('@seen') remove_instance_variable('@guid_to_obj') end
Private Instance Methods
reparent(object, children)
click to toggle source
# File lib/academic_benchmarks/standards/publication.rb, line 52 def reparent(object, children) cached_object = (@guid_to_obj[object.guid] ||= object) children.push(cached_object) if @seen.add? cached_object.guid cached_object end