JavaScriptにゃーん。これはねこの飼い主との思い出が詰まった投稿。画像は知人の飼い猫で、使用許可取ってない。経緯2011年11月にtornado.templateをJavaScriptに移植した。使えはするけど、細かい機能まで作りきれてなかった。今回の個人プロジェクトXで、JavaScriptで書かれたテンプレートエンジンが必要になったので、メンテして使えるようにした。前提の個人プロジェクトX詳細は割愛。Compilerは採用。テンプレートエンジンざっくりと整理。%}'});loader.load('page.html').generate();ソースはこれ。https://github.com/rokujyouhitoma/js-templateengine/blob/develop/src/template/template.js。テストコードやユーザーコードは個人プロジェクトX側に置き去り。開発も個人プロジェクト側で行った。テストコード必要になったら、最新はこのあたり。(将来リンク切れになってもしらね)個人プロジェクトXで使えればいい。(個人プロジェクトX以外では、むしろ既知の解決できていない不具合、問題点があるので使えない、使いたくない)。tornado.templateを元に、JavaScriptで再実装。テンプレート文法はコンパチではない。JavaScriptらしい文法にすべきところはJavaScriptらしくした。実装コード自体は、PythonとJavaScript異なるので、JavaScript側でPythonっぽい薄いコードを設けてる。ついでに個人プロジェクトX側でClosureCompiler使っているので、ClosureCompilerでコンパイルされる前提でアノテーションをできるかぎり。90%くらい)Tornado4.5時点のテンプレートエンジンとだいぶ同じ。v2で公開するのが妥当だろうと考えている。テンプレートエンジン内部コードを構築するの面倒だったのでeval使ってる。テンプレート構文が部分的にバグってる。具体的には{{this}}でブラウザだとglobalオブジェクトにアクセスできちゃったり{{XXX}}で任意のオブジェクトにアクセスできてしまう。自由な構文(内部的にはStatementBlockで評価するだけ)を許可してしまっている。個人的に使う限りは困らないところまではできた。Compiler最高。Pythonのwith構文相当を関数で提供は大したコードではなかったけど、面白かった。個人プロジェクトXではこんなだいそれたコードは複雑度が増すし要らなかったんや!実際に削減できたコード?そんなの数十行だけだ!!増えたコード??2000行近くだ!!満足感はある。後悔はしていない(ただし個人プロジェクトだから!、業務だったら...)。EuroPython2017開催。情報セキュリティ系のfeedsPythonのセキュリティ系ツール、コードメトリクス解析ツール私は、偶然、街中で知人と出会うことが多いようです。Educateのキャリアパス、バッジ月別アーカイブ参加グループプログラミングはてなブログをはじめよう!rokujyouhitomaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。