[#48044] Re: ruby 1.9.2とRails3 へのアップグレード — "Endo Akira" <endo4917@...>

アスカルさん

12 messages 2011/05/04
[#48045] Re: ruby 1.9.2とRails3 へのアップグレード — "Y. NOBUOKA" <nobuoka@...> 2011/05/04

アスカルさん

[#48062] 小数点つき時刻情報とTime#parse — Mitsuo KASAHARA <m.kasahara13@...>

笠原ともうします。

18 messages 2011/05/09
[#48068] Re: 小数点つき時刻情報とTime#parse — Tanaka Akira <akr@...> 2011/05/09

2011年5月9日10:29 Mitsuo KASAHARA <m.kasahara13@gmail.com>:

[#48070] Re: 小数点つき時刻情報とTime#parse — EGUCHI Osamu <eguchi@...> 2011/05/09

えぐち@エスアンドイーです

[#48072] Re: 小数点つき時刻情報とTime#parse — Tanaka Akira <akr@...> 2011/05/09

2011年5月9日13:43 EGUCHI Osamu <eguchi@sandeinc.com>:

[#48092] 後継者募集 — MoonWolf <moonwolf@...>

MoonWolfです。

22 messages 2011/05/22
[#48095] Re: 後継者募集 — Youhei SASAKI <uwabami@...> 2011/05/23

MoonWolf 様: 佐々木と申します.

[#48096] Re: 後継者募集 — MoonWolf <moonwolf@...> 2011/05/23

MoonWolfです。

[ruby-list:48093] eRuby文法の基礎

From: MoonWolf <moonwolf@...>
Date: 2011-05-22 18:00:39 UTC
List: ruby-list #48093
MoonWolfです。

もうあまりRubyに深入りするつもりはなかったのですが、思いついてしまって
結果も出たので発表します。

eRuby文法の基本的なルールについて、ちょっと考えてみました。
これであっていると思うので実装したeRuby.rbを添付します。

テスト入力と出力を書きます。
・都合上、改行コードのない入力をテストしてませんが、たぶん大丈夫です。
・正規表現を使うので文字コードに少し依存します。
・printメソッドの定義や、文末のセミコロンは省略しています。
・^Dは入力終了を意味します。^Dより前が入力、後が出力です。
--------------------------------------------------
$ ruby eRuby.rb
123
^D
print("123\n")
--------------------------------------------------
$ ruby eRuby.rb
abc <%="def"%> ghi
^D
print("abc ")
print("def")
print(" ghi\n")
--------------------------------------------------
$ ruby eRuby.rb
result: <%=func(param1,param2)%>
^D
print("result: ")
print(func(param1,param2))
print("\n")
--------------------------------------------------
$ ruby eRuby.rb
abc<% code %>def
^D
print("abc")
 code
print("def\n")
--------------------------------------------------

結論:
 eRubyの定義は50行程度で書ける。

解説:
・<%=〜%>と<%〜%>しか定義らしいものは無い。
・eRuby文法はテキストを出力するRubyスクリプトの別表現でしかない。
・eRubyソースの改行の意味は特にない。解釈するのはRuby処理系の問題
・インデントの削除や改行の削除などのトリム動作はeRubyの定義にはない。
・エスケープというものがない。
・コメントの解釈も処理系の解釈に依存する。
・文法として間違ったRubyコードが入ってもコンパイルはできるが実行できない。

eRuby処理系の実装者への助言:
・この定義だけで実用的で万能なテンプレートを書くのは困難です。
・最低限エスケープについての文法の拡張が必要でしょう。
・コメントアウト機能があったほうがいい。
・出力を全く行わないeRubyスクリプトも存在する。
・空のeRubyソースはコードも出力されず、まったく処理を行わない。

最後に:
これはeruby,ERb,ErubisといったeRuby処理系が間違っているというための文章ではありません。
eRubyの定義が少なすぎるからeRuby2とでもいうべきものを新しく定義したほうがいいのではないか、
ということに気がついたよ、というだけです。

--
MoonWolf <moonwolf@moonwolf.com>

Attachments (1)

eRuby.rb (896 Bytes, application/x-sh)

In This Thread

Prev Next