class Riddle::Configuration::Parser::InnerParser
Constants
- SETTING_PATTERN
Public Class Methods
new(input)
click to toggle source
# File lib/riddle/configuration/parser.rb, line 133 def initialize(input) @stream = StringIO.new(input) @sections = {} end
Public Instance Methods
parse!()
click to toggle source
# File lib/riddle/configuration/parser.rb, line 138 def parse! while label = next_line do @sections[label] = next_settings end @sections end
Private Instance Methods
next_line()
click to toggle source
# File lib/riddle/configuration/parser.rb, line 148 def next_line line = @stream.gets return line if line.nil? line = line.strip (line.empty? || line[/^#/]) ? next_line : line end
next_settings()
click to toggle source
# File lib/riddle/configuration/parser.rb, line 156 def next_settings settings = Hash.new { |hash, key| hash[key] = [] } line = '' while line.empty? || line == '{' do line = next_line end while line != '}' do begin match = SETTING_PATTERN.match(line) unless match.nil? key, value = *match.captures settings[key] << value while value[/\$/] do value = next_line settings[key].last << "\n" << value end end rescue => error raise error, "Error handling line '#{line}': #{error.message}", error.backtrace end line = next_line end settings end