Advertisement
Guest User

Untitled

a guest
Oct 5th, 2012
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.76 KB | None | 0 0
  1. s = "{new {value1 value2 value3}} {old {value2 value1 value1}} {{old school} {value2 value3 value1}}"
  2. os = []
  3. level = 0
  4. pos = 0
  5. str = Struct.new(:key, :values)
  6. value = ""
  7. o = str.new("", [])
  8. for i in 0...s.size
  9.     x = s[i...i+1]
  10.     case x
  11.     when "{"
  12.         level += 1
  13.     when "}"
  14.         if level == 2
  15.             pos = 1
  16.         end
  17.         level -= 1
  18.     when " "
  19.         case level
  20.         when 0
  21.             o.values << value
  22.             os << o.dup
  23.             o = str.new("", [])
  24.             value = ""
  25.             pos = 0
  26.         when 1
  27.             if pos == 0
  28.                 pos = 1
  29.             else
  30.                 value = ""
  31.             end
  32.         when 2
  33.             if pos == 0
  34.                 o.key += x
  35.             else
  36.                 o.values << value.dup
  37.                 value = ""
  38.             end
  39.         else
  40.             raise
  41.         end
  42.     else
  43.         if pos == 0
  44.             o.key += x
  45.         else
  46.             value += x
  47.         end
  48.     end
  49. end
  50. o.values << value
  51. os << o
  52. puts os.inspect
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement