02:24 tokuhirom: device:gpsone?url=http://server/location.cgi&ver=1&datum=0&unit=0 02:24 tokuhirom: みたいに指定できるから 02:24 tokuhirom: device:gpsone?url=http://server:5678/location.cgi&ver=1&datum=0&unit=0 02:24 tokuhirom: って指定したら、コールバックは 02:25 tokuhirom: http://server:5678/location.cgi にきてほしいわけですが 02:25 tokuhirom: それやると 400 bad request になる 02:25 tokuhirom: :5678 は省略しても http://server:5678/ にアクセスくるから指定しないのが吉っぴお
えーっと要するに GPS の a タグを生成しまくるのが面倒だったのでつくったっていうはなしなんですが。
[% USE HTMLMobileJp %]
[% IF mobile_agent.is_non_mobile %]
this is not a mobile phone.
[% ELSE %]
[% HTMLMobileJp.gps_a({
carrier => mobile_agent.carrier,
is_gps => mobile_agent.gps_compliant,
callback_url => url,
}) %]
Send Location Information
</a>
[% END %]
とかで、適当に GPS 情報送信機能つき a タグを生成してくれる。便利じゃね。
wassr と mobirc でコードをコピペしつつメンテするのが面倒すぎたから作らざるをえなくなっただけだけど。
最初は id:yappo さんに煽られて Template::Declare::TagSet::MobileJp つくろうと思ったんですが、スケルトンまでつくたところで、「あれ、おれ Template::Declare つかってなくね」ということに気付いたので、Template-Toolkit でつかいやすいように作った。
Template::Plugin::HTMLMobileJp に、タグ生成機能をがっつり埋めこんでもよかったのだが、まあ TT に依存しないで作れそうな部分の方が多かったんで、HTML::MobileJp というモジュールをつくって、T::P::HTMLMobileJp はそれのラッパーという扱いにしてみた。こういう時に、ごっつりと埋めこんじゃって、後になって悲しい思いをする、という経験をたくさんしてきて今の自分がいます(笑)
Sledge::Plugin::* でそういう現象は顕著で、Sledge::Plugin::Valiator とかは実は Sledge に依存してない機能の方がおおいのに、Sledge にべったりくっついてるから Catalyst で同じコードベースで validation できない、とか。なんか、そういうのって嫌だから、できるだけそういう関係ないところで密結合するのはやめたいなーと思う。
テストもしにくくなるし。
# CPAN モジュールの数を稼ごうとして別モジュールにしたわけじゃないよ。