File Coverage

blib/lib/Data/Kramerius.pm
Criterion Covered Total %
statement 38 38 100.0
branch 2 2 100.0
condition n/a
subroutine 9 9 100.0
pod 3 3 100.0
total 52 52 100.0


line stmt bran cond sub pod time code
1             package Data::Kramerius;
2              
3 5     5   78738 use strict;
  5         41  
  5         137  
4 5     5   390 use warnings;
  5         12  
  5         132  
5              
6 5     5   2133 use Data::Kramerius::Object;
  5         24  
  5         149  
7 5     5   2333 use Text::DSV;
  5         2718  
  5         160  
8 5     5   2168 use Unicode::UTF8 qw(decode_utf8);
  5         2317  
  5         1859  
9              
10             our $VERSION = 0.06;
11              
12             # Constructor.
13             sub new {
14 4     4 1 2613 my ($class, @params) = @_;
15              
16             # Create object.
17 4         16 my $self = bless {}, $class;
18              
19 4         29 $self->{'kramerius'} = [];
20              
21             # Load data.
22 4         16 $self->_load_data;
23              
24             # Object.
25 4         44 return $self;
26             }
27              
28             sub get {
29 2     2 1 11 my ($self, $id) = @_;
30              
31 2         5 foreach my $obj (@{$self->{'kramerius'}}) {
  2         7  
32 32 100       188 if ($obj->id eq $id) {
33 1         18 return $obj;
34             }
35             }
36              
37 1         3 return;
38             }
39              
40             # List of Kramerius systems.
41             sub list {
42 1     1 1 6 my $self = shift;
43              
44 1         2 return @{$self->{'kramerius'}};
  1         5  
45             }
46              
47             sub _load_data {
48 4     4   47 my $self = shift;
49              
50             # Read data.
51 4         8 my $kramerius_data;
52 4         19 my $dsv = Text::DSV->new;
53 4         69 while (my $data = <DATA>) {
54 150         7095 chomp $data;
55 150         293 my ($version, $id, $name, $url, $active) = $dsv->parse_line($data);
56 150         3734 push @{$self->{'kramerius'}}, Data::Kramerius::Object->new(
  150         536  
57             'active' => $active,
58             'id' => $id,
59             'name' => decode_utf8($name),
60             'url' => $url,
61             'version' => $version,
62             );
63             }
64              
65 4         232 return;
66             }
67              
68             1;
69              
70             =pod
71              
72             =encoding utf8
73              
74             =head1 NAME
75              
76             Data::Kramerius - Information about all Kramerius systems.
77              
78             =head1 SYNOPSIS
79              
80             use Data::Kramerius;
81              
82             my $obj = Data::Kramerius->new;
83             my $kramerius_obj = $obj->get($kramerius_id);
84             my @kramerius_objs = $obj->list;
85              
86             =head1 DESCRIPTION
87              
88             Kramerius is an open source software solution for accessing digital documents.
89             Homepage of project is in L<https://system-kramerius.cz/>.
90              
91             =head1 METHODS
92              
93             =head2 C<new>
94              
95             my $obj = Data::Kramerius->new;
96              
97             Constructor.
98              
99             Returns instance of object.
100              
101             =head2 C<get>
102              
103             my $kramerius_obj = $obj->get($kramerius_id);
104              
105             Get Kramerius object defined by id.
106              
107             Returns Data::Kramerius::Object instance.
108              
109             =head2 C<list>
110              
111             my @kramerius_objs = $obj->list;
112              
113             List all kramerius systems.
114              
115             Returns list of Data::Kramerius::Object instances.
116              
117             =head1 EXAMPLE
118              
119             =for comment filename=look_for_mzk_and_print.pl
120              
121             use strict;
122             use warnings;
123              
124             use Data::Kramerius;
125             use Unicode::UTF8 qw(encode_utf8);
126              
127             my $obj = Data::Kramerius->new;
128             my $kramerius_mzk = $obj->get('mzk');
129              
130             # Print out.
131             print 'Active: '.$kramerius_mzk->active."\n";
132             print 'Id: '.$kramerius_mzk->id."\n";
133             print 'Name: '.encode_utf8($kramerius_mzk->name)."\n";
134             print 'URL: '.$kramerius_mzk->url."\n";
135             print 'Version: '.$kramerius_mzk->version."\n";
136              
137             # Output:
138             # Active: 1
139             # Id: mzk
140             # Name: Moravská zemská knihovna
141             # URL: http://kramerius.mzk.cz/
142             # Version: 4
143              
144             =head1 DEPENDENCIES
145              
146             L<Data::Kramerius::Object>,
147             L<Text::DSV>,
148             L<Unicode::UTF8>.
149              
150             =head1 REPOSITORY
151              
152             L<https://github.com/michal-josef-spacek/Data-Kramerius>
153              
154             =head1 AUTHOR
155              
156             Michal Josef Špaček L<mailto:skim@cpan.org>
157              
158             L<http://skim.cz>
159              
160             =head1 LICENSE AND COPYRIGHT
161              
162             © 2021-2023 Michal Josef Špaček
163              
164             BSD 2-Clause License
165              
166             =head1 VERSION
167              
168             0.06
169              
170             =cut
171              
172             __DATA__
173             version:code:name:url:active
174             3:ABA001:Národní knihovna:https\://kramerius.nkp.cz/:1
175             3:ABA013:Národní technická knihovna:http\://kramerius.stk.cz/:1
176             3:ABC135:Národní filmový archiv v Praze:http\://kramerius.nfa.cz/:1
177             3:ABE304:Institut umění – Divadelní ústav:http\://kramerius.divadlo.cz/:1
178             3:ABG001:Digitální knihovna Městské knihovny v Praze:http\://kramerius.mlp.cz/:1
179             3:BOD006:Mendelova univerzita v Brně:http\://kramerius.mendelu.cz:1
180             3:CBA001:Jihočeská vědecká knihovna v Českých Budějovicích:http\://kramerius.cbvk.cz:1
181             3:OLA001:Digitalní knihovna novin:http\://noviny.vkol.cz/:1
182             3:OSA001:Moravskoslezská vědecká knihovna v Ostravě:http\://camea.svkos.cz:1
183             3:PNA001:Studijní a vědecká knihovna Plzeňského kraje:http\://kramerius.svkpl.cz/:1
184             3:ULG001:Severočeská vědecká knihovna v Ústí nad Labem:http\://kramerius.svkul.cz:1
185             3:ZLG001b:Krajská knihovna Františka Bartoše ve Zlíně:http\://dlib.kfbz.cz:1
186             4:mzk:Moravská zemská knihovna:http\://kramerius.mzk.cz/:1
187             4:ndk:Národní digitální knihovna:http\://ndk.cz/:1
188             4:vkol:Vědecká knihovna v Olomouci:http\://kramerius.kr-olomoucky.cz/:1
189             4:svkhk:Studijní a vědecká knihovna v Hradci Králové:http\://kramerius4.svkhk.cz/:1
190             4:svkul:Severočeská vědecká knihovna v Ústí nad Labem:http\://kramerius.svkul.cz/:1
191             4:knav:Knihovna Akademie věd ČR:https\://kramerius.lib.cas.cz/:1
192             4:mkct:Městská knihovna Česká Třebová:http\://k5.digiknihovna.cz/:1
193             4:dsmo:Digitální studovna Ministerstva obrany ČR:https\://kramerius.army.cz/:1
194             4:mlp:Městská knihovna v Praze:http\://kramerius4.mlp.cz/:1
195             4:kkkv:Krajská knihovna Karlovy Vary:http\://k4.kr-karlovarsky.cz/:1
196             4:kvkli:Krajská vědecká knihovna Liberec:http\://kramerius.kvkli.cz/:1
197             4:svkpk:Studijní a vědecká knihovna Plzeňského kraje:http\://k4.svkpl.cz/:1
198             4:nfa:Národní filmový archiv:http\://library.nfa.cz/:1
199             4:zmp:Židovské muzeum v Praze:http\://kramerius4.jewishmuseum.cz/:1
200             4:nm:Národní muzeum:http\://kramerius.nm.cz/:1
201             4:zcm:Knihovna Západočeského muzea v Plzni:http\://kramerius.zcm.cz/:1
202             4:cbvk:Jihočeská vědecká knihovna v Českých Budějovicích:http\://kramerius.cbvk.cz/:1
203             4:kfbz:Krajská knihovna Františka Bartoše ve Zlíně:http\://dlib.kfbz.cz/:1
204             4:nkp:Národní knihovna:http\://kramerius5.nkp.cz/:1
205             4:cuni_fsv:Univerzita Karlova v Praze - Fakulta sociálních věd:http\://kramerius.fsv.cuni.cz/:1
206             4:ntk:Národní technická knihovna:http\://kramerius.techlib.cz/:1
207             4:svkkl:Středočeská vědecká knihovna v Kladně:http\://kramerius.svkkl.cz/:1
208             4:lmda:Lesnický a myslivecký digitální archiv:http\://lmda.silvarium.cz/:1
209             4:uzei:Knihovna Antonína Švehly:http\://kramerius.uzei.cz/:1
210             4:ukb:Univerzitná knižnica v Bratislave:http\://pc139.ulib.sk/:1
211             4:slu:Slezská univerzita v Opavě:http\://kramerius.slu.cz/:1
212             4:svkos:Moravskoslezská vědecká knihovna v Ostravě:http\://camea.svkos.cz/:1
213             4:vugtk:Výzkumný ústav geodetický, topografický a kartografický:http\://knihovna-test.vugtk.cz/:1
214             4:vse:Vysoká škola ekonomická v Praze:http\://kramerius.vse.cz/:1
215             4:nlk:Národní lékařská knihovna v Praze:https\://kramerius.medvik.cz/:1
216             4:mendelu:Mendelova univerzita v Brně:http\://kramerius4.mendelu.cz/:1
217             4:kkvhb:Krajská knihovna Vysočiny v Havlíčkově Brodě:http\://kramerius.kkvysociny.cz/:1
218             4:cdk:Česká Digitální knihovna:http\://cdk.lib.cas.cz/:1
219             4:nmzv:Národní muzeum - Zvuk:http\://kramerius.nm.cz/:1
220             4:npmk:Národní pedagogické muzeum J. A. Komenského:https\://kramerius.npmk.cz/:1
221             4:nulk:Národní ústav lidové kultury:https\://kramerius.nulk.cz/:1
222             4:hmt:Husitské muzeum v Táboře:http\://kramerius.husitskemuzeum.cz/:1