From a73fa0689b4187b6429f2c6186e70d8f7f3c7880 Mon Sep 17 00:00:00 2001 From: Mike Rylander <mrylander@gmail.com> Date: Tue, 28 Jun 2011 10:57:35 -0400 Subject: [PATCH] Add a method to generate a URI from extracted or supplied parts (both class and object method) Signed-off-by: Mike Rylander <mrylander@gmail.com> --- Open-ILS/src/perlmods/lib/OpenILS/Utils/TagURI.pm | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Utils/TagURI.pm b/Open-ILS/src/perlmods/lib/OpenILS/Utils/TagURI.pm index dd7382e990..e9c6546369 100755 --- a/Open-ILS/src/perlmods/lib/OpenILS/Utils/TagURI.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Utils/TagURI.pm @@ -101,4 +101,33 @@ sub parse { return $self; } +sub toURI { + my $class = shift; + my $parts = shift || {}; + + my $self = ref($class) ? $class : $class->new; + + $self->$_($$parts{$_}) for keys %$parts; + return undef unless (defined($self->classname) && defined($self->id)); + + my $tag = 'tag:'; + + if ($self->host) { + $tag .= $self->host; + $tag .= ',' . $self->validity if ($self->validity); + } + + $tag .= ':'; + + $tag .= 'U2@' if ($self->version == 2); + $tag .= $self->classname . '/' . $self->id; + $tag .= '['. join(',', @{ $self->paging }) . ']' if defined($self->paging); + $tag .= '{'. join(',', @{ $self->includes }) . '}' if defined($self->includes); + $tag .= '/' . $self->location if defined($self->location); + $tag .= '/' . $self->depth if defined($self->depth); + $tag .= '/' . $self->pathinfo if defined($self->pathinfo); + + return $tag; +} +1; -- 2.11.0