JavaScriptã§ãã¢ããã¥ã¡ã³ãã使ãã©ã¤ãã©ãªãä½ã£ãã
JavaScriptã§ãã¢ããã¥ã¡ã³ãã使ãã©ã¤ãã©ãªãä½ãã¾ããã
heredoc.js
ãã¹ã
å¤é¨ãã¡ã¤ã«ãµã³ãã«
使ãæ¹
scriptã¿ã°å ã«ç´æ¥æ¸ãè¾¼ã使ãæ¹(ã¤ã³ã©ã¤ã³ã¢ã¼ã)ã¨ãå¤é¨ãã¡ã¤ã«ãèªã¿è¾¼ãã§ã³ã¼ã«ããã¯ãå®è¡ãã使ãæ¹ãããã¾ãã
ã¤ã³ã©ã¤ã³ã¢ã¼ã
<script src="heredoc.js"> # ããã¯scriptã¨ãã¦è§£éããã¾ããã str1 =<<EOT è¤æ°è¡ã®æååã§ãã ä¸ã®è¡ã§ãããã§ããstr1ã¯ã°ãã¼ãã«ã«ãªãã¾ãã EOT obj.property_name = <<komoji_de_ok ããããã£ãé åã«ãæ¸ãè¾¼ãã¾ãã komoji_de_ok obj[0] =<<"END_OF_TEMPLATE" <a href="#{uri}">#{label}<\/a> END_OF_TEMPLATE </script>
å¤é¨ãã¡ã¤ã«èªã¿è¾¼ã¿
<script type="text/javascript" src="heredoc.js"></script> <script type="text/javascript"> var callback = function(values) { alert(values.str1); } Heredoc.load("./templates.txt", callback); </script>
å¤é¨ãã¡ã¤ã«ã®è¨æ³ã¯ã¤ã³ã©ã¤ã³ã®å ´åã¨åãã§ãããä¸è¨ã®ETAGOã®ã¨ã¹ã±ã¼ããä¸è¦ã«ãªãã¾ãã
ã¤ã³ã©ã¤ã³ã¢ã¼ãã®å¶é
ãã¢ããã¥ã¡ã³ããscriptã¿ã°å ã«æ¸ãå ´åãHTMLã®ä»æ§ã«ããETAGO(</)ãæååå ã«æ¸ãã¾ããã以ä¸ã®ããã«ããã¯ã¹ã©ãã·ã¥ã§ã¨ã¹ã±ã¼ããã¦ãã ããã
template =<<"EOT" <a href="#{uri}">#{label}<\/a> EOT
ãã®å¶éããããããHTMLãã³ãã¬ã¼ãã«ä½¿ãå ´åã¯å¤é¨ãã¡ã¤ã«ãèªã¿è¾¼ãæ¹ã便å©ã§ããå¤é¨ãã¡ã¤ã«ã«ã¯ãETAGOã®å¶éã¯ããã¾ãããã¨ã¹ã±ã¼ããå®è¡ããã¾ããã
ããã«ã¯ã©ã¼ãã§Templateãä½æ
ãã¢ããã¥ã¡ã³ãã®çµç«¯æåå(EOT)ãããã«ã¯ã©ã¼ãã§å²ãã¨ã
template =<<"EOT" <a href="#{uri}">#{label}</a> EOT
ããã©ã«ãã®å®è£ ã§ã¯ä»¥ä¸ã®create_templateãå¼ã³åºãã¾ãã
Heredoc.create_template = function(src) { if (Template) { return new Template(src); } return src; }
Templateãå®ç¾©ããã¦ããå ´åã¯Templateãªãã¸ã§ã¯ããä½æããããã§ãªãå ´åã¯æ®éã«æååãè¿ãã¾ãã
prototype.jsã®Templateã使ãæã«ããã«ã¯ã©ã¼ãè¨æ³ã便å©ã§ããTemplateã¯ã
$("foo").innerHTML = template.evaluate({uri:"/index.html", label:"abc"})
ã®ããã«ãã¦ä½¿ãã¾ãã
prototype.jsã«ä¾åããããªãå ´åã¯ãä¸è¨ã®functionãæ¶ããªãæ¸ãæãããªããã¦ãã ãã(Templateãå®ç¾©ããã¦ããªããã°ãã®ã¾ã¾ã§ã大ä¸å¤«ã§ã)ã
ã¤ã³ã©ã¤ã³ã¢ã¼ãã使ããããªãå ´å
ã¤ã³ã©ã¤ã³ã®èªã¿è¾¼ã¿ãå«ãªå ´åã¯ãheredoc.jsæ«å°¾ã®
Heredoc.parseInline();
ãæ¶ãã¦ãã ããã
ã§ãé度ã«ã¯ã»ã¨ãã©å½±é¿ãªãããã§ããã
確èªç°å¢
- IE6
- IE7
- Firefox2
- Opera9
Safari2ã¨Safari3ãæªç¢ºèªã§ãããåã®ãã¼ã¸ã§ã³ãåãã¦ããã®ã§ãã¶ãåãã¨æãã¾ãã
åèã«ããè¨äº
- OreScript時代の幕開け - yukobaのブログ
- JS オレオレ言語ブーム - IT戦記
- とてもシンプルに自分自身が属する script 要素を取得 - IT戦記
- オレオレ言語 neko mimi Fu**♥ - m2
- オレオレ言語って言語拡張にも使えるかもね - m2
- はてなブックマーク - http://pinboard.in/u:too
- ヒアドキュメント、IE専用、コメント - oct inaodu
- ヒアドキュメント、E4X - oct inaodu
- 風柳亭: JavaScript用ヒアドキュメントライブラリを試作
- JavaScriptでヒアドキュメント - ぼくはまちちゃん!(Hatena)
- 404 Blog Not Found:javascript - HereDocよりInterpolation