class Smartdown::Parser::FlowInterpreter

Attributes

data_module[R]
flow_input[R]

Public Class Methods

new(flow_input, data_module=nil) click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 27
def initialize(flow_input, data_module=nil)
  @flow_input = pre_parse(flow_input)
  @data_module = data_module
end

Public Instance Methods

interpret() click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 32
def interpret
  Smartdown::Model::Flow.new(coversheet.name, [coversheet] + questions + outcomes)
end

Private Instance Methods

coversheet() click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 37
def coversheet
  interpret_node(flow_input.coversheet)
end
interpret_node(input_data) click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 49
def interpret_node(input_data)
  Smartdown::Parser::NodeInterpreter.new(input_data.name, input_data.read, options).interpret
rescue Parslet::ParseFailed => error
  raise ParseError.new(input_data.name, error)
end
options() click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 59
def options
  {}.tap do |opts|
    opts[:data_module] = data_module if data_module
  end
end
outcomes() click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 45
def outcomes
  flow_input.outcomes.map { |outcome_data| interpret_node(outcome_data) }
end
pre_parse(flow_input) click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 55
def pre_parse(flow_input)
  SnippetPreParser.parse(flow_input)
end
questions() click to toggle source
# File lib/smartdown/parser/flow_interpreter.rb, line 41
def questions
  flow_input.questions.map { |question_data| interpret_node(question_data) }
end