class Smartdown::Parser::SnippetPreParser

Attributes

input_data[R]

Public Class Methods

new(input_data) click to toggle source
# File lib/smartdown/parser/snippet_pre_parser.rb, line 10
def initialize(input_data)
  @input_data = input_data
end
parse(input_data) click to toggle source
# File lib/smartdown/parser/snippet_pre_parser.rb, line 24
def self.parse(input_data)
  self.new(input_data).parse
end

Public Instance Methods

parse() click to toggle source
# File lib/smartdown/parser/snippet_pre_parser.rb, line 14
def parse
  InputSet.new({
    coversheet: parse_node_input(input_data.coversheet),
    questions: input_data.questions.map { |question_data| parse_node_input(question_data) },
    outcomes: input_data.outcomes.map { |outcome_data| parse_node_input(outcome_data) },
    snippets: input_data.snippets,
    scenario_sets: input_data.scenario_sets,
  })
end

Private Instance Methods

get_snippet(snippet_name) click to toggle source
# File lib/smartdown/parser/snippet_pre_parser.rb, line 39
def get_snippet(snippet_name)
  input_data.snippets.find { |snippet| snippet.name == snippet_name } or raise SnippetNotFound.new(snippet_name)
end
parse_content(content) click to toggle source
# File lib/smartdown/parser/snippet_pre_parser.rb, line 33
def parse_content(content)
  content.gsub(/\{\{snippet:\W?(.*)\}\}/i) { |_|
    parse_content(get_snippet($1).read.strip)
  }
end
parse_node_input(node_input) click to toggle source
# File lib/smartdown/parser/snippet_pre_parser.rb, line 29
def parse_node_input(node_input)
  InputData.new(node_input.name, parse_content(node_input.read))
end