- 追加された行はこの色です。
- 削除された行はこの色です。
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
参照するだけ