У меня сложная категория Groovy, которая определяет мой язык DSL. Например, он содержит что-то вроде:Использовать Groovy Категория DSL неявно во всех методах класса
class MyDSL {
static Expr getParse(String expr) {
Parser.parse(expr)
}
static Expr plus(Expr a, Expr b){
a.add(b)
}
...
}
MyDSL
категория содержит DSL элементы для многих типов объектов (не только String
и Expr
). Я могу использовать DSL в другом классе, используя ключевое слово use
:
class MyAlgorithm {
Expr method1(Expr expr) {
use(MyDSL) {
def sum = 'x + y'.parse
return sum + expr
}
Expr method2(String t) {
use(MyDSL) {
def x = t.parse
return method1(x) + x
}
...
}
Могу ли я сделать что-то, чтобы избежать написания use
ключевого слова каждый раз, когда в каждом методе? Мне также хотелось бы иметь завершение кода и подсветку синтаксиса в моей среде IDE (IntelliJ отлично распознает DSL внутри use
).
Существует аналогичный вопрос Use Groovy Category implicitly in all instance methods of class об исключении use
в модульных тестах, но мне нужно сделать то же самое в основных классах.