{"id":21285610,"url":"https://github.com/takeyuweb/eter","last_synced_at":"2025-03-15T15:13:18.741Z","repository":{"id":6281865,"uuid":"7515912","full_name":"takeyuweb/eter","owner":"takeyuweb","description":"Extensible Template Engine for Ruby","archived":false,"fork":false,"pushed_at":"2013-01-10T09:33:29.000Z","size":116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T05:16:22.919Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"ptmt/react-native-macos","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/takeyuweb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-01-09T06:15:56.000Z","updated_at":"2014-07-09T05:21:02.000Z","dependencies_parsed_at":"2022-09-03T01:21:46.571Z","dependency_job_id":null,"html_url":"https://github.com/takeyuweb/eter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takeyuweb%2Feter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takeyuweb%2Feter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takeyuweb%2Feter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takeyuweb%2Feter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takeyuweb","download_url":"https://codeload.github.com/takeyuweb/eter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243746201,"owners_count":20341203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-21T11:21:27.160Z","updated_at":"2025-03-15T15:13:18.720Z","avatar_url":"https://github.com/takeyuweb.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EHTR - Extensible Template Engine for Ruby\n\nノンプログラマに優しい\n\n* HTMLタグの属性を使うのでDOM構造や表示が崩れない\n* テンプレートファイルへのプレゼンテーションロジックの混入を抑制\n\n拡張しやすい\n\n* 独自ハンドラをRubyの継承を使って簡単に追加できる\n\n## 例\n\n    \u003ch1 eter=\"var\" eter:name=\"title\"\u003eTITLE(DUMMY)\u003c/h1\u003e\n    \u003cdiv eter=\"var\" eter:name=\"content\"\u003e\u003c/div\u003e\n    \u003cul eter=\"loop\" eter:name=\"links\"\u003e\n        \u003cli\u003e\u003ca href=\"#dummy\" $href=\"__key__\" eter=\"var\" eter:name=\"__value__\"\u003eLINK\u003c/a\u003e\u003c/li\u003e\n    \u003c/ul\u003e\n\n    eter = Eter::Template.new(tmpl)\n    eter.output(title: 'Title',\n                content: 'Content',\n                links: {'http://www.google.com/' =\u003e 'Google',\n                        'http://www.yahoo.co.jp/' =\u003e 'Yahoo! JAPAN'})\n\n    \u003ch1\u003eTitle\u003c/h1\u003e\n    \u003cdiv\u003eContent\u003c/div\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"http://www.google.com/\"\u003eGoogle\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"http://www.yahoo.co.jp/\"\u003eYahoo! JAPAN\u003c/a\u003e\u003c/li\u003e\n    \u003c/ul\u003e\n\n## 独自ハンドラによる拡張\n\n独自ハンドラを作成することで、テンプレートファイル中のプレゼンテーションロジックへの埋め込みを減らし、デザイナーの負担を減らすことができます。\n独自ハンドラはRubyの継承を使って簡単に追加することができます。\n\n    \u003cdiv eter=\"var\" eter:name=\"no\" eter:value=\"1\"\u003e\u003c/div\u003e\n    \u003cdl eter=\"loop\" eter:name=\"items\"\u003e\n        \u003cdt\u003e\u003cspan class=\"no\"\u003e\u003ceter:var name=\"no\"\u003e\u003c/span\u003e:\u003cspan class=\"name\"\u003e\u003ceter:var name=\"__key__\"\u003e\u003c/span\u003e\u003c/dt\u003e\n        \u003cdd\u003e\u003cspan class=\"description\"\u003e\u003ceter:var name=\"__value__\"\u003e\u003c/span\u003e\u003c/dd\u003e\n        \u003cdiv eter=\"var\" eter:name=\"no\" eter:op=\"+\" eter:value=\"1\"\u003e\u003c/div\u003e\n    \u003c/dl\u003e\n\n独自ハンドラ item* を追加して変数処理やカウントアップをテンプレートから分離\n\n    \u003cdl eter=\"items\"\u003e\n        \u003cdt\u003e\u003cspan class=\"no\" eter=\"itemno\"\u003e1\u003c/span\u003e:\u003cspan class=\"name\" eter=\"itemname\"\u003eDUMMY\u003c/span\u003e\u003c/dt\u003e\n        \u003cdd\u003e\u003cspan class=\"description\" eter=\"itemdescription\"\u003eDUMMY\u003c/span\u003e\u003c/dd\u003e\n    \u003c/dl\u003e\n\nこれらは以下のようなハンドラクラスを作成するだけです。\n\n    # items\n    Eter::Node::Handler::Items\n    # itemno\n    Eter::Node::Handler::Itemno\n    # itemname\n    Eter::Node::Handler::Itemname\n    # itemdescription\n    Eter::Node::Handler::Itemdescription\n\n## 組み込みハンドラ\n\n### Var\n\n変数を取得したりセットしたりできます。\n\n    \u003cspan eter=\"var\" name=\"hoge\"\u003e変数hogeの内容を表示\u003c/span\u003e\n\nvalueパラメータを指定すると値をセットします。この時、出力には表示されません。\n\n    \u003cspan eter=\"var\" eter:name=\"hoge\" eter:value=\"HOGE\"\u003e\u003c/span\u003e\n\nまた、変数の内容についてopパラメータを使うことで変数に対して処理を行うことができます。\n\n    \u003c!-- 変数countの値に1を加算 --\u003e\n    \u003cspan eter=\"var\" eter:name=\"count\" eter:op=\"+\" eter:value=\"1\"\u003e\u003c/span\u003e\n\n出力時にエスケープを行う場合は、escapeパラメータを設定します。\n\n    \u003cp eter=\"message\" eter:escape=\"html\"\u003emessage変数の値をHTMLエスケープして表示します。\u003c/p\u003e\n\n### Loop\n\n繰り返しを行います。\n\n    \u003cdiv eter=\"loop\" eter:name=\"items\"\u003e\n       \u003cp eter=\"var\" eter:name=\"__value__\"\u003eDUMMY\u003c/p\u003e\n    \u003c/div\u003e\n\n### If\n\n分岐選択制御を行います。\n\n    \u003cdiv eter=\"if\" eter:name=\"hoge\"\u003e\n      変数hogeの値が存在すればこの内容を表示\n      ここで'存在する'とは nil でなく、配列やハッシュの場合は空でないこと\n    \u003c/div\u003e\n\n    \u003cdiv eter=\"if\" eter:name=\"hoge\" eter:eq=\"HOGE\"\u003e\n      変数hogeの値が'HOGE'ならこの内容を表示\n    \u003c/div\u003e\n\n## 属性の書き換え\n\nAタグのhrefを設定したい場合など、タグの属性を変数の値で書き換えることができます。\n\n    \u003ca href=\"#dummy\" set:href=\"url\"\u003eTEXT\u003c/a\u003e\n\nこの場合、href属性にurl変数の値を設定します。なお、この値は自動的にHTMLエスケープされます。\n\n## タグの除去\n\ndeletionパラメータを指定すると、そのタグ自体は出力に含まれなくなります。\n\n    \u003cdiv eter=\"var\" eter:name=\"hoge\"\u003ehogeの値\u003cdiv\u003e\n\n    \u003cdiv\u003eHOGE\u003c/div\u003e\n\n    \u003cdiv eter=\"var\" eter:name=\"hoge\" eter:deletion=\"1\"\u003ehogeの値\u003cdiv\u003e\n\n    HOGE\n\n## Contributing to ETER\n\nFork, fix, then send me a pull request.\n\n## Copyright\n\nCopyright(c) 2013 Yuichi Takeuchi, released under the MIT license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakeyuweb%2Feter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakeyuweb%2Feter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakeyuweb%2Feter/lists"}