这可能是一个更一般的编程问题,但我想知道 ruby 解决这个问题的最佳实践是什么。我想解析一个具有如下结构的文件:
toplevel blah blah 0
attr0: foo
attr1: bar
nextlevel something 0
child0: baz
child1: boz
var1: blah
nextlevel something 1
child0: faz
abc: yes
child1: foz
我考虑过使用 split 并解析出块,或者可能迭代文件,.each_line
然后以某种方式(我不知道如何)进行嵌套迭代
我想,嵌套线看起来像这样:
input.each_line do |line|
#parse attributes
if line =~ /nextlevel:\s+(\d)/ then
#now advance the line count somehow and continue parsing in here
end
PS 抱歉,如果示例中的名称有点混乱,但我试图想出一个简化的 MWE。