Momota.pw別館

Yuki_noeの進捗状況

Yuki_noeの記法とパーサについて

なんというか、そういうことです。


_global-header
#= Momota.pw^+^ _global-title.title
#: Something new about web and others.
  ##> a[#]: 記事のタイトル
            -title: 属性はこういうふうに指定できます。
            -data:
              -title: もちろん、こういうふうにすることもできます。
      -# ふと思ったんだけどでかいリンクを表現するのに
         タグ表記使うのってちょっと変な気がしませんか?
         ここは記号で表記すべき!
         そう思ったら自分でそういう記号を定義しましょう。
         そういうことができるようにYuki_noeは設計されています。
    : time[2015-04-23]: yyyy.mm.dd
      -# タグにはデフォルトの属性があるものが存在するから
         datetime=とか書かなくていいし、その時の動作は関数だから中身も気にしなくていい
         そしてコメントは複数行使える
  こういう感じに書くことができる。
  普通に文章を書くよりもいいのではないかと思い始めた。
  なんかやり方はHamlの色々をmarkdownにした後に属性のあたりをいじくったみたいになっていると思う
  ### こういうふうにインデントも他の中身もなしで見出しを定義することもできます
  そして内容もこういうふうにすることができます。
  また、閉じることもできます。
  あ、定義リストそれなりに使えます。
  + 百田變化
  : 特に本名を晒すことなく色々ネットで「するよ!」って言っておきながらなかなかしない人。
    もちろんこのYuki_noeも開発途中。
    [ろすさん](@lost_and_found)に出会ったときものすごく嬉しがっていた。
  1. 数字付きリストが使えます
  2. これを再現するためにASCII文字からアルファベットだけ取り除くという動作をしています。
     ゆくゆくはきちんと記法だけを補足したいと思っている
  ###
  - 10.times do |i|
    Rubyを埋め込むことで繰り返し処理(今で#{i}回目)をすることもできます。
  それだけでなく、HTMLもHamlより簡潔に、そしてインデントだけで表記することができます。
  ul:
    - 7.times do |i|
      li: a[#]: Momota#{i}
  コードを埋め込むこともできます。
  :code[Ruby]
    class Yuki_noe
      def self.load_file file_name
        File.open f_name, 'r:utf-8' do |f|
      end
    end
  また、リストなどを表記した時のリスト全体のidはそのままでは付けられませんので、
  _list:
    + .item: aaa
    + .item: bbb
    + .item: ccc
  というように空の物を使います。
  したがって、タグ名を省略した時にdivになることは保証されません。
  また、
  _list
  + aaa .item
  + bbb .item
  + ccc .item
  という風に書くこともできます。まとまりの最初の方とか行末につっこめるという。
$ © 2015 Momota Henka.
  -# フッタ

見りゃだいたい分かるように作ってます。

しかし、これ等幅フォントが使えるエディタがないと使えない上に読めない仕様なのですが、イマノジダイトウハバフォントクライアルヨネー

なかったらボクのやってきたことが全て無駄になるのでまあそういうことだと願い続けるのですが、

  • 記号を行の頭に書いてスペースを入れるとそういう風になる
  • 複数行いれたければ次の行にはスペースをその分入れる
  • 範囲指定として行頭に同じ記号を書く事がある

以上。

まあ普通の記法といえばこれだけなんですよね。

あとは

  • 関数名[引数]::関数名[引数]を使って関数を呼べるということ
  • -Rubyを使える

だけだったり。

これだけのことなので実装はそう難しくないはずなのですが、一行目から一回も戻らずに食べていくとするとものすごく面倒くさい。

戻りゃいいじゃないかと思うかもしれないのですが、これするとそれはそれで大量の変数とか色々必要になるんですねー

そして抽象構文木になおしてからHTMLにしようと思ったのですが、それはそれでおかしい。抽象構文木の集まりから関数を起動して、というところまで独自に定義できるようにすると怖いことになるので。

抽象構文木に直すくらいならHTMLにしてしまえばいいとの結論に至りました。

しかしその都度HTMLに直したりするとなると、ボクの作る思いパーサはどうせキャッシュを取らなければならないのに、大丈夫なのかという話になるんですね。


- 10.times do |i|
  + リスト#{i}

という感じでした時にli要素はいいのですがul要素をRubyのやつの外に置くか、Rubyを実行してから再度パースする必要がある。

これのどっちを取るのかという話で、キャッシュを取るとしたらパーサに何度も頼るわけにいかないしul要素をRubyの外に置くという話になるんですね

しかしこれ、記法を独自に書くときになるとユーザ側で独自に上の記法を支配しろという話になるので大変なんですね

まあそういうふうになるパーサをボクが書くことになるんですがどうしよう