「記法/」で始まるページを作成
記法案。それと記法の実装案。
- -----------------------------------------------
- いろいろな記法
WikiCreole: List Of Wiki Markup
WikiMatrix - Compare them all
記法
目次 †
- -
記法定義は汎用記法のシンタックスシュガー。
- シンタックスシュガーは、記法のどの部分を汎用記法のどのパラメーターにするかを決める。
-
シンタックスシュガーは、汎用記法のどのパラメーターをどんな値にするかを決める。
関連 †
汎用記法は全ての要素を表現できる記法。要素クラス名をパラメーターとして受け取れる。
検索:記法
ToMarkdown()などを持つのはビルトイン要素。
プラグイン要素はそういった記法系に無い。汎用記法と、それにマッピングしたシンタックスシュガーでのみ表記できる。
記法周辺のタグ †
Array記法とは †
- -
プラグイン呼び出し記法のシンタックスシュガー。
呼び出すプラグインごとに定義。1つのプラグイン呼び出しについて複数記法を定義していい。
----
記法 †
記法は読むためのもの。書くためのものではない。
* ** ***
:i/記法定義は記法→要素クラス→記法 †
:Done/記法定義の方法 †
:i/ページの内容はコードと見なせる †
記法はコードのようなもの。実行結果がページの閲覧時に組み込まれる。
他の言語のコードを書くのならシンタックスハイライトとか自動リンクとか。コンテンツ扱い。実行のようなことはしないで。
&(...); #...
などのWiki特有の書き方のこと。
それと、これらの書き方で書かれたテキストのこと。
「マークダウン」などと同じ用途・目的。→キーワード:Markdown Google:Markdown
WikiTextもWikiFormatも同じ意味で使われていそう。
ここでは記法を含むテキストをWikiTextと言うことにしている。
Markdownの特徴 †
Google:Wiki-Notation
Google:Wiki-Format
Google:WikiText
Google:Wiki Formatted Text
実体はプラグインの呼び出し方(プラグインを呼び出したいときの書き方)。
→ X/Element/Notation[?]
思い付き †
Excel関数を参考に †
ページと見出しを、リンクする/されるの両方に †
ページ名を表す記法、見出しを表す記法を用意。
段落始めに書けばページ名や見出しを定義する。それ以外に書くと指定したページや見出しへのリンクになる。
タブでインデントしたい †
テキストエディターを使うとインデントしやすくなる。
見えない文字は無視したい †
使うとすれば記法を越えない程度に。
空白を取り除いても同じ記法になるように。
検索用クラスやめ †
「検索」に書かれているクラスを廃止。
Notationクラスで行う。
Notationの機能…
- 検索式→オブジェクトの単行表現
- ページのテキスト→オブジェクトの複数行表現
- オブジェクト同士を比較したときの適合度算出
具象クラスが同じ場合も先祖が共通の場合も使える。
先祖が共通の場合は適合度がやや下がる。
クラスメソッド。 - オブジェクト→テキスト(HTML)
…といったことができる。
プラグインは検索時の比較方法もメソッドとして持つ。 †
色とか。色プラグイン(色を示す表現を色オブジェクトに置き換えるプラグイン)色を示す記法プラグイン。
#FFF White
…などが
#FFC
などと近く(高い適合率)になるように。
ヘルプは初心者向けのみ †
詳細な説明なら定義ページを見ればいい。
変換ルールはページ内で定義 †
記法→内部形式(Element系オブジェクト)のルール
RegExp→Element系クラス名
…という形式で定義。
1ページに1クラス分の複数書式を定義。ページ名と対応するクラスはハードコーディング(変更不可能)で良い。
それらをまとめたページを作れば記法定義の一覧になる。
変換前/後が何であるか、何をどうするのかの違い。
いろいろな記法 †
- Markdown
いろんな記法が混ざってる。普段使いの文章をフォーマットするための記法。日常の文章から見出された記法。 - WikiCreole
各種Wikiの共通点。普段使いの文章と競合しないように選ばれてる。マークアップ言語。 - c2:TextFormattingRules
オリジナル。 - pukiwiki:整形ルール
PukiWikiの整形ルール。 - MediaWiki
メジャー。
WikiCreoleにも大きく影響してる。
- OwnNotation
Xの独自記法。
参考に †
WikiCreole: List Of Wiki Markup
WikiMatrix - Compare them all
Help:Cheatsheet - Wikipedia, the free encyclopedia
でも、Notationを単なる 正規表現→プラグイン名とパラメーター とすれば1ページにいくらでもまとめてもいいかも知れない。
例外がなければ。
記法/ †
Notation定義を参照するときのキーは?
特定ページ、または特定のページ以下にあるページ集合?
実装 †
埋め込み式ページ[?]を応用して実装。
記法を、「プラグイン呼び出し記法が書かれたページ」を埋め込むことで実現できる。
そうすれば記法→プラグイン呼び出しをページで定義・カスタマイズできる。
…というのはパラメーターなしのプラグイン呼び出しだけ。
ほとんどのNotationは記法/定義に書かないといけない。
色々な記法 †
- 単行テキスト
- 複数行テキスト
- メールアドレス
- URL
http:、https:、ftp:のほかtwitter:なども。 - 数値と計算式とフォーマット
金額とか。 - 日時と計算式
- 時間(日時×2)と計算式
- 選択・列挙型
文字列の列挙型、列挙されていない値は持てない。選択可能数1または任意個。 - ページ任意数
とフィルタリングルール。フィルタリングで特定のページだけを選択肢に。ユーザー限定など。
添付ファイル、添付イメージなどはページとして記述。
URL、ISBN、ASIN、電話番号、住所などを特別扱いに。
どこでも記法 †
- 検索キーワードで
計画に織り込み済み。 - ページ名として
一行名がページ名なので。
動的な記法が問題。ページ名が動的に変わっては不便。
:t/?[?] - ページ名変更時のページ名として
ページ名変更UIによる。
:t/?[?]
特別なNotation †
プラグインではないもの。特別扱いする必要のあるもの。
種別、影響範囲 †
WikiCreoleの実装にも適用。
影響範囲の小さい順に行修飾、文字修飾、段落…。
影響範囲が重なっている部分では、範囲の小さい記法が優先される。
以下、影響範囲の小さい順(優先度の高い順)
- 行修飾、ライン
改行間の全てに影響。
行頭に書く。行頭を含むNotation。1行にしか影響しないのは行頭に書くものなので。書き方の問題。**見出し
- 行修飾(連結)
行頭。で次の行も同じNotationならまとまる。というよりも前の行が同じなら連結。(もし衝突があったとしても)前の行の属性が優先されるので。-リスト -リスト
- 文字修飾、インライン
どこからでも開始できる。
改行を越えて影響するため、行修飾よりも広範囲。//斜体//
- 段落修飾、パラグラフ
空行(連続改行)間で有効。
空行後に書く。というか、空行が無くてもこのNotationからを段落とみなす。
少なくとも行頭に書く必要あり。このNotationだけで1行。というか改行を含むNotation。>> 引用(brockquote) <<
末尾を<<で終わらせるようにすれば段落(空行)を越えられるが…→連結するなら、越えなくていい。
>> ... <<で空行を越える記法はスクロール不要な長さなら影響範囲が分かりやすくなる。長い場合は段落ごとに>>を書いたほうが分かりやすい。
斜体などの段落版があってもいい。 段落修飾(連結)
段落修飾は全て連結可能にしていいはず。ゆえに段落修飾はどれも連結する。でも毎段落ごとにNotationが必要になるので、<<で終了させる形のほうが書くときの手間がかからない。→<<で閉じる?- ページ
1ページ全体に影響。なので、どこに書いてもいいが専用欄を設けてもいい。
ページ冒頭か末尾に書くのが簡単?
→ページ/属性にする
- -------------------------------------
行頭後・空行後に書くものは改行処理前に解釈。それ以外は改行処理をした上で解釈。ただ空行は残すので空行後の物は改行処理の後でもいい。
改行→<br/>をする設定でもしない設定でも、文字修飾は改行を越える。空行も越えられるが…→WikiCreoleに合わせて越えないようにする。影響範囲が分かりやすい。
曖昧な記法を解釈 †
書き手の意図を反映させるように。
記号の前後は必ず何らかの効果が現れるように。
**リスト
で、
…**太字**
のとき、
…**B**B**… → …<b>B</b>B**…
**B**… →<b>B</b>… または <li>B**…
**…**B**… → <li>…<b>B</b>…
**B**…**B**… →<b>B</b>…<b>B</b>… または <li>B<b>…</b>B**…
正しくは
****B** → <li><b>B</b>
ユーザーが入力した情報が失われてしまうのを防ぐため、余ったNotationは消さずに残す。
bとして解釈できる場合、行頭の**を2つの意味で捉える?
**B** →<li><b>B</b>
他のケースで使いにくく(結果を予想できなく)なってしまいそう。