Чтение конфигурационного файла с вложенными замыканиями с помощью Groovy ConfigSlurper - PullRequest
2 голосов
/ 06 декабря 2011

Я хотел бы проанализировать структуру данных замыканий (в данном случае файл конфигурации) с Groovy's ConfigSlurper . Результат анализа будет сохранен в иерархии объектов, аналогичной структуре данных. Единственная особенность этой структуры данных заключается в том, что некоторые имена замыканий повторяются в одном замыкании, например apple и green. Похоже, ConfigSlurper использует Map внутри, который заменяет уже существующие значения. Мне было интересно, если ConfigSlurper на самом деле способен обрабатывать такого рода структуры данных. Версия Groovy, которую я использую, - 1.7.10. В качестве альтернативы я попытался использовать GroovyShell для выполнения замыканий, но у меня были некоторые проблемы с порядком выполнения.

String rules = """ 
fruits {
    apples {
        apple {
            id = 11

            colors {
                green {
                    name = 'test1'
                }

                green {
                    name = 'test2'
                }
            }            
        }

        apple {
            id = 12

            colors {
                green {
                    name = 'test3'
                }

                green {
                    name = 'test4'
                }
            } 
        }
    }
}
"""

ConfigSlurper configSlurper = new ConfigSlurper()
def config = configSlurper.parse(rules)
println config

1 Ответ

1 голос
/ 08 декабря 2011

Я смог разобрать эти правила, используя GroovyShell. Каждое закрытие правил должно быть выполнено. Переданный в Binding объект позволяет вам получить значения. Для повторяющихся замыканий мне пришлось изменить значение resolveStrategy на Closure.DELEGATE_FIRST.

.
...