Module: Coradoc::Mirror::ReverseBuilder::FrontmatterTreeToHash

Defined in:
lib/coradoc/mirror/reverse_builder.rb

Overview

Walks a typed FrontmatterEntry / FrontmatterValue tree and rebuilds the CoreModel ‘data` hash. Inverse of Handlers::Frontmatter.build_value.

Class Method Summary collapse

Class Method Details

.to_hash(entries) ⇒ Object



577
578
579
580
581
# File 'lib/coradoc/mirror/reverse_builder.rb', line 577

def to_hash(entries)
  entries.each_with_object({}) do |entry, result|
    result[entry.key] = unwrap_value(entry.value)
  end
end

.unwrap_value(value) ⇒ Object



583
584
585
586
587
588
589
590
591
592
593
594
595
596
# File 'lib/coradoc/mirror/reverse_builder.rb', line 583

def unwrap_value(value)
  case value.value_type
  when 'map' then to_hash(value.entries || [])
  when 'array' then (value.items || []).map { |v| unwrap_value(v) }
  when 'integer'  then value.integer_value
  when 'float'    then value.float_value
  when 'boolean'  then value.boolean_value
  when 'date'     then value.date_value
  when 'datetime' then value.datetime_value
  when 'symbol'   then value.symbol_value&.to_sym
  when 'nil'      then nil
  else value.string_value
  end
end