class Muwu::ProjectReader

Attributes

path[RW]
project[RW]
validator[RW]

Public Class Methods

build() { |builder| ... } click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 19
def self.build
  builder = new
  yield(builder)
  builder.project
end
new() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 26
def initialize
  @project = Muwu::Project.new
end

Public Instance Methods

load_path(path) click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 31
def load_path(path)
  @path = File.absolute_path(path)
  @validator = ProjectValidator.new(@project)
  phase_1_set_project_working_directory
  phase_2_read_metadata
  phase_2_read_options
  phase_2_read_outline
  phase_3_set_javascript_libraries_requested
  phase_3_set_metadata_instance_date
  phase_4_validate
  phase_5_build_manifest
end
phase_1_set_project_working_directory() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 45
def phase_1_set_project_working_directory
  @project.working_directory = @path
end
phase_2_read_metadata() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 50
def phase_2_read_metadata
  if @validator.validate_file_metadata
    @project.metadata = YAML.load_file(@project.metadata_filename)
  end
end
phase_2_read_options() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 57
def phase_2_read_options
  @project.options = build_options
end
phase_2_read_outline() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 62
def phase_2_read_outline
  if @validator.validate_file_outline
    @project.outline = build_outline
  end
end
phase_3_set_javascript_libraries_requested() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 69
def phase_3_set_javascript_libraries_requested
  @project.javascript_libraries_requested = determine_javascript_libraries
end
phase_3_set_metadata_instance_date() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 74
def phase_3_set_metadata_instance_date
  @project.metadata["date of this edition"] = @project.instance_date
end
phase_4_validate() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 79
def phase_4_validate
  @validator.validate_dir_compiled
  @validator.validate_file_css
  @validator.validate_option_remote_publish
  @validator.validate_option_remote_sync
  @validator.validate_output_destination_and_formats
  @validator.validate_scenario_if_more_than_one_document
end
phase_5_build_manifest() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 89
def phase_5_build_manifest
  @project.manifest = build_manifest
end

Private Instance Methods

build_manifest() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 98
def build_manifest
  ManifestBuilder.build do |b|
    b.build_from_project(@project)
  end
end
build_options() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 105
def build_options
  ProjectOptionsReader.build do |b|
    b.build_from_ymlfile(@project)
  end
end
build_outline() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 112
def build_outline
  outline = YAML.load_stream(File.read(@project.outline_filename))
  outline.reject!{ |step| NilClass === step }
  outline.each_with_index do |document, index|
    if document_outline_does_not_begin_with_known_directive(document)
      outline[index] = presume_text_block(document)
    end
  end
  outline
end
determine_javascript_libraries() click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 124
def determine_javascript_libraries
  libraries = []
  if @project.options.html_uses_javascript_navigation
    libraries << :navigation
  end
  if libraries.count > 0
    libraries.unshift(:init)
  end
  libraries
end
document_outline_does_not_begin_with_known_directive(document) click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 136
def document_outline_does_not_begin_with_known_directive(document)
  OutlineHelper.type_of(document[0]) == nil
end
presume_text_block(document) click to toggle source
# File lib/muwu/project_builder/project_reader.rb, line 141
def presume_text_block(document)
  [{'Text' => document}]
end