class DocTemplate::Objects::AgendaMetadata
Public Class Methods
build_from(data)
click to toggle source
# File lib/doc_template/objects/agenda_metadata.rb, line 65 def self.build_from(data) # rubocop:disable Metrics/AbcSize copy = Marshal.load Marshal.dump(data) agenda_data = copy.map do |d| d[:children].each do |s| m = s[:metadata] s[:icons] = m['icons'] s[:material_ids] = m['material_ids'] s[:priority] = m['priority'] m['time'] = m['time'].to_s[/\d+/].to_i || 0 # Use color unless `no` is stated explicitly s[:use_color] = m['color'].present? ? !m['color'].casecmp('no').zero? : true s[:deselectable] = m['deselectable'].present? ? m['deselectable'].casecmp('yes').zero? : true s[:optional] = m['optional']&.casecmp('optional')&.zero? end d[:material_ids] = d[:metadata]['material_ids'] d.deep_merge(metadata: { time: d[:children].sum { |s| s[:metadata]['time'] } }) end new(set_index(children: agenda_data)) end
Public Instance Methods
add_break()
click to toggle source
# File lib/doc_template/objects/agenda_metadata.rb, line 86 def add_break idx = children.index { |c| !c.handled } || -1 group = Group.new title: '45 Minute Mark', anchor: 'optbreak', time: 0, children: [] children.insert(idx, group) end