diff options
author | dakkar <dakkar@luxion> | 2008-03-01 09:37:45 +0000 |
---|---|---|
committer | dakkar <dakkar@luxion> | 2008-03-01 09:37:45 +0000 |
commit | d28bac7032a0d95fffbba01ad7eaa6a85fd7be16 (patch) | |
tree | 7187deed6d9143a8fc0168eaed3edc57ebe60917 /lib/WebCoso/XSLT.pm | |
parent | refactoring: cleaner (diff) | |
download | WebCoso-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.pm | 22 |
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; |