我希望以spock数据驱动的规范格式获得数据集描述:
'Key' | 'Value' | 'Comments'
1 | 'foo' | 'something'
2 | 'bar' | 'something else'
必须将其转换为2D数组(或任何可能实现的内容)。
如何实现此数据描述的任何想法?
P.S。最大的问题是换行检测,其余的可以通过在对象的or
上重载metaClass
来实现。
答案 0 :(得分:5)
|
运算符是左关联的,因此该表中的一行将被解析为:
('Key' | 'Value') | 'Comments'
然后你可以做些什么来检测每一行开始和结束的位置是让|
opeator返回一个包含其操作数的列表,然后为每个|
询问是否左边的操作数(即{ {1}})是一个列表。如果是,则意味着它是一行的延续;如果它不是列表,则表示它是一个新行。
以下是使用Category解析这些数据集的DSL的完整示例,以避免覆盖Object元类的内容:
this
在这个例子中,我将表解析为地图列表,但是在DSL闭包运行之后,您应该可以使用DatasetCategory的结果执行任何操作。