class SOML::Document
Public Class Methods
new(fields = [])
click to toggle source
# File lib/soml/document.rb, line 5 def initialize(fields = []) @fields = fields end
parse(soml)
click to toggle source
# File lib/soml/document.rb, line 25 def self.parse(soml) in_field = false state = Struct.new(:key, :value, :fields, :delim).new(nil, [], [], nil) soml.lines.map(&:chomp).each do |line| if in_field && line == state.delim state.fields << Field.new(state.key, Util.dedent(state.value.join("\n"))) in_field = false elsif in_field state.value << line else next if line.strip[0] == '#' state.key, value = line.strip.split(' ', 2) if value =~ /<<(.*)/ in_field = true state.value = [] state.delim = $1 else state.fields << Field.new(state.key, value) end end end Document.new(state.fields) end
Public Instance Methods
[](i)
click to toggle source
# File lib/soml/document.rb, line 13 def [](i) @fields[i] end
add(name, value)
click to toggle source
# File lib/soml/document.rb, line 21 def add(name, value) @fields << Field.new(name, value) end
each(&block)
click to toggle source
# File lib/soml/document.rb, line 9 def each(&block) @fields.each(&block) end
to_s()
click to toggle source
# File lib/soml/document.rb, line 17 def to_s @fields.join("\n") end