aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso/XSLT.pm
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2008-03-01 09:37:45 +0000
committerdakkar <dakkar@luxion>2008-03-01 09:37:45 +0000
commitd28bac7032a0d95fffbba01ad7eaa6a85fd7be16 (patch)
tree7187deed6d9143a8fc0168eaed3edc57ebe60917 /lib/WebCoso/XSLT.pm
parentrefactoring: cleaner (diff)
downloadWebCoso-d28bac7032a0d95fffbba01ad7eaa6a85fd7be16.tar.gz
WebCoso-d28bac7032a0d95fffbba01ad7eaa6a85fd7be16.tar.bz2
WebCoso-d28bac7032a0d95fffbba01ad7eaa6a85fd7be16.zip
aggiunto supporto date (data creazione deve essere scritta nel documento)
git-svn-id: svn://luxion/repos/WebCoso/trunk@330 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso/XSLT.pm')
-rw-r--r--lib/WebCoso/XSLT.pm22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/WebCoso/XSLT.pm b/lib/WebCoso/XSLT.pm
index 18d2416..1f9208a 100644
--- a/lib/WebCoso/XSLT.pm
+++ b/lib/WebCoso/XSLT.pm
@@ -5,6 +5,7 @@ use WebCoso::Common;
use Path::Class;
use XML::LibXML;
use XML::LibXSLT;
+use DateTime::Format::Strptime;
my $NS='http://webcoso.thenautilus.net/';
@@ -19,6 +20,8 @@ sub new {
$self->{xslt_proc}->register_function($NS,'title-for',
sub{WebCoso::Common::getTitleFor($self->{fc},@_)});
$self->{xslt_proc}->register_function($NS,'tagged',sub{$self->getTagsXML});
+ $self->{xslt_proc}->register_function($NS,'dates-for',
+ sub{$self->getDatesXML(WebCoso::Common::getDatesFor($self->{fc},@_))});
$self->{fc}->add_parser(qr{\.xml$} =>
sub { $self->{xml_parser}->parse_string($_[1],$_[0]) });
@@ -92,4 +95,23 @@ sub getTagsXML {
return $doc;
}
+{
+my %name_map=(creation=>'wc:creation-date',
+ last_change=>'wc:last-change');
+my $format=DateTime::Format::Strptime->new(pattern=>'%F %T',time_zone=>'UTC');
+sub getDatesXML {
+ my ($self,$dates)=@_;
+ my $doc=XML::LibXML::Document->new();
+ return $doc unless defined $dates;
+
+ my $de=$doc->createElementNS($NS,'wc:dates');
+ $doc->setDocumentElement($de);
+ while (my ($k,$v)=each %$dates) {
+ my $d=$doc->createElementNS($NS,$name_map{$k});
+ $d->appendTextNode($format->format_datetime($v));
+ $de->appendChild($d);
+ }
+ return $doc;
+}
+}
1;