HtmlElement Edit

HtmlElement
HtmlTextElement

HtmlElements.Tag
HtmlElements.Text
.ToHTML()

HtmlElementを実装するなら Edit

HtmlElements.Tag
HtmlElements.Text

Tag Edit

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

Text Edit

子要素を持たないのでノードにはならない。リーフ。

  • .innerText
    テキスト。
  • HTML
    読み専用。

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

置き換え式Tokenizeでネスト対応パターンをどう書くか Edit

  • 1文字だけの否定は簡単、2文字 …[?] の否定は?
    (.*?)[?]

自動リンク Edit

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

p05/Usecase Edit

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
		参照するだけ