• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(WikiNotation,プラグイン,フレームワーク,思い付き,実装,目次);

''「WikiNotation/」で始まるページを作成''
#lookup(WikiNotation/,* 新規作成 *);


*目次 [#bce4256a]
#contents
----
#lsx(new=true);

*関連 [#ecabb372]
#lsx(tag=WikiNotation,new=true,except=^WikiNotation(/.*)?$)

[[検索:WikiNotation]]

*WikiNotation周辺のタグ [#d6ddbb53]
#tag(0,WikiNotation)


*WikiNotationとは [#k4a7b293]
RIGHT:[[:t/WikiNotation]]

プラグイン呼び出し記法のシンタックスシュガー。
呼び出すプラグインごとに定義。1つのプラグイン呼び出しについて複数WikiNotationを定義していい。

 ----

 *
 **
 ***

 &(...);
 #...

などのWiki特有の書き方のこと。
それと、これらの書き方で書かれたテキストのこと。
「マークダウン」などと同じ用途・目的。→[[キーワード:Markdown]] [[Google:Markdown]]

WikiTextもWikiFormatも同じ意味で使われていそう。
ここではWikiNotationを含むテキストをWikiTextと言うことにしている。

[[Google:Wiki-Notation]]
[[Google:Wiki-Format]]
[[Google:WikiText]]
[[Google:Wiki Formatted Text]]


実体はプラグインの呼び出し方(プラグインを呼び出したいときの書き方)。

→ [[X/Element/Notation]]
*思い付き [#eeb15ebb]

**タブでインデントしたい [#k456a3d9]
テキストエディターを使うとインデントしやすくなる。
**検索用クラスやめ [#ye1b8fdd]
「[[検索]]」に書かれているクラスを廃止。
Notationクラスで行う。


Notationの機能…
-検索式→オブジェクトの単行表現
-ページのテキスト→オブジェクトの複数行表現
-オブジェクト同士を比較したときの適合度算出
具象クラスが同じ場合も先祖が共通の場合も使える。
先祖が共通の場合は適合度がやや下がる。
クラスメソッド。
-オブジェクト→テキスト(HTML)

…といったことができる。
**プラグインは検索時の比較方法もメソッドとして持つ。 [#d92fef23]
色とか。色プラグイン(色を示す表現を色オブジェクトに置き換えるプラグイン)色を示すWikiNotationプラグイン。
 #FFF
 White

…などが
 #FFC

などと近く(高い適合率)になるように。
**WikiCreole [#zdb58f4f]
WikiCreoleを導入(準拠)するなら日本語キーボードでのかな漢字変換向けマークアップ+WikiCreoleに。
WikiCreoleに含まれるWikiNotationはカスタマイズ不可でいい。

ページ編集ページで「WikiCreoleが使える」と一言明記。

:WikiCreole|[[http://www.wikicreole.org/>http://www.wikicreole.org/]]

チートシート
&ref(http://www.wikicreole.org/attach/CheatSheet/creole_cheat_sheet.png);

リンクはPukiWikiと同じ。MediaWikiとは違う。
箇条書きはMediaWikiと同じ。PukiWikiとは違う。
{{…}}の中がページ名として存在するなら埋め込み(includeプラグインと同じ効果)にしてもいい。[[…]]はリンク、{{…}}は埋め込みということにする。
(拡張子で画像かページ名か判断するのは良くない。不確かなので。せめてMIMEコードを取得して判断しないと。)

改行は無視。
でも連続した改行(空行)は反映する。
改行をしたいときは\\を付けなければ反映されない。これは画面の大小に関わらず誰にでも読みやすくするためか。
**ヘルプは初心者向けのみ [#cd5fccce]
詳細な説明なら定義ページを見ればいい。


**変換ルールはページ内で定義 [#a5b31f20]
WikiNotation→内部形式(Element系オブジェクト)のルール

[[RegExp]]→Element系クラス名

…という形式で定義。

1ページに1クラス分の複数書式を定義。ページ名と対応するクラスはハードコーディング(変更不可能)で良い。
それらをまとめたページを作ればWikiNotation定義の一覧になる。

----

でも、Notationを単なる 正規表現→プラグイン名とパラメーター とすれば1ページにいくらでもまとめてもいいかも知れない。
例外がなければ。

Notation定義を参照するときのキーは?
特定ページ、または特定のページ以下にあるページ集合?
*実装 [#lffa0e53]

[[埋め込み式ページ]]を応用して実装。
WikiNotationを、「プラグイン呼び出し記法が書かれたページ」を埋め込むことで実現できる。
そうすればWikiNotation→プラグイン呼び出しをページで定義・カスタマイズできる。

…というのはパラメーターなしのプラグイン呼び出しだけ。
ほとんどのNotationはWikiNotation/定義に書かないといけない。
**どこでもWikiNotation [#v38163d2]
-検索キーワードで
計画に織り込み済み。
-ページ名として
一行名がページ名なので。
動的なWikiNotationが問題。ページ名が動的に変わっては不便。
[[:t/?]]
-ページ名変更時のページ名として
ページ名変更UIによる。
[[:t/?]]


**特別なNotation [#l68ebc5d]
プラグインではないもの。特別扱いする必要のあるもの。
-リンク
検索関連で特別扱い?
-埋め込み(埋め込みリンク)
埋め込み解消後のページをNotation解析対象にするので。
Notationを埋め込みで実装するので?
**種別、影響範囲 [#q1f49686]
WikiCreoleの実装にも適用。
影響範囲の小さい順に行修飾、文字修飾、段落…。
影響範囲が重なっている部分では、範囲の小さいWikiNotationが優先される。

以下、影響範囲の小さい順(優先度の高い順)
+行修飾、ライン
改行間の全てに影響。
行頭に書く。行頭を含むNotation。1行にしか影響しないのは行頭に書くものなので。書き方の問題。
 **見出し
+行修飾(連結)
行頭。で次の行も同じNotationならまとまる。というよりも前の行が同じなら連結。(もし衝突があったとしても)前の行の属性が優先されるので。
 -リスト
 -リスト
+文字修飾、インライン
どこからでも開始できる。
改行を越えて影響するため、行修飾よりも広範囲。
 //斜体//
+段落修飾、パラグラフ
空行(連続改行)間で有効。
空行後に書く。というか、空行が無くてもこのNotationからを段落とみなす。
少なくとも行頭に書く必要あり。このNotationだけで1行。というか改行を含むNotation。
 >>
 引用(brockquote)
末尾を<<で終わらせるようにすれば段落を越えられるが…→連結するので、越えなくていい。書くときに手間がかかるが閲覧時の見た目は一緒。影響範囲が分かりやすくなる。
斜体などの段落版があってもいい。
+段落修飾(連結)
段落修飾は全て連結可能にしていいはず。ゆえに段落修飾はどれも連結する。
+ページ
1ページ全体に影響。なので、どこに書いてもいいが専用欄を設けてもいい。
ページ冒頭か末尾に書くのが簡単?

----------------------------------------

行頭後・空行後に書くものは改行処理前に解釈。それ以外は改行処理をした上で解釈。ただ空行は残すので空行後の物は改行処理の後でもいい。
''改行→<br/>''をする設定でもしない設定でも、文字修飾は改行を越える。空行も越えられるが…→WikiCreoleに合わせて越えないようにする。影響範囲が分かりやすい。



*設計 [#q2d61706]

**WikiNotationが含むもの [#mef1470f]
-WikiNotation
入れ子。
-プラグイン呼び出し
--プラグイン名と入力するデータ列
-プラグイン呼び出し以外のマークアップ
もしあれば。
(これも結局プラグインとして扱うので、結局プラグインと同じ)