Class: Pdadv::ScenarioParser
- Inherits:
-
Object
- Object
- Pdadv::ScenarioParser
- Defined in:
- lib/pdadv/scenario_parser.rb
Instance Method Summary collapse
- #add_message(scenario) ⇒ Object
-
#initialize(file_path) ⇒ ScenarioParser
constructor
A new instance of ScenarioParser.
- #parse ⇒ Object
- #parse_commands(scenario) ⇒ Object
- #parse_meta(scenario) ⇒ Object
- #reset ⇒ Object
Constructor Details
#initialize(file_path) ⇒ ScenarioParser
Returns a new instance of ScenarioParser.
5 6 7 8 9 |
# File 'lib/pdadv/scenario_parser.rb', line 5 def initialize(file_path) @file_path = file_path @lines = File.read(@file_path).split(/\r?\n/) reset end |
Instance Method Details
#add_message(scenario) ⇒ Object
55 56 57 58 59 |
# File 'lib/pdadv/scenario_parser.rb', line 55 def (scenario) return if .empty? scenario.(.join("\n")) = [] end |
#parse ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/pdadv/scenario_parser.rb', line 16 def parse return @result if @result reset scenario = Scenario.new (scenario) parse_commands(scenario) @result = scenario end |
#parse_commands(scenario) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/pdadv/scenario_parser.rb', line 31 def parse_commands(scenario) @lines.each do |line| case line when %r{^//} nil # comment when /^%(?<name>[^\s]+)\s*(?<argv>.+)$/ name = Regexp.last_match(1) argv = Regexp.last_match(2).to_s.split(/\s*,\s*/) scenario.add_command(name, argv) when /^#+\s(?<flag_name>.+)$/ name = Regexp.last_match(1) (scenario) scenario.enter_page(name) when /^-{3,}$/ (scenario) scenario.enter_page else .push line end end (scenario) end |
#parse_meta(scenario) ⇒ Object
27 28 29 |
# File 'lib/pdadv/scenario_parser.rb', line 27 def (scenario) scenario.env.base_path = File.('..', @file_path) end |
#reset ⇒ Object
11 12 13 14 |
# File 'lib/pdadv/scenario_parser.rb', line 11 def reset = [] @result = nil end |