У меня есть эта строка, что я пытаюсь разделить на вложенные массивы:рубин карта вложен массив
x = '{type:paragaph|class:red|content:[class:intro|body:This is the introduction paragraph.][body:This is the second paragraph.]}'
x << '{type:image|class:grid|content:[id:1|title:image1][id:2|title:image2][id:3|title:image3]}'
Это до сих пор:
x.scan(/\{(.*?)\}/).map {|m| m[0].split(/\|\s*(?=[^\[\]]*(?:\[|$))/)}
успешно делит его на:
[
["type:paragaph", "class:red", "content:[class:intro|body:This is the introduction paragraph.][body:This is the second paragraph.]"],
["type:image", "class:grid", "content:[id:1|title:image1][id:2|title:image2][id:3|title:image3]"]
]
Я пытаюсь добавить дополнительную карту:
x.scan(/\{(.*?)\}/).map {|m| m[0].split(/\|\s*(?=[^\[\]]*(?:\[|$))/)}.map {|m| m[0].split(/\:\s*(?=[^\[\]]*(?:\[|$))/)}
, которая возвращает:
[["type", "paragaph"], ["type", "image"]]
однако я после того, как вместо этого:
[
[['type','paragaph'], ['class','red'], ['content',['[class:intro|body:This is the introduction paragraph.][body:This is the second paragraph.]']],
[['type','image'], ['class','grid'], ['content','[id:1|title:image1][id:2|title:image2][id:3|title:image3]']]
]
Карта, как представляется, применяя себя весь массив 2-го уровня вместо каждого элемента внутри него , Что я здесь делаю неправильно?