Class: Logbook::Builder

Inherits:
Parslet::Transform
  • Object
show all
Defined in:
lib/logbook/builder.rb

Class Method Summary collapse

Class Method Details

.build(contents) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/logbook/builder.rb', line 36

def self.build(contents)
  current_properties = {}
  entries_and_properties = new.apply(Parser.new.parse(contents))

  logbook_page = entries_and_properties.inject(Page.new) do |page, entry_or_property|
    case entry_or_property
    when Property
      current_properties[entry_or_property.name] = entry_or_property.value
      page
    when TaskDefinition, TaskEntry
      entry_or_property.merge_page_properties(current_properties)
      page.add(entry_or_property)
      page
    when LogEntry
      entry_or_property.properties = current_properties.dup
      page.add(entry_or_property)
      page
    else
      page
    end
  end

  logbook_page.properties = current_properties
  logbook_page
end