タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

xslateに関するYAAのブックマーク (18)

  • Template Engine Nightで「Xslate振り返り」をしました - Islands in the byte stream (legacy)

    このあたりで一度まとめておこうと思ったのでいい機会でした。@moznionさん、ありがとうございました。 なお、スライド中の「arity」は、この直前のトークで「ASTのnodeの種類を表すのにarityという単語を使っているのは意味が違うのではないか」と質問されたので急遽いれたものです。これは、『ビューティフル・コード』でDouglas Crockfordが演算子優先順位構文解析法によってJavaScriptのparserを実装しており、その中でtokenの種類を表すのにarityという単語を使っていたからなのでした。Xslateはそのparserをもとにしているのでarityという言葉を使っています。 ビューティフルコード (THEORY/IN/PRACTICE) 作者: Brian Kernighan,Jon Bentley,まつもとゆきひろ,Andy Oram,Greg Wilso

    Template Engine Nightで「Xslate振り返り」をしました - Islands in the byte stream (legacy)
    YAA
    YAA 2014/11/28
  • Xslate 3.0.0 released! - Islands in the byte stream

    This is an important release because it could break the existing code. https://metacpan.org/release/GFUJI/Text-Xslate-3.0.0 Includes a bug fix that has changed behavior: if you use a multi-byte string literal for a hash key like $hash["こんにちは"], the key was not dealt as a text string, but as a binary (byte) string. Now the behavior is fixed so "こんにちは" is a text string unless you specify input_layer

    Xslate 3.0.0 released! - Islands in the byte stream
    YAA
    YAA 2013/10/18
  • Re: Text::Xslate::Bridge::FillInForm::Lite - tokuhirom's blog

    http://blog.vitamin11.org/2012/09/released-textxslatebridgefillinformlite.html こういう単機能なラッパーモジュールをつくらなくていいようにしたいね、という話が Xslate の開発当初からあって(というか俺がいってて)、こういうのがでてくるのは申しわけないなあ、とおもった(書いた人が残念なのではなく、そういうのを書きたいとおもわせるにいたった開発コミュニティが残念です)。 TT はやたらラッパーモジュールであふれていて、だいぶ馬鹿馬鹿しい状況になっていたので、それを再現したくはなかったのです。Template::Plugin::* ほんとやたら数あるけど、Xslate の場合はそれがなくていいように module option がつかえるようになっているわけですナ。 という前提があった上で、汎用的につかえる解決策

  • Xslateのキャッシュ更新メカニズムの変更 - Islands in the byte stream (legacy)

    1.5015までのXslateのキャッシュ更新メカニズムでは問題があると報告されたため、1.5016で修正しました。 cache => 1 のとき、従来は render() ごとにテンプレートのキャッシュファイルのmtimeとテンプレートファイルのmtimeを比較してキャッシュの更新が必要かどうかをチェックしていたのでした。しかし、これでは以下の様なシナリオの元でキャッシュ更新ミスが発生しうるのでした*1。 foo.tx のmtimeが11:00とする 12:00 に foo.tx を render() する。このときcacheの mtime は 12:00 となる foo.tx を更新し、foo.txのmtimeが 12:00 になる foo.tx を render() すると、cacheはtemplate fileより古くないため、cacheを使う 1.5016では、キャッシュのmti

    Xslateのキャッシュ更新メカニズムの変更 - Islands in the byte stream (legacy)
  • Xslate 1.5008 released - Islands in the byte stream (legacy)

    異常系の振る舞いを少し変えました。 https://metacpan.org/release/Text-Xslate Xslateでは、render()へ渡すテンプレートパラメータや登録関数からの戻り値は必ずEncodeモジュールでデコードしたテキスト文字列であるべきです。しかし、デコードしてないバイト列を渡したときの挙動は未定義で、XS/PPあるいはcacheの有無によって挙動が異なっていました。特にcacheの有無で挙動が変わることがあるのが厄介で、特定の条件が重なるとリロードすると文字化けするという挙動を示すことがありました。 Xslateに限らず、Perlではスクリプト内のテキストの操作はデコードされたテキスト文字列で行うべきで、これを守らなければ文字化けを引き起こします。よって、Xslateでも、上記のようにデコードされていないバイト列を与えると文字化けが起きるのが、Perl的に

    Xslate 1.5008 released - Islands in the byte stream (legacy)
  • Re: モダンPerl連載第43回 - Islands in the byte stream (legacy)

    モダンPerlの世界へようこそ#43がXslateの話だと思ったらノイズ呼ばわりされたでござる、の巻。 著者であるid:charsbarさんの捕捉によれば以下のとおり モダンPerl連載第43回 - Charsbar::Note 「TTの代用品としての」Template::AlloyとText::Xslateについて簡単にまとめてみました。 ということですが、Catalystをビジネスに使うチームこそがPerlのスタンダードであり「周辺」はスタンダードを重んじるべきという論調には違和感を覚えました。 独自プロジェクトではなく家の改善にリソースを貸すべきという批判はたしかにMouseについては当てはまるのかもしれませんが、XslateはTemplate-Toolkitを代表とする既存のプロジェクトとは全く関係ない文脈で開始したプロジェクトです。TTプロジェクトに関わるという選択肢は考えもし

    Re: モダンPerl連載第43回 - Islands in the byte stream (legacy)
    YAA
    YAA 2011/07/25
  • 第43回 Text::Xslate:永続環境に特化したテンプレートエンジン | gihyo.jp

    TTの体を差し替える 前回はウェブ業界で標準的に使われているTemplate Toolkitをより安全に使うためのカスタマイズ方法をいくつか紹介しました。しばしば批判の対象となってきたエスケープの問題については、TTでも適切な拡張を施せば後発のモジュールと遜色ないか、それ以上に便利に使えることは確認できたかと思います。 ただし、エスケープの仕方ひとつとってもさまざまなやり方があったように、TTは、柔軟である代償として速度面ではかなりの不利を抱えています。 もっとも、不利といってもそれはいまの、しかもかなり規模の大きな現場の視点で見たときの話で、数年前、おもなライバルがHTML::Mason(と、機能面で大きな差があるHTML::Template)だった時代にはTTも十分に高速といえましたし[1]⁠、中小規模のサイトではいまでもTTで十分なレスポンスは得られます。 また、かれこれ10年近く

    第43回 Text::Xslate:永続環境に特化したテンプレートエンジン | gihyo.jp
  • Xslate 1.3000 リリースメモ - Islands in the byte stream (legacy)

    Xslate 1.3000でhtml_builder()に非互換な変更を行いました。 html_builder()で作成したフィルタは、いままではunmark_raw()で型情報を落とした引数を受け取っていました。しかし1.3000からは引数をそのまま受け取るようになります。これによりフィルタが全ての責任を負えるようになりましたが、非互換な変更なので挙動が変わるフィルタも出てくる可能性があります。ご注意ください。 また未修正の問題も幾つかあります。いずれ対応するつもりですが、修正するまではご注意願います。 コメント終端子としてセミコロン(;)を使っているため、コメント内に& < >などが書けません。 TTerseにおいて、変数名として「x」が使えたり使えなかったりします。これはxが演算子であるためです。

    Xslate 1.3000 リリースメモ - Islands in the byte stream (legacy)
  • Xslate 1.1000 released! - Islands in the byte stream (legacy)

    リリースしました。中間コードのバージョンが上がっているため、このバージョンを実行すると今まで使用していたテンプレートのキャッシュが破棄されます。 http://xslate.org/ 主な変更点は以下の2つです。 ループ制御文(lastとnext)が追加された for-else構文がサポートされた ループ制御文はPerlのものと同じですが、ラベルはサポートしていません。 例: #!perl -w use strict; use Text::Xslate; my $tx = Text::Xslate->new(); print $tx->render_string(<<'TX'); : for ['foo', 'bar', 'baz'] -> $item { : next if $item == 'bar'; * <: $item :> : } TX __END__ 実行結果: * foo

    Xslate 1.1000 released! - Islands in the byte stream (legacy)
    YAA
    YAA 2011/03/28
  • Xslate 1.0006 released! - Islands in the byte stream (legacy)

    リリースしました。 1.0001から1.0006の間には後方互換性を破壊する変更はなく、バグフィクスと小さな機能追加のみです。SEGVを起こすバグや非常に分かりにくいエラーメッセージを吐くバグも修正されているのでアップデートをお勧めします。 また、1.0006から追加されたText::Xslate->print()メソッドを使うと、エラーメッセージをテンプレート内に出力することができます。なお、このprint()はテンプレート内部の出力同様、スマートエスケープが適用されます。 #!perl -w use strict; use Text::Xslate; my %vpath = ( hello => 'Hello, <: $lang :> world!' . "\n", ); my $tx = Text::Xslate->new( cache => 0, path => \%vpath,

    Xslate 1.0006 released! - Islands in the byte stream (legacy)
  • Re: Chromeのスタートページで自分のはてブをインクリメンタル検索する拡張(ただしPerlで書いた) - Islands in the byte stream (legacy)

    http://d.hatena.ne.jp/Cside/20110214/p1 こんなに簡単にChrome拡張が作れるとは!と感動する一方で、Xslateの使い方がいまいちだったので直してみました。pull-reqだけでいいかとも思ったのですが、これらの修正はすべて何度か見たことのあるFAQ的なものなので、エントリにすることにしました。 具体的には、 Xslateインスタンスをリクエスト毎に作るのは非効率なので、最初に作って使いまわす render_string()は非常に遅いのでテストやデバッグ以外の用途で使うべきではない 今回のケースでは普通にファイル名を渡すだけでよい スクリプト中にテンプレートを書きたい場合は、pathオプションにハッシュリファレンスを渡すとよい Xslateは基的にテキスト文字列(decodeされたもの)を扱うので、functionはテキスト文字列を受け取って文

    Re: Chromeのスタートページで自分のはてブをインクリメンタル検索する拡張(ただしPerlで書いた) - Islands in the byte stream (legacy)
  • gist:831204

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    gist:831204
  • Text::Xslateが素敵すぎる(Markdown編) - D-6 [相変わらず根無し]

    Text::Xslateが素敵すぎる(Markdown編) 2011年2月17日 10:13 D | ブログ記事のURL | コメント(0) | トラックバック(0) おいおい、Text::Xslate素敵すぎるだろ。 今日Markdownを使いたいと思ってちょっと考えたら、これだけで終了した: use strict; use Text::Xslate; my $xslate = Text::Xslate->new( .... module => [ 'Text::Markdown' => [ 'markdown' ] ] ); print $xslate->render_string( <<EOT, { text => $some_markdown_text ); [% text | markdown | mark_raw %] EOT 素敵!gfx 先生になら抱かれてもいい。 俺もXS

  • Why Xslate is so Fast - Islands in the byte stream (legacy)

    (There is the Japanese version bellow) There are reasons why Xslate so fast, so this article explains them, which will be added to the Xslate document. Taking precompiling style Template engines which precompile templates are always faster than line-by-line interpreters. Almost all the engines implemented in scripting languages (e.g. Template-Toolkit or Text::MicroTemplate) takes precompiling styl

    Why Xslate is so Fast - Islands in the byte stream (legacy)
    YAA
    YAA 2011/02/09
  • 第5回 Xslate 次世代テンプレートエンジン(3) | gihyo.jp

    TTerse Template Toolkit互換の構文 KolonはXslateの機能を引き出すのに最適な構文です。しかしXslateでは、TT2からの移行を容易にするために、TT2のサブセットであるTTerseという構文も用意しています。 TTerseの使い方 TTerseを使うには、Text::Xslate->new()メソッドのsyntaxオプションに「TTerse」を渡します。別のディストリビューションとして配布しているText::Xslate::Bridge::TT2Likeを使うと、TT2組み込みのメソッドやフィルタを使えるようにもなります(リスト17⁠)⁠。 リスト17 TTerseの使い方(tterse.pl) use Text::Xslate; my $tx = Text::Xslate->new( syntax => 'TTerse', module => ['Tex

    第5回 Xslate 次世代テンプレートエンジン(3) | gihyo.jp
  • 第5回 Xslate 次世代テンプレートエンジン(2) | gihyo.jp

    ※1)Xslateではテンプレートのコンパイル結果をキャッシュできる ※2)デフォルトは$ENV{HOME}/.xslate_cacheだが、$ENV{HOME}が書き込み可能でなければほかのディレクトリも試す ※3) テンプレートの構文によってデフォルトは変わる。これらはデフォルト構文Kolonのデフォルト値 リスト8 オプションを指定する(hello_xslate2.pl) use strict; use Text::Xslate; my %vpath = ( header => "- - - - - - - - - - -\n", footer => "- - - - - - - - - - -\n", hello => "Hello, Xslate world!\n", ); my $tx = Text::Xslate->new( path => \%vpath, header =

    第5回 Xslate 次世代テンプレートエンジン(2) | gihyo.jp
  • Perl Hackers Hub:第5回 Xslate 次世代テンプレートエンジン(1)|gihyo.jp … 技術評論社

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は藤吾郎さんで、テーマはXslateです。 はじめに PerlとWebアプリケーションとの相性の良さは周知のとおりです。そして、Web開発にはテンプレートエンジンが欠かせません。テンプレートエンジンは、プレゼンテーションとロジックを分離し、デザイナとプログラマの分業を可能にし、MVC(Model-View-Controller)のV(View)を担う重要な要素です。 今回は、そんなテンプレートエンジンンの一つであり、筆者が開発しているXslateを紹介します。Xslateは2010年4月に開発を始めた新しいモジュールですが、速度・安定性・機能ともに高い水準になってきました。また、牧大輔氏や松野徳大氏をはじめとしたShibuya.pmの面々に多くのアドバイスをいただき、既存のテンプレートエンジンを置き換えられるくらい実用的に

    Perl Hackers Hub:第5回 Xslate 次世代テンプレートエンジン(1)|gihyo.jp … 技術評論社
  • Kolonでかこう - Articles Advent Calendar 2010 Casual

    nihenです。こんにちは。 今年もブクマ数ビリを目指したいとおもいます! Perl界隈で今年はText::Xslateというテンプレートエンジンが流行っています。 しかしこのXslateで現在主流に使われているSyntaxはTTerse*1であり、XslateネィティブともいえるKolonはまだあまり使われていないというのが現状のようです。 というわけで今回はKolonの使い方の基を紹介します。 Perlコード側 use Text::Xslate; use Hash::MultiValue; my $tx = Text::Xslate->new(); my $var = { foo => 'xslate', bar => { baz => '111', bazbaz => '112', }, baz => [5, 6, 7], hoge => Hash::MultiValue->new

    Kolonでかこう - Articles Advent Calendar 2010 Casual
  • 1