class Muwu::ManifestTaskBuilders::MetadataBuilder

Attributes

outline_fragment_metadata[RW]
parent_document[RW]
project[RW]
task[RW]

Public Class Methods

build() { |builder| ... } click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 18
def self.build
  builder = new
  yield(builder)
  builder.task
end
new() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 25
def initialize
  @task = ManifestTask::Metadata.new
end

Public Instance Methods

build_from_outline(outline_fragment_metadata, parent_document) click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 30
def build_from_outline(outline_fragment_metadata, parent_document)
  @destination = parent_document.destination
  @outline_fragment_metadata = outline_fragment_metadata
  @parent_document = parent_document
  @project = parent_document.project
  phase_1_set_parent
  phase_1_set_project
  phase_2_set_destination
  phase_2_set_metadata
  phase_3_validate_metadata_values_exist
end
phase_1_set_parent() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 43
def phase_1_set_parent
  @task.parent_document = @parent_document
end
phase_1_set_project() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 48
def phase_1_set_project
  @task.project = @project
end
phase_2_set_destination() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 53
def phase_2_set_destination
  @task.destination = @destination
end
phase_2_set_metadata() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 58
def phase_2_set_metadata
  @task.metadata = determine_metadata
end
phase_3_validate_metadata_values_exist() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 63
def phase_3_validate_metadata_values_exist
  ProjectValidator.new(@project).validate_task_metadata(@task)
end

Private Instance Methods

determine_metadata() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 72
def determine_metadata
  case @outline_fragment_metadata
  when String
    determine_metadata_all
  when Hash
    determine_metadata_selected
  end
end
determine_metadata_all() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 82
def determine_metadata_all
  @project.metadata.merge(determine_metadata_date_of_this_edition)
end
determine_metadata_date_of_this_edition(key: 'date of this edition') click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 110
def determine_metadata_date_of_this_edition(key: 'date of this edition')
  metadata = {key => @project.metadata["date of this edition"]}
  metadata
end
determine_metadata_selected() click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 87
def determine_metadata_selected
  metadata = {}
  keys = @outline_fragment_metadata.flatten[1]
  keys.each do |key|
    if key =~ RegexpLib.metadata_key_date_of_this_edition
      metadata.merge!(determine_metadata_date_of_this_edition(key: key))
    else
      metadata.merge!(determine_metadata_selected_and_validate(key))
    end
  end
  metadata
end
determine_metadata_selected_and_validate(key) click to toggle source
# File lib/muwu/manifest_task_builder/metadata_builder.rb, line 101
def determine_metadata_selected_and_validate(key)
  metadata = @project.metadata.select { |k,v| k.downcase == key.downcase }
  if metadata.empty?
    metadata = {key => nil}
  end
  metadata
end