我已经成功编写了用于转换以下DSL的apis:
testCase
{
name = 'test'
params {
name = "var"
value = 'randomValue'
}
}
到
<testCase name='test'>
<params name='var' value='randomValue' />
</testCase>
这完美无缺。但我也想这样做(类似于Spock)。如果用户给出了这个:
testCase
{
name = 'test'
params {
name | value
1 | 2
3 | 5
}
}
这样就变成了:
<testCase name='test'>
<params name='1' value='2' />
</testCase>
<testCase name='test'>
<params name='3' value='5' />
</testCase>
请注意,这里的名称和值都可以是任何字符串。我该怎么办?我现在面临的问题是,当我看到像这样的参数时,我需要创建单独的testCase。 testCase可以有这样的其他嵌入标签:
testCase {
someTag {
someTag2 {
params {
name | value
1 | 2
3 | 5
}
}
}
所以这就像
一样生成<testCase>
<someTag>
<someTag2>
<params name='1' value='2' />
</someTag2>
</someTag>
</testCase>
<testCase>
<someTag>
<someTag2>
<params name='3' value='5' />
</someTag2>
</someTag>
</testCase>
所以在时髦的世界里,我该如何解决这个问题呢?