class TimeScales::Frame::PartDefs

Attributes

part_defs[R]

Public Class Methods

from_key_value_map(kvm) click to toggle source
# File lib/time_scales/frame/part_defs.rb, line 9
def from_key_value_map(kvm)
  part_defs = kvm.map { |part_key, value|
    PartDef.new( part_key, value )
  }
  new( part_defs )
end
from_keys(part_keys) click to toggle source
# File lib/time_scales/frame/part_defs.rb, line 16
def from_keys(part_keys)
  part_defs = part_keys.map { |key| PartDef.new(key) }
  new( part_defs )
end
new(part_defs) click to toggle source
# File lib/time_scales/frame/part_defs.rb, line 22
def initialize(part_defs)
  @part_defs = part_defs
end

Public Instance Methods

part_values() click to toggle source
# File lib/time_scales/frame/part_defs.rb, line 30
def part_values
  assembly_sequence.map { |pd| pd.value }
end
parts() click to toggle source
# File lib/time_scales/frame/part_defs.rb, line 26
def parts
  @parts ||= assembly_sequence.map { |pd| pd.part }
end

Private Instance Methods

assembly_sequence() click to toggle source
# File lib/time_scales/frame/part_defs.rb, line 38
def assembly_sequence
  return [] if part_defs.empty?
  @assembly_sequence ||= begin
    seq = part_defs.sort_by { |ps| -ps.scale }
    seq.first.outer_scope!
    seq[0..-2].zip( seq[1..-1] ).each do |a,b|
      b.component_of! a.part
    end
    seq
  end
end