module DesignStoryboard

Constants

VERSION

Public Class Methods

build() click to toggle source
# File lib/design_storyboard.rb, line 12
def build
  info_collection = generate_storyboard_from_story_file

  if info_collection.present?
    output_storyboard Setting[:page_title], info_collection
  else
    unable "info not found."
  end
end
generate_storyboard_from_story_file() click to toggle source
# File lib/design_storyboard.rb, line 22
def generate_storyboard_from_story_file
  start

  story_collection     = {}
  headline_collection  = {}
  story                = { step: '', description: '', note: '' }
  step_number          = "0"
  step_number_is_found = false
  note_number_is_found = false

  alert 'Start analyzing.'

  IO.foreach(Setting[:input_file_path]) do |data|
    data              = data.remove_white_char
    match_step_number = data.match(/step[[:blank:]]+(?<step_number>[\d\-]+)\:/i)
    match_note_number = data.match(/(?:note|\^{4})[[:blank:]]+(?<step_number>[\d\-]+)\:/i)
    match_headline    = data.match(/\={4,}[[:blank:]]*(?<headline>.+)[[:blank:]]*\={4,}/i)
    
    if match_headline.present?
      headline_collection[step_number] = match_headline[:headline]
      next
    end

    if match_step_number.present?
      step_number_is_found = true
      note_number_is_found = false

      step_number                                 = match_step_number[:step_number]
      story_collection[step_number]               = story.dup
      story_collection[step_number][:step]        = step_number
      story_collection[step_number][:description] = ""

      say "catch <- #{step_number}"

    elsif match_note_number.present?
      step_number_is_found = false
      note_number_is_found = true

      story_collection[step_number][:note] = ""

      say "catch note <- #{step_number}"

    elsif step_number_is_found
      story_collection[step_number][:description] << data

    elsif note_number_is_found
      story_collection[step_number][:note] << data

    else
      # ignore
    end
  end

  done

rescue Exception => e
  runtime_error e
ensure
  return make_storyboard(headline_collection, story_collection)
end
make_storyboard(headline_collection, story_collection) click to toggle source
# File lib/design_storyboard.rb, line 83
def make_storyboard(headline_collection, story_collection)
  storyboard = []

  if headline_collection.present?
    if headline_collection.has_key? "0"
      storyboard.push headline_collection["0"]
      headline_collection.delete("0")
    end
  end

  story_collection.each do |index, story|
    storyboard.push story

    step_number = story[:step]

    if headline_collection.has_key? step_number
      storyboard.push headline_collection[step_number]
    end
  end

  storyboard
end