
Untitled
By: a guest on
Oct 5th, 2012 | syntax:
Ruby | size: 0.76 KB | hits: 26 | expires: Never
s = "{new {value1 value2 value3}} {old {value2 value1 value1}} {{old school} {value2 value3 value1}}"
os = []
level = 0
pos = 0
str = Struct.new(:key, :values)
value = ""
o = str.new("", [])
for i in 0...s.size
x = s[i...i+1]
case x
when "{"
level += 1
when "}"
if level == 2
pos = 1
end
level -= 1
when " "
case level
when 0
o.values << value
os << o.dup
o = str.new("", [])
value = ""
pos = 0
when 1
if pos == 0
pos = 1
else
value = ""
end
when 2
if pos == 0
o.key += x
else
o.values << value.dup
value = ""
end
else
raise
end
else
if pos == 0
o.key += x
else
value += x
end
end
end
o.values << value
os << o
puts os.inspect