良くこんなんで誰も文句言わないな、Textile

だんだん腹立ってきた。

どれがマスタのスペックなのかがわからないのがまず問題。これ:

 1 h2. A definition list
 2 
 3 ;(class#id) Term 1
 4 : Def 1
 5 : Def 2
 6 : Def 3
 7 ;; Center
 8 ;; NATO(Why Em Cee Ayy)
 9 :: Subdef 1
10 :: Subdef 2
11 ;;; SubSub Term
12 ::: SubSub Def 1
13 ::: SubSub Def 2
14 ::: Subsub Def 3
15 With newline
16 ::: Subsub Def 4
17 :: Subdef 3
18 : DEF 4
19 ; Term 2
20 : Another def
21 : And another
22 : One more
23 :: A def without a term
24 :: More defness
25 ; Third term for good measure
26 : My definition of a boombastic jazz
27 
28 ###. Here's a comment.

python-textile はヘッダの言う通りの A definition list として認識されるが、こんな spec、どこにも書かれてない。RedCloth のデモでも当然認識されない。この仕様は誰の、なんだ。

「spec」と称する場所が何箇所にもある。その中でも「redcloth の spec」として「雰囲気的には」信頼出来そうなのは どうやらこれ。が、ここにもエンドユーザレベルで参照可能な spec から全く読み取れないものが満載である。こんな仕様、読み取れないぞ:

 1 ---
 2 name: with attributes that apply to the whole list
 3 in: |-
 4   (class#id)# one
 5   # two
 6   # three
 7 html: |-
 8   <ol class="class" id="id">
 9   	<li>one</li>
10   	<li>two</li>
11   	<li>three</li>
12   </ol>
13 ---

まずそもそもリストアイテムの個々にも attribute 自由自在なこともユーザ向けリファレンスからは読み取れやしないんだけど、「全体につける」「アイテムにつける」両方が可能だ、なんてことももちろん、ここ、でしか読み取れない。一体誰がこんなの見ながら書くかね? (ほかにもあったのだが、あまりに乱立 spec で完全に迷子になってて、どこで見たのかわからなくなってて指摘出来ない。「===」「```」「###」に関するものなんだけど。)

そして python-textile には驚くほど初歩的なバグがあった。

ちょっとこんなんではまともな Pygments lexer は書けんわ。実は今まで python-textile のテストケースと RedCloth のエンドユーザ向けリファレンスをベースにやってたんだけど、どうもこれだと破綻しそう。これをベースに考え直した方が良さそうだ。そして python-textile が扱える / 扱えない、をベースに考えちゃダメだわ。むしろ Try-RedCloth の方をあてにした方が良さそうだ。

Pygments lexer の「重めの肩慣らし」には結構面白いネタではあるんだけどなぁ。正規表現の「先読みアサーション (lookahead assertion) 」とか「肯定後読みアサーション (positive lookbehind assertion) 」あたりを多用しないと書けないのでとにかく頭使うし、「re.U」なんて滅多にお目にかからないものまで使ったりもして。けどこんだけ荒れてると、さすがに萎えるよ…。












「蛇足的」に腹が立つのが、この文化のひとたち、「構造化マークアップ」の意味をあんまし理解してないんじゃないかしら、ってとこ。リファレンスの見出しレベルが不自然で、読むの疲れてしょうがない。同じく RSpec ファイル(YAML) の分割もこれに従って(またの名を「輪をかけて」)ちょっと頭おかしい。

まぁ…文句言いつつも多分完成させるけどね。「練習になる」ことだけは確かだしさ。けど間違いなくかなり割り切ったものにすると思う。最大公約数的にな。












2015-11-13 02:40追記
Textile の Pygments lexer はやめることにした。詳しくはこれ参照