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