# HG changeset patch
# User Kazuma Takeda
# Date 1482667077 -32400
# Node ID 763d63697d933520ea8ed453b13037c1481e6b80
# Parent 7071c1eff18511003b666050ae812dca803040d5
change node.
diff -r 7071c1eff185 -r 763d63697d93 Slide/prosym.md
--- a/Slide/prosym.md Sun Dec 25 20:02:52 2016 +0900
+++ b/Slide/prosym.md Sun Dec 25 20:57:57 2016 +0900
@@ -160,7 +160,7 @@
```
-# JungleのAPI
+# Jungleのサンプルコード
Jungleの例を記載する。
@@ -199,14 +199,11 @@
-# ノードの追加、削除
+# ノードの追加
``` Java
// 変数pathで指定した場所にある、ノードの子供の変数posで指定した位置子ノードを追加
Either addNewChildAt( NodePath path, int pos)
-
-// 変数pathで指定した場所にある、ノードの子供の変数posで指定した位置の子ノードを削除
-Either deleteChildAt( NodePath path, int pos)
```
# ノードに対してデータの挿入
@@ -234,7 +231,7 @@
```
-# JungleのAPI
+# Jungleのサンプルコード
Jungleの木を編集する例を記載する。
以下のコードは木からEditorを取得し、変数editorNodePathで指定したノードに新しい子ノードを追加したものである。
@@ -250,8 +247,47 @@
```
+# 検索APIの実装
+
+属性名key 属性値valueの組で検索を行うAPIの実装を、木の走査を行うTraverserクラス内に、lambda式を用いて行った。
+
+以下に検索を行う関数findの定義を記述する。
+
+``` Java
+public Iterator find(Query query, String key, String searchValue);
+```
+
+関数findは引数に、Query query、String key、String valueの3つの引数を取り、条件に一致したノードのIteratorインタフェースを返す。
+
+
+第1引数には、探索の条件を記述する関数boolean comdition(TreeNode)を定義したInterface Queryを、第2、第3引数の、String key、String ValueはIndexを用いた絞込みに使用する。
+
+# 関数findを用いた検索APIのサンプルコード
+
+``` Java
+InterfaceTraverser traverser = tree.getTraverser(true);
+Iterator resultNodeIterator = traverser.find((TreeNode node) -> {
+ String personId = node.getAttributes().getString("Personid");
+ if (personId == null) return false;
+ return personId.equals("p:2");
+}, "element", "Person");
+```
+
+・Traverserクラスは木の走査を行う。まずは木から取得してくる。
+
+・Indexからfindの第2、第3引数である、属性名"element" 属性値"Person"の組のノードを取得し、Queryに渡す。
+
+・引数のノードから関数getAttributes().getString("Personid")で属性名Personidとペアになっている属性値を取得する。
+
+・属性値がnullだった場合、このノードには属性名がPersonidの組のデータは存在しないので、falseを返し次のノードの評価を行う。
+
+・属性値がnullでなかった場合、p:2と一致するかどうかを調べ結果を返す。
+
+
# JungleでのIndexの実装
+検索を行う際にIndexを使いたい。そこでIndexを実装した。
+
Jungleは、非破壊的木構造というデータ構造上、過去の版の木構造を全て保持しているため、全ての版に独立したIndexが必要となる。
そのため、前の版のIndexを破壊すること無く、Indexを更新する必要があった。
@@ -301,42 +337,6 @@
・中身が入っているか確認、入っていた場合OptionalオブジェクトからノードリストのIteratorを返す。
-# 検索APIの実装
-
-属性名key 属性値valueの組で検索を行うAPIの実装を、木の走査を行うTraverserクラス内に、lambda式を用いて行った。
-
-以下に検索を行う関数findの定義を記述する。
-
-``` Java
-public Iterator find(Query query, String key, String searchValue);
-```
-
-関数findは引数に、Query query、String key、String valueの3つの引数を取り、条件に一致したノードのIteratorインタフェースを返す。
-
-
-第1引数には、探索の条件を記述する関数boolean comdition(TreeNode)を定義したInterface Queryを、第2、第3引数の、String key、String ValueはIndexを用いた絞込みに使用する。
-
-# 関数findを用いた検索APIのサンプルコード
-
-``` Java
-InterfaceTraverser traverser = tree.getTraverser(true);
-Iterator resultNodeIterator = traverser.find((TreeNode node) -> {
- String personId = node.getAttributes().getString("Personid");
- if (personId == null) return false;
- return personId.equals("p:2");
-}, "element", "Person");
-```
-
-・Traverserクラスは木の走査を行う。まずは木から取得してくる。
-
-・Indexからfindの第2、第3引数である、属性名"element" 属性値"Person"の組のノードを取得し、Queryに渡す。
-
-・引数のノードから関数getAttributes().getString("Personid")で属性名Personidとペアになっている属性値を取得する。
-
-・属性値がnullだった場合、このノードには属性名がPersonidの組のデータは存在しないので、falseを返し次のノードの評価を行う。
-
-・属性値がnullでなかった場合、p:2と一致するかどうかを調べ結果を返す。
-
# HTML Rendering Engine
Jungleの特性を生かしたRendering Engineを開発した。