| Data-Taxonomy-Tags documentation | Contained in the Data-Taxonomy-Tags distribution. |
Data::Taxonomy::Tags::Tag - Represents a single tag
print $tag->name, " (category: ", $tag->category, ")\n";
Data::Taxonomy::Tags::Tag represents a single tag for a Data::Taxonomy::Tags object.
Creates a new instance of the class representing a single tag. Requires two arguments (the input tag to parse and separator arrayref). You shouldn't have to use this method yourself.
Returns the name of the tag (that is, the tag itself) sans the category bit.
Returns the category the tag is in. If there is no category, then undef is returned;
Returns the full tag as a string (that is, the category, the category seperator, and the tag name all concatenated together). Overloading is used as well to automatically call this method if the object is used in a string context.
All bugs, open and resolved, are handled by RT at https://rt.cpan.org/NoAuth/Bugs.html?Dist=Data-Taxonomy-Tags.
Please report all bugs via https://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Taxonomy-Tags.
Copyright 2005, Thomas R. Sibley.
You may use, modify, and distribute this package under the same terms as Perl itself.
Thomas R. Sibley, http://zulutango.org:82/
| Data-Taxonomy-Tags documentation | Contained in the Data-Taxonomy-Tags distribution. |
package Data::Taxonomy::Tags::Tag; use overload '""' => sub { shift->as_string }, fallback => 1; # Constants for separator and category use constant SPLIT => 0; use constant JOIN => 1;
sub new { my ($class, $tag, $opt) = @_; my $self = bless { input => $tag, separator => $opt->{separator}, }, $class; $self->_process; *name = \&tag; return $self; }
sub tag { my ($self, $v) = @_; $self->{tag} = $v if defined $v; return $self->{tag}; }
sub category { my ($self, $v) = @_; $self->{category} = $v if defined $v; return $self->{category}; } sub _process { my $self = shift; my ($one, $two) = split /$self->{separator}[SPLIT]/, $self->{input}; if (defined $one and defined $two) { $self->tag($two); $self->category($one); } elsif (defined $one and not defined $two) { $self->tag($one); } else { # Ack! Weird data. $self->tag($self->{input}); } }
sub as_string { my $self = shift; return defined $self ? defined $self->category ? $self->category . $self->{separator}[JOIN] . $self->tag : $self->tag : undef; }
42;