| XML-Generator-RSS10 documentation | Contained in the XML-Generator-RSS10 distribution. |
XML::Generator::RSS10::cc - Support for the Creative Commons (cc) RSS 1.0 module
use XML::Generator::RSS10;
my $rss = XML::Generator::RSS10->new( Handler => $sax_handler );
$rss->item( title => 'Exciting News About my Pants!',
link => 'http://pants.example.com/my/news.html',
description => 'My pants are full of ants!',
cc => { license => 'http://creativecommons.org/licenses/by/2.0/' }
);
$rss->channel( title => 'Pants',
link => 'http://pants.example.com/',
description => 'A fascinating pants site',
);
This module provides support for the Creative Commons (cc) RSS 1.0 module.
This module allows expects one parameter, "license", which can be passed to any method. It will automatically add channel subelements for each license used.
| XML-Generator-RSS10 documentation | Contained in the XML-Generator-RSS10 distribution. |
package XML::Generator::RSS10::cc; use strict; use base 'XML::Generator::RSS10::Module'; use Params::Validate qw( validate SCALAR ); sub NamespaceURI { 'http://web.resource.org/cc/' } use constant CONTENTS_SPEC => { license => { type => SCALAR }, }; my %Licenses = ( 'http://creativecommons.org/licenses/by/2.0/' => { permits => [ qw( Reproduction Distribution DerivativeWorks ) ], requires => [ qw( Attribution Notice ) ], }, 'http://creativecommons.org/licenses/by-nd/2.0/' => { permits => [ qw( Reproduction Distribution ) ], requires => [ qw( Attribution Notice ) ], }, 'http://creativecommons.org/licenses/by-nc-nd/2.0/' => { permits => [ qw( Reproduction Distribution ) ], requires => [ qw( Attribution Notice ) ], prohibits => [ 'CommercialUse' ], }, 'http://creativecommons.org/licenses/by-nc/2.0/' => { permits => [ qw( Reproduction Distribution DerivativeWorks ) ], requires => [ qw( Attribution Notice ) ], prohibits => [ 'CommercialUse' ], }, 'http://creativecommons.org/licenses/by-nc-sa/2.0/' => { permits => [ qw( Reproduction Distribution DerivativeWorks ) ], requires => [ qw( Attribution Notice ShareAlike ) ], prohibits => [ 'CommercialUse' ], }, 'http://creativecommons.org/licenses/by-sa/2.0/' => { permits => [ qw( Reproduction Distribution DerivativeWorks ) ], requires => [ qw( Attribution Notice ShareAlike ) ], }, ); sub contents { my $class = shift; my $rss = shift; my %p = validate( @_, CONTENTS_SPEC ); if ( exists $p{license} ) { die "Unknown license: $p{license}\n" unless exists $Licenses{ $p{license} }; $rss->_element( 'cc', 'license', [ 'rdf', 'about', $p{license} ] ); $rss->_newline_if_pretty; $rss->{__cc_licenses__}{ $p{license} } = 1; } } sub channel_hook { my $class = shift; my $rss = shift; foreach my $license ( keys %{ $rss->{__cc_licenses__} } ) { $rss->_start_element( 'cc', 'License', [ 'rdf', 'about', $license ], ); $rss->_newline_if_pretty; foreach my $elt ( keys %{ $Licenses{$license} } ) { foreach my $val ( @{ $Licenses{$license}{$elt} } ) { $rss->_element( 'cc', $elt, [ 'rdf', 'resource', "http://web.resource.org/cc/$val" ], ); $rss->_newline_if_pretty; } } $rss->_end_element( 'cc', 'License' ); $rss->_newline_if_pretty; } } 1; __END__