File Coverage

blib/lib/Wikibase/Datatype/Term.pm
Criterion Covered Total %
statement 21 21 100.0
branch 2 2 100.0
condition n/a
subroutine 6 6 100.0
pod 0 1 0.0
total 29 30 96.6


line stmt bran cond sub pod time code
1             package Wikibase::Datatype::Term;
2              
3 28     28   858479 use strict;
  28         78  
  28         1240  
4 28     28   179 use warnings;
  28         62  
  28         1671  
5              
6 28     28   2435 use Mo qw(build is);
  28         3358  
  28         198  
7 28     28   20130 use Mo::utils 0.01 qw(check_required);
  28         63303  
  28         1717  
8 28     28   18242 use Wikibase::Datatype::Utils qw(check_language_term);
  28         155  
  28         886  
9              
10             our $VERSION = 0.39;
11              
12             has language => (
13             is => 'ro',
14             );
15              
16             has value => (
17             is => 'ro',
18             );
19              
20             sub BUILD {
21 33     33 0 840282 my $self = shift;
22              
23             # Check language.
24 33 100       176 if (! defined $self->{'language'}) {
25 4         15 $self->{'language'} = 'en',
26             }
27 33         222 check_language_term($self, 'language');
28              
29             # Check value.
30 32         174 check_required($self, 'value');
31              
32 31         348 return;
33             }
34              
35             1;
36              
37             __END__
38              
39             =pod
40              
41             =encoding utf8
42              
43             =head1 NAME
44              
45             Wikibase::Datatype::Term - Wikibase term datatype.
46              
47             =head1 SYNOPSIS
48              
49             use Wikibase::Datatype::Term;
50              
51             my $obj = Wikibase::Datatype::Term->new(%params);
52             my $language = $obj->language;
53             my $value = $obj->value;
54              
55             =head1 DESCRIPTION
56              
57             This datatype is string class for representation of translatable string. This
58             datatype is used for label, description and alias.
59              
60             =head1 METHODS
61              
62             =head2 C<new>
63              
64             my $obj = Wikibase::Datatype::Term->new(%params);
65              
66             Constructor.
67              
68             Returns instance of object.
69              
70             =over 8
71              
72             =item * C<language>
73              
74             Language shortcut.
75             Parameter is optional.
76             Value is checked to Wikibase language code used for terms.
77             Default value is 'en'.
78              
79             =item * C<value>
80              
81             Value of instance.
82             Parameter is required.
83              
84             =back
85              
86             =head2 C<language>
87              
88             my $language = $obj->language;
89              
90             Get language shortcut.
91              
92             Returns string.
93              
94             =head2 C<value>
95              
96             my $value = $obj->value;
97              
98             Get value.
99              
100             Returns string.
101              
102             =head1 ERRORS
103              
104             new():
105             From Wikibase::Datatype::Value::new():
106             Parameter 'value' is required.
107              
108             From Wikibase::Datatype::Utils::check_language_term():
109             Language code '%s' isn't code supported for terms by Wikibase.
110              
111             =head1 EXAMPLE
112              
113             =for comment filename=create_and_print_term.pl
114              
115             use strict;
116             use warnings;
117              
118             use Wikibase::Datatype::Term;
119              
120             # Object.
121             my $obj = Wikibase::Datatype::Term->new(
122             'language' => 'en',
123             'value' => 'English text',
124             );
125              
126             # Get language.
127             my $language = $obj->language;
128              
129             # Get value.
130             my $value = $obj->value;
131              
132             # Print out.
133             print "Language: $language\n";
134             print "Value: $value\n";
135              
136             # Output:
137             # Language: en
138             # Value: English text
139              
140             =head1 DEPENDENCIES
141              
142             L<Mo>,
143             L<Mo::utils>,
144             L<Wikibase::Datatype::Utils>.
145              
146             =head1 SEE ALSO
147              
148             =over
149              
150             =item L<Wikibase::Datatype::Value::Monolingual>
151              
152             Wikibase datatypes.
153              
154             =back
155              
156             =head1 REPOSITORY
157              
158             L<https://github.com/michal-josef-spacek/Wikibase-Datatype>
159              
160             =head1 AUTHOR
161              
162             Michal Josef Špaček L<mailto:skim@cpan.org>
163              
164             L<http://skim.cz>
165              
166             =head1 LICENSE AND COPYRIGHT
167              
168             © 2020-2025 Michal Josef Špaček
169              
170             BSD 2-Clause License
171              
172             =head1 VERSION
173              
174             0.39
175              
176             =cut