GroovyMarkup
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/21 23:55 UTC 版)
「Groovy」の記事における「GroovyMarkup」の解説
Groovyコードの表記を使い、Groovyの機能(クロージャやダイナミックなメソッド追加)を駆使してツリーデータ構造の組み上げを行う。具体的には、新規ノードの追加をメソッド呼び出しとして、その新規ノードの子ノード群の記述をメソッドに渡すクロージャとして定義する。そのクロージャにはさらにその子ノードのための一連のノード追加メソッド呼び出しを含めることができ…… というように再帰的に記述していく。このときGroovyのループ文やif文などの制御構造を含むすべてのGroovyの言語機能を使うことができる。 GroovyMarkupは直感的には、XMLほど静的ではないが、純粋なプログラムコード列よりは宣言的な、「やや宣言的なデータ記述」であるといえるかもしれない。 GroovyMarkupは基本的な機能であり、GroovyMarkupを使った具体的なライブラリとしては、SwingのGUIコンポーネントの組み立てを行うSwingBuilder、DOMのようなXMLデータ構造を組み立てるMarkupBuilderなどがある。 import groovy.xml.MarkupBuilderclass Main { static void main(array) { Writer writer = new StringWriter() writer.println("") writer.println() def builder = new MarkupBuilder(writer) /* 名前がルートのタグ名であるメソッド 引数がマップである場合はタグの属性 引数が文字列である場合はテキストノードの内容でHTMLエスケープされます。 未実装メソッドをハンドルするGroovyObject#invokeMethod(String methodName, Object methodParameter)を利用 メソッドの括弧が省略されています。 */ builder.html(xmlns:"http://www.w3.org/1999/xhtml", "xml:lang":"ja") { //以降は名前がタグ名であるクロージャ /* 引数がクロージャである場合は名前がタグ名 引数がマップである場合はタグの属性 引数が文字列である場合はテキストノードの内容でHTMLエスケープされます。 */ head() { } body() { div("1行目"); div("2行目"); //ヒア・ドキュメント構文 String string = """
<div id='3'>3行目</div> <div id='4'>4行目</div>*/ }}
※この「GroovyMarkup」の解説は、「Groovy」の解説の一部です。
「GroovyMarkup」を含む「Groovy」の記事については、「Groovy」の概要を参照ください。
- GroovyMarkupのページへのリンク