エンジニア知識共有会発表資料 20090910
Upcoming SlideShare
Loading in...5
×
 

エンジニア知識共有会発表資料 20090910

on

  • 1,518 views

 

Statistics

Views

Total Views
1,518
Views on SlideShare
1,431
Embed Views
87

Actions

Likes
1
Downloads
0
Comments
0

4 Embeds 87

http://techknowledge.ngigroup.com 47
http://techknowledge.fractalist.jp 36
http://webcache.googleusercontent.com 3
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

エンジニア知識共有会発表資料 20090910 エンジニア知識共有会発表資料 20090910 Presentation Transcript

  • Template::Toolkit はすごい ( らしい ) 2009/09/10 masaki.kawamura
  • ■ Template::Toolkit ??
    • Perl 製のテンプレートエンジン Template のディスリビューション名  テンプレートツールキットと言われたり、 TT と略されたりする
    • テンプレートエンジンなので主にプログラムと HTML を分けて開発できるようにするもの
    • CPAN から install することができる ( 簡単! )
  • ■ テンプレートエンジンを使うと。。
      • #!/usr/bin/perl
      • print << &quot;DOC&quot;;
      • Content-type:text/html
      • <html>
      • <head>
      • <title> ぱーる </title>
      • </head>
      • <body>
      • DOC
      • my $a = &quot;TemplateToolkit!! &quot;;
      • print $a;
      • print << &quot;DOC&quot;;
      • </body>
      • </html>
      • DOC
    ・  example.pl :!perl nnn.pl Content-type:text/html <html> <head> <title> ぱーる </title> </head> <body> TemplateToolkit!! </body> </html> こうではなくて 実行 結果 View slide
        • #!/usr/bin/perl
        • use strict;
        • use Template;
        • my $content = 'TemplateToolkit!!';
        • my $tt = Template->new;
        • $tt->process('example.html',
        •             { char => $content } );
    <html> <head> <title> ぱーる </title> </head> <body> [% char %] </body> </html> ・  example.pl ・ example.html + 実行 <html> <head> <title> ぱーる </title> </head> <body> TemplateToolkit!! </body> </html> 結果 こんな感じでファイルを分けることが出来るので、 HTML がわかる人にテンプレの編集をしてもらう時に比較的さわりやすくなる。 View slide
    • ・ Template::Toolkit 以前に使っていたものが HTML::Template だったので以下のことが出来なかった。 (HTML::Template と TT しか触ったことはないですが )
    • ・ テンプレート側で IF 構文を使用した時、 0,1 の判定しか行なえなかった
    • ・ プログラム側から受取ったデータを表示するのみで、テンプレート側から引数を与えて処理することが出来なかった
    • ・ いちいち {TMPL_VAR name=..} と書くのがイヤ
    • という、諸々が
    ■ すごい ( と思った ) ところ {TMPL_IF name=hoge} hoge がある {TMPL_ELSE} hoge がない {/TMPL_IF} {TMPL_VAR name=data} // data の中身を表示するだけ
  • ■ こうなってます
    • テンプレでの IF 文
    • 受取った変数の値を評価出来るようになっている
    • ロジックに引数を渡して処理する
    • MACRO という呼び出し時に実行される処理のブロックを
    • 定義することができるものがあるので、これを使用して実現できる。
    [% IF hoge = ‘TemplateToolkit’ %] TemplateToolkit!! [% ELSE %] HokanoNanika [% END %] [% amacro(‘TemplateToolkit’) %]
  • [% MACRO amacro(var) BLOCK; IF var; var; ELSE ‘ Argument is nothing’; END %] ・ Amacro という MACRO を定義 [% amacro(‘Template’) %] ・ テンプレートで amacro を呼び出す こうすれば、 Template という文字列を amacro に与えて表示することができる。 MACRO は記述しておいても、呼び出さない限り何も処理をしない ( はず ) なので 無駄な処理が省ける。
  • ■ TT で他に出来ること
    • - 正規表現での評価 (search)
    • [% IF var.search('regex') %]
    •   match
    • [% END %]
    • - 文字の切り出し (substr)
    • [% var.substr(0,100) %]
    • 他にも以下を読めば使うかどうかは別として、
    •   色々出来ます。
    •   Template::Manual::VMethods
  •  まとめ
    • 最近新しいものを使ってみても、古いものを使ったことがないことがあるので、どこがすごいのやらわからないことが多い。
    • 若いって怖いなぁと思います。