package EnsEMBL::Web::Data::Field; use strict; use warnings; use Class::Std; { my %Name :ATTR(:set<name> :get<name>); my %Type :ATTR(:set<type> :get<type>); my %Queriable :ATTR(:set<queriable> :get<queriable>); sub BUILD { my ($self, $ident, $args) = @_; $Name{$ident} = $args->{name}; $Type{$ident} = $args->{type}; $Queriable{$ident} = $args->{queriable}; } sub is_queriable { my $self = shift; if (defined $self->get_queriable) { if ($self->get_queriable eq 'yes') { return 1; } } return 0; } sub get_values { ### Parses an enum or set type and returns the values as an array my $self = shift; my $type = $self->get_type; my $values = []; if ($type =~ /^enum/ || $type =~ /^set/) { if ($type =~ /^enum/) { $type =~ s/enum\(//; } else { $type =~ s/set\(//; } $type =~ s/\)//; my @types = split(',', $type); foreach my $value (@types) { $value =~ s/^'//; $value =~ s/'$//; push @$values, $value; } } return $values; } } 1;