Widget::Simpleã使ã£ã¦ãã³ãã¬ã¼ããDRYã«
çãããHackthonä¸*1ãªã®ã§ãPlaggerã§ãæ°é¡ã®ãã©ã°ã¤ã³ã®Widget::Simpleã§éãã§è¦ã¾ããã
Widgetã¯é¢ç½ããã®ã®ã使ç¨ãã¦ãããã³ãã¬ã¼ãã¯miyagawaãã謹製ã®P::Gmailã¨P::PlanetãP::PSPã§ãã使ããã¦ãã¾ãã(P::Gmailããã¯ããP::Maildirã¨P::IMAPã使ç¨ãã¦ãã¾ããâ¦)ãã§ã使ç¨ãã¦ããç®æãè¦ã¦è¦ããã»ã¨ãã©åãã«ãªã£ã¦ããã®ã§ãã¡ãã£ã¨ããã¯ãã¦è¦ã¾ããã
ããã¯å 容ã¨ãã¦ã¯ãWidgetãé ç½®ããå ´æã®åã«å¿ ãè¨è¿°ãã¦ããpostedtimeãpermalinkãfeedlinkãWiget::Simpleã§è¨è¿°ãããã¨è¨ããã®ã§ãã
ãã¾ã使ããã°ãä»ã®Publishã§ãé¢ç½ãä½¿ãæ¹ãåºæ¥ãã®ã§ã¯ï¼
plagger/lib/Plagger/Plugin/Widget/Simple.pm
W::Simpleã¯YAMLã«link:ããããã¨ãæå¾ ãã¦ããããã§ãå¿ ããªã³ã¯ã使ããã®ã§ãããposted_timeã®æ§ã«ãªã³ã¯å ãç¡ããã®ã許ãããã«æ¹é ãã¾ããEFTãStripRSSAdã®æ§ã«èªã¿è¾¼ãã YAMLãåºåããæ§ã«ã夿´ã
--- svn/plagger/lib/Plagger/Plugin/Widget/Simple.pm (revision 1381)
+++ svn/plagger/lib/Plagger/Plugin/Widget/Simple.pm (working copy)
@@ -23,9 +23,11 @@
$self->load_assets(
File::Find::Rule->name("$name.yaml"),
sub {
- my $data = YAML::LoadFile(shift);
+ my $file = shift;
+ my $data = YAML::LoadFile($file);
$self->{conf} = { %{$self->{conf}}, %$data };
$found++;
+ $context->log(debug => "loading $file");
},
); @@ -94,8 +96,11 @@
} else {
$content = $self->plugin->conf->{content};
}
-
- return qq(<a href="$url">$content</a>);
+ if ($url) {
+ return qq(<a href="$url">$content</a>);
+ } else {
+ return $content;
+ }
}
1;
plagger/assets/plugins/Publish-Gmail/gmail_notify.tt
postedtimeãpermalinkãfeedlinkãW::Simpleã§è¡¨ç¤ºãããã®ã§ããã³ãã¬ã¼ããä¿®æ£ãã¨ããããèªåã使ãP::Gmailã®ã¿ã
æ¬å½ã¯[% IF entry.widgets %]
ã§å¦çãåå²ãããç¡ãã®ã§ãããã¨ãããã徿¹äºææ§ã¨è¨ããã¨ã§æ®ãã¦ããã¾ããcoreã§entry.widgetsã空ãªã以åã®å
容ã表示ããçã®å¯¾å¿ããã¦ããããã°ããã辺ã¯ããªããã£ãããããã
--- svn/plagger/assets/plugins/Publish-Gmail/gmail_notify.tt (revision 1381)
+++ svn/plagger/assets/plugins/Publish-Gmail/gmail_notify.tt (working copy)
@@ -17,7 +17,7 @@
[% IF entry.body -%]
[% IF entry.body.match('(?i)^<p[ >]') %][% entry.body %][% ELSE %]<div style="padding: 1em 0">[% entry.body %]</div>[% END %]
[% ELSE %]<br />[% END %]
-<div style="font-size:0.8em">[% IF entry.date %]Posted on [% entry.date.format('Mail') %][% END %] | <a href="[% entry.permalink | html %]">permalink</a> | <a href="[% feed.link | html %]">[% feed.title | html %]</a>[% FOREACH widget = entry.widgets %] | [% widget.html(entry) %][% END %]<br clear="all" /></div>
+<div style="font-size:0.8em">[% IF entry.widgets %][% FOREACH widget = entry.widgets %] | [% widget.html(entry) %][% END %][% ELSE %][% IF entry.date %]Posted on [% entry.date.format('Mail') %][% END %] | <a href="[% entry.permalink | html %]">permalink</a> | <a href="[% feed.link | html %]">[% feed.title | html %]</a>[% END %]<br clear="all" /></div>
</div>
[% UNLESS loop.last %]<hr />[% END %]
[%- END %]
plagger/assets/plugins/Widget-Simple/feed_link.yaml
content_dynamic: <a href="[% feed.link | html %]">[% feed.title | html %]</a>
plagger/assets/plugins/Widget-Simple/permalink.yaml
content_dynamic: <a href="[% entry.permalink | html %]">permalink</a>
plagger/assets/plugins/Widget-Simple/feed_link.yaml
content_dynamic: <a href="[% feed.link | html %]">[% feed.title | html %]</a>
config.yaml
config.yamlã¸ã¯ä»¥ä¸ã®éãè¨è¿°ããã°ä»¥åã¨åæ§ã®è¡¨ç¤ºã«ãªãã¾ãã
ããã§ãfeed_linkã®è¡¨ç¤ºãFeedã®ã¿ã¤ãã«ã«ãªãã®ã§é·ãã¦ãããã¨ããã¨ããæã«ã¯ããã³ãã¬ã¼ããä¿®æ£ããªãã¦ãè¨å®ãã¡ã¤ã«ã§èª¿æ´ã§ããã®ã§æ¥½ããï¼
- module: Widget::Simple
config:
widget: posted_time
- module: Widget::Simple
config:
widget: permalink
- module: Widget::Simple
config:
widget: feed_link
*1:èªåã¯ã¾ãããè¡ãã¾ããã§ãããâ¦