1 # This module is part of debbugs, and
2 # is released under the terms of the GPL version 2, or any later
3 # version (at your option). See the file README and COPYING for more
5 # Copyright 2018 by Don Armstrong <don@donarmstrong.com>.
7 package Debbugs::Bug::Tag;
11 Debbugs::Bug::Tag -- OO interface to bug tags
15 use Debbugs::Bug::Tag;
26 use v5.10; # for state
28 use Debbugs::Config qw(:config);
31 {map {($_,1)} @{$config{tags}}};
33 extends 'Debbugs::OOBase';
35 around BUILDARGS => sub {
38 if (@_ == 1 && !ref $_[0]) {
39 my @tags = split / /,$_[0];
41 @tags{@tags} = (1) x @tags;
42 return $class->$orig(tags => \%tags);
44 return $class->$orig(@_);
48 has tags => (is => 'ro', isa => 'HashRef[Str]',
51 has usertags => (is => 'ro',isa => 'HashRef[Str]',
56 return exists $_[0]->tags->{$_[1]} ? 1 : 0;
61 delete $self->tags->{$_} foreach @_;
67 if (not $self->valid_tag($tag)) {
68 confess("Invalid tag $tag");
70 $self->tags->{$tag} = 1;
76 return exists $valid_tags->{$_[1]}?1:0;
80 return join(' ',sort keys %{$_[0]->tags})
89 # indent-tabs-mode: nil
90 # cperl-indent-level: 4