Groovy 1.8新增DSLD示例

Groovy-Eclipse 2.5中支持DSL Descriptor (DSLD)。DSLD是Groovy文件,是对Groovy-Eclipse中的推理引擎和内容助手的扩展。Grails同样适用

用法很简单,首先可通过如下链接安装Groovy-Eclipse:

Eclipse 3.6使用的安装路径
http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.6/
Eclipse 3.7使用的安装路径
http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.7/

创建Groovy工程,将DSLD元脚本文件拷贝至工程目录下。需要注意的是,这个元脚本文件不是必须的,但是它会为你的DSLD文件添加内容助手,方便了DSLD文件的开发。

接下来,就可以通过File -> New -> Groovy DSL Descriptor,创建自己的DSLD文件了。注意,请将DSLD文件放在源文件的某个目录下。

DSLD语言是面向方面的领域特定语言(aspect-oriented domain specific language),主要由两部分组成:切入点和程序块。所谓切入点,就是一个筛选条件,满足条件的就会执行程序块。而程序块则用于定义额外的属性或方法。如:

currentType(subType(Number)).accept { 
  property name:"cm", type:"Distance", doc:
     """A <code>cm</code> from
     <a href="...">...</a>"""
}

代码中使用accept将切入点和程序块关联起来。意思就是为所有java.lang.Number及其子类添加属性cm。

Grails Domain Class中使用的约束DSL简单而清晰,但是目前还没有编辑器支持这种DSL,有的时候会在运行时才发现DSL出现了语法错误。这时,可以创建DSLD文件,来为DSL添加内容帮助。不过,前提是你使用STS或者Eclipse这样的IDE进行Grails应用的开发。详细DSLD的示例,请参见Andrew Eisenberg的博文

关于更多的DSLD的示例,可以查看这里

By huwh - Posted on 03 六月 2011