Невозможно применить Newify на Groovyshell - PullRequest
0 голосов
/ 29 октября 2018

Я хочу запустить какой-нибудь динамический скрипт с помощью Groovyshell. Но я не хочу писать новое ключевое слово в динамическом скрипте. Итак, я подумал о добавлении CompilerConfiguration с ключевым словом Newify. Но все работает не так, как ожидалось.

CompilerConfiguration configuration = new CompilerConfiguration()
 configuration.addCompilationCustomizers(
            new ASTTransformationCustomizer(
                    [pattern: "[A-Za-z0-9].*"],
                    Newify
            ))
GroovyShell shell = new GroovyShell(profile, configuration)

Я все еще получаю ошибку

Не удается найти соответствующий метод выборки # BoundingRegion (int, int, int, int)

где BoundingRegion является классом

1 Ответ

0 голосов
/ 31 декабря 2018

Возможно, вам нужно предоставить больше информации. Это работает для меня:

import org.codehaus.groovy.control.*
import org.codehaus.groovy.control.customizers.*

def script = '''
class Main {
    static main(args) {
        assert BigInteger.new(42).toString() == '42' // Ruby style
        assert BigDecimal('3.14').toString() == '3.14' // Python style matching regex
    }
}
'''

def configuration = new CompilerConfiguration()
configuration.addCompilationCustomizers(
        new ASTTransformationCustomizer(
                [pattern: "[A-Za-z0-9].*"],
                Newify
        ))

new GroovyShell(configuration).evaluate(script)
...