From: Yanick Champoux Date: Thu, 30 Sep 2010 00:16:33 +0000 (-0400) Subject: preparing for a first release X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=38ac0ad20634e83830c186b2070f6bfde24e0ed0;p=chaz%2Fp5-Catalyst-Plugin-Sitemap preparing for a first release --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ecf871 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +Catalyst-Plugin-Sitemap* diff --git a/Changes b/Changes new file mode 100644 index 0000000..176babc --- /dev/null +++ b/Changes @@ -0,0 +1,4 @@ +Revision history for Catalyst-Plugin-Sitemap + +{{$NEXT}} + - original version unleashed on an unsuspecting world diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..3ec753a --- /dev/null +++ b/MANIFEST @@ -0,0 +1,12 @@ +Build.PL +Changes +LICENSE +MANIFEST +META.json +META.yml +SIGNATURE +lib/Catalyst/Plugin/Sitemap.pm +t/000-report-versions.t +t/lib/TestApp.pm +t/lib/TestApp/Controller/Root.pm +t/sitemap.t diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP new file mode 100644 index 0000000..afd4b65 --- /dev/null +++ b/MANIFEST.SKIP @@ -0,0 +1,4 @@ +Catalyst-Plugin-Sitemap +dist.ini +MANIFEST.SKIP +.gitignore diff --git a/dist.ini b/dist.ini index acbdfe9..d027d80 100644 --- a/dist.ini +++ b/dist.ini @@ -4,3 +4,73 @@ license = Perl_5 copyright_holder = Yanick Champoux copyright_year = 2010 +version = 0.0.1 + +[ModuleBuild] + +[GithubMeta] +remote=github + +[Homepage] +[Bugtracker] + +[MetaYAML] +[MetaJSON] + +[PodWeaver] + +;[ExecDir] +;dir=scripts + +[License] +;[Repository] + +[NextRelease] +time_zone = America/Montreal + +[MetaProvides::Package] + +[MatchManifest] +[ManifestSkip] + +[GatherDir] + +[PkgVersion] +[PodVersion] + +;Tests +[ReportVersions] + +[Signature] + +[AutoPrereq] + + +; Build + +; Release +[CheckChangesHasContent] + +[TestRelease] + + +[ConfirmRelease] + +[Git::Check] + +[Git::Commit] + +[Git::CommitBuild] +release_branch = releases + +[Git::Tag] +tag_format = v%v +branch = releases + +[Git::Push] +push_to = github + +[UploadToCPAN] + +[Twitter] +;hash_tags = #perl #cpan #netpacket diff --git a/lib/Catalyst/Plugin/Sitemap.pm b/lib/Catalyst/Plugin/Sitemap.pm index 7363950..3cadf65 100644 --- a/lib/Catalyst/Plugin/Sitemap.pm +++ b/lib/Catalyst/Plugin/Sitemap.pm @@ -1,4 +1,137 @@ package Catalyst::Plugin::Sitemap; +# ABSTRACT: Sitemap support for Catalyst. + +=head1 SYNOPSIS + + # in MyApp.pm + + use Catalyst qw/ Sitemap /; + + # in the controller + + sub alone :Local :Sitemap { + ... + } + + sub with_priority :Local :Sitemap(0.75) { + ... + } + + sub with_args :Local + :Sitemap( lastmod => 2010-09-27, changefreq => daily ) { + ... + } + + sub with_function :Local :Sitemap(*) { + ... + } + + sub with_function_sitemap { + $_[2]->add( 'http://localhost/with_function' ); + } + + # and then... + + sub sitemap : Path('/sitemap') { + my ( $self, $c ) = @_; + + $c->res->body( $c->sitemap->xml ); + } + +=head1 DESCRIPTION + +L provides a way to semi-automate the creation +of the sitemap of a Catalyst application. + +=head1 CONTEXT METHOD + +=head2 sitemap() + +Returns a L object. The sitemap object is populated by +inspecting the controllers of the application for actions with the +sub attribute C<:Sitemap>. + +=head1 C<:Sitemap> Subroutine Attribute + +The sitemap is populated by actions ear-marked with the <:Sitemap> sub +attribute. It can be invoked in different ways: + +=over + +=item C<:Sitemap> + + sub alone :Local :Sitemap { + ... + } + +Adds the url of the action to the sitemap. + +If the action does not +resolves in a single url, this will results in an error. + +=item C<:Sitemap($priority)> + + + sub with_priority :Local :Sitemap(0.9) { + ... + } + +Adds the url, with the given number, which has to be between 1 (inclusive) +and 0 (exclusive), as its priority. + +If the action does not +resolves in a single url, this will results in an error. + +=item C<:Sitemap( %attributes )> + + sub with_args :Local + :Sitemap( lastmod => 2010-09-27, changefreq => daily ) { + ... + } + +Adds the url with the given entry attributes (as defined by C). + +If the action does not +resolves in a single url, this will results in an error. + +=item C<:Sitemap(*)> + + sub with_function :Local :Sitemap(*) { } + + sub with_function_sitemap { + my ( $self, $c, $sitemap ) = @_; + + $sitemap->add( 'http://localhost/with_function' ); + } + +Calls the function 'I_sitemap', if it exists, and passes it the +controller, context and sitemap objects. + +This is currently the only way to invoke C<:Sitemap> on an action +resolving to many urls. + +=back + + +=head1 BUGS AND LIMITATIONS + +Currently, each invocation of the method C will +re-generate the C object. A future version +of this module might offer a way to only compute the sitemap +once. + + +=head1 SEE ALSO + +=over + +=item L + +=item http://babyl.dyndns.org/techblog/entry/catalyst-plugin-sitemap + +=back + +=cut use strict; use warnings; @@ -67,23 +200,3 @@ sub sitemap { 1; __END__ - -ways I can do it - -is Sitemap( ) ? => use it as is -else => has _sitemap? => use it -else => use the uri directly - - -sitemap => sub { - my ( $self, $c, $sitemap ) = @_; - - ... -}; - -sub action_sitemap { - my ( $self, $c, $sitemap ) = @_; -} - -sub do_stuff :Local :Sitemap { -}