• 追加された行はこの色です。
  • 削除された行はこの色です。
CENTER:〔[[追加:プロトタイピング/Snippet]]〕

#contents

#insert


**HtmlElement [#x16eb493]
HtmlElement
HtmlTextElement

HtmlElements.Tag
HtmlElements.Text
.ToHTML()



**HtmlElementを実装するなら [#r18547b6]

HtmlElements.Tag
HtmlElements.Text

***Tag [#d7add0e2]
-.ElementName
終了タグにも使用。
-.Attr
Dictionary。値がnullなら属性名だけ。
-.innerElements
List。要素はHtmlElements。入れ子構造。長さ0なら子要素無し。空要素タグになる。<br />など。
-HTML
読み専用。

***Text [#l6031d86]
子要素を持たないのでノードにはならない。リーフ。
-.innerText
テキスト。
-HTML
読み専用。

HTML化はメソッドではなく、データを返すだけ。
特別な処理はしない。



**置き換え式Tokenizeでネスト対応パターンをどう書くか [#o19fda44]
- 1文字だけの否定は簡単、2文字 [[…]] の否定は?
[[(.*?)]]



**自動リンク先 [#p0925ebd]
 自動リンク先
 ─────────────────────
 Archive:
	自動リンク: @done @project(自動リンク @done)
		- 自動リンク規則 @done
		ページ/名前: @done
			(内部名でない名前)表示名について
			- 順不同ディレクトリ @done
				- 同値判定 @done
				- ディレクトリ指定→サブディレクトリの集合(ページ含まず)
				- ディレクトリ指定→存在するページの集合
	ページ作成: @done @project(ページ作成 @done)
		- 編集ビュー
		ページ/ビューも
		存在しないページの編集ビュー
	- ページ作成 @done @project(できあがり)
	- プレビュー @done @project(できあがり)
	- 既存ページ名は自動リンク @done @project(できあがり)
	- Nestable側のMerge処理 @done


**p05/Usecase [#i5d17b29]
 p05
 Usecase
	Page.Factory
		シングルトン
		new Page.Page()
			Page.LoadInheritedProperties()
			new Page.Element()
				Page.Element.Tokenize()
					Page.Elements.Notation.Generate()
						ページ内容から記法を探す
						Page.Elements.Notation.Pattern
						Page.Elements.Notation.CreateInstance()
							Notations系オブジェクト生成
						new Page.Elements.Wikitext()
							残りはWikitextにしておく
					Page.Elements.Autolink.Generate()
						ページ内容から自動リンク対象を探す
						Page.NameDictionary.GetPageNames()など
						new Page.Elements.Autolink()
							CreateInstance()では?Autolinkはサブクラスのない唯一のクラスなのでリフレクションにしていない
						new Page.Elements.Wikitext()
							残りはWikitextにしておく
					Page.Elements.Plain.Generate()
						ページ内容のその他の部分をPlains系オブジェクトに詰め込む
						Page.Elements.Plain.CreateInstance()
							Plains系オブジェクト生成
			Page.Element.InAction()
				Notations系、Plains系、Autolink、Wikitextなどがそれぞれの特殊効果を発揮
			Page.Page.ToHtml() | Page.Page.ToWikitext()
				Page.Html生成
		つまりページ生成が終わった時点で記法解析もデータ変換も検索もページ編集も終わっている
		検索やページ編集は記法になっている。Elements.Notations系のオブジェクト。
	Page.Html
		参照するだけ