class Openra::MiniYAML
Constants
- MATCHER
Public Class Methods
load(yaml_string)
click to toggle source
# File lib/openra/mini_yaml.rb, line 7 def self.load(yaml_string) last_indentation = -1 last_key = nil data = {} structs = [] yaml_string.split("\n").inject(data) do |struct, line| next if line =~ /^\s+$/ matchdata = line.match(MATCHER) indentation = matchdata[:indentation].to_s.bytesize key = matchdata[:key] value = matchdata[:value] if indentation > last_indentation struct[last_key] = {} structs.push(struct[last_key]) struct = struct[last_key] elsif indentation < last_indentation diff = last_indentation - indentation structs = structs.slice(0..-diff.next) struct = structs.last end struct[key] = value unless key.nil? || value.nil? last_key = key last_indentation = indentation struct end data[nil] end