私は現在、コードジェネレーターを構築しています。これは、使用する言語に関係なく、テンプレートや翻訳を記述したときにボイラープレートを生成することを目的としています。
Rubyの正規表現に問題があります。正規表現はとの間の任意のものを選択することを目的として{{{
いる}}}
ため、必要に応じて関数を生成できます。
私の正規表現は現在:
/\{\{\{(([a-zA-Z]|\s)+)\}\}\}/m
私のテストデータセットは次のとおりです。
{{{Demande aaa}}} => {{{tagadatsouintsouin tutu}}}
結果は次のとおりです。
[["Demande aaa", "a"], ["tagadatsouintsouin tutu", "u"]]
正規表現が最後の文字を2回選択するたび。それは私が望んでいることではありません、私はこのようなものがもっと必要です:
/\{\{\{((\w|\W)+)\}\}\}/m
しかし、これにも欠陥があり、結果は次のとおりです。
[["Demande aaa}}} => {{{tagadatsouintsouin tutu", "u"]]
一方、私は取得したい:
[["Demande aaa"],["tagadatsouintsouin tutu"]]
これらの正規表現を修正するにはどうすればよいですか?2セットの区切り文字を使用できますが、何も教えてくれません。
編集 :
すべての正規表現が私のデータサンプルに対して実行されるため、すべてのポイントが得られます。
正規表現はやり過ぎかもしれません、そしておそらく私の目的のためにはやり過ぎです。だから私は2つの質問があります。
まず、正規表現はまったく同じインデントを維持しますか?これにより、関数全体を処理できるはずです。
第二に、そのタスクに適したものはありますか?
このツールの目的の詳細な説明。php-symfonyでボイラープレートコードを書くのは退屈です。だから私はテンプレートに従ってこれを生成したいと思います。
私の意図は、この方法でいくつかのビュー、いくつかのコントローラー、さらにはモデルの一部を構築することです。
実用的な例:私のモデルでは、オブジェクトの属性のタイプに応じていくつかの関数を生成したいと思います。たとえば、お金を正しく表示する機能があります。したがって、属性に従ってcorect関数を作成し、m出力ファイル内に配置する必要があります。
したがって、それ自体が翻訳を必要とするいくつかの翻訳があります。
したがって、架空の例:
{{{euro}}} => {{{ function getMyAttributeEuro()
{
return formating($this->get[[MyAttribute]]);
} }}}
翻訳をストックするために、次のような正規表現を使用する必要があります
少し賢いものを作りたいので、基本的なコードのほとんどをバグなしで作成できます。だから私は面白いコードに取り組むことができます。