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