require 'aipim-rails/parser_helper' module Parser def self.init(filename) parser(filename) end def self.read_line(file) line = file.gets line = line.gsub("\n", "").split(' ').join(' ') unless line.nil? line end def self.parser(filename) file = File.new("features/"+filename, "r") screenshots = %x[\ls aipim/screenshots/#{filename}].split("\n") is_screenshot = false; scenario_counter = 1; screenshot_counter = 0 feature = []; feature_name = nil; feature_description = [] context_name = nil; context_description = [] scenarios = []; scenario_name = nil; scenario_steps = []; screenshot = nil line = read_line(file) while (line) if ParserHelper.is_marcacao?(line) && ParserHelper.is_screenshot?(line) is_screenshot = true line = read_line(file) elsif ParserHelper.is_funcionalidade?(line) feature_name = ParserHelper.get_funcionalidade(line) while ((line = read_line(file)) && !ParserHelper.is_comando?(line)) feature_description << line if !(line.gsub(" ", "") == "") end elsif ParserHelper.is_contexto?(line) while ((line = read_line(file)) && !ParserHelper.is_comando?(line)) context_description << line if !(line.gsub(" ", "") == "") end elsif ParserHelper.is_cenario?(line) scenario_name = ParserHelper.get_cenario(line) while ((line = read_line(file)) && !ParserHelper.is_comando?(line)) scenario_steps << line if !(line.gsub(" ", "") == "") end if is_screenshot screenshot = screenshots[screenshot_counter].to_s screenshot_counter = screenshot_counter+1 is_screenshot = false end scenarios << {name: scenario_name, steps: scenario_steps, screenshot: screenshot} scenario_steps = [] screenshot = nil else line = read_line(file) end end file.close feature = { feature_name: feature_name, feature_description: feature_description, context_name: context_name, context_description: context_description, scenarios: scenarios, filename: filename } end end