Catmandu-MAB2-0.24000755001750001750 013636113757 13323 5ustar00joroljorol000000000000README100644001750001750 171113636113757 14264 0ustar00joroljorol000000000000Catmandu-MAB2-0.24NAME Catmandu::MAB2 - Catmandu modules for working with MAB2 data. DESCRIPTION Catmandu::MAB2 provides methods to work with MAB2 data within the Catmandu framework. See Catmandu::Introduction and http://librecat.org/ for an introduction into Catmandu. CATMANDU MODULES * Catmandu::Importer::MAB2 * Catmandu::Exporter::MAB2 * Catmandu::Importer::SRU::Parser::mabxml * Catmandu::Fix::mab_map INTERNAL MODULES Parser and writer for MAB2 data. * MAB2::Parser::Disk * MAB2::Parser::RAW * MAB2::Parser::XML * MAB2::Writer::Handle * MAB2::Writer::Disk * MAB2::Writer::RAW * MAB2::Writer::XML AUTHOR Johann Rolschewski COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Changes100644001750001750 457513636113757 14712 0ustar00joroljorol000000000000Catmandu-MAB2-0.24Changelog for Catmandu-MAB2 0.24 2020-03-23 12:05:17 CET - merge pr#11 in master 0.23 2020-03-23 11:52:57 CET - gh#13 fix SRU test 0.22 2019-03-08 17:35:44 CET - gh#10 fix parsing of subfields 0.21 2017-10-16 17:44:43 CEST - warn and skip faulty fields - fix regex for record fields - add Catmandu::Error exceptions and more tests 0.20 2017-07-15 13:47:56 CEST - gh#9: MYMETA must not be included 0.19 2017-07-09 15:05:56 CEST - fix version number of required dependency 0.18 2017-07-09 13:08:05 CEST - set required version of Catmandu::SRU 0.17 2017-07-08 19:35:40 CEST - get XML as string 0.16 2017-07-06 17:33:02 CEST - set perl v5.14.0 as minimum version - add MYMETA.* files 0.15 2017-06-30 17:26:58 CEST - Delete perl-5.12 from .travis.yml due to Dist::Zilla build fails - Update and fix .travis.yml - Upgrading Catmandu using new group binds for mab_each 0.14 2016-03-18 17:14:18 CET - Fix issue with leader for MAB2::Writer 0.13 2015-11-24 11:31:59 CET - ISSUE-8: Test 07-mab-each.t fails - Remove outdated Makefile.PL 0.12 2015-10-01 10:51:44 CEST - fix version 0.11 2015-09-30 15:35:54 CEST - ISSUE-7: Fix mab_each single execution bug 0.10 2015-09-28 16:50:23 CEST - ISSUE-6: drop PerlIO layer for XML importer 0.09 2015-09-04 09:30:02 CEST - add badges - update build files - bugfix for Version numbers 0.08 2015-09-03 19:43:46 CEST - add mab_each, mab_match and pluck to FIX - switch to Dist::Milla 0.07 2014-06-02 - transform Fix function to new syntax - fix documentation - fix .gitignore - edit dist.ini 0.06 2014-04-04 - XML parser should ignore PerlIO layers - documentation 0.05 2014-03-01 - added SRU importer 0.04 2014-01-31 - better handling of record and (sub)field separators - bugfix for MAB2::Writer::Disk - added mab2 converter script - added test status to README - more documentation 0.03 2013-12-18 - added Parser and Writer for MAB2 Diskette data 0.02 2013-11-22 - added file encoding - added XML declaration and collection handling - minor correction of fix - added "use warnings;" - added Moo to prerequisites - added CHANGES file to distribution 0.01 2013-10-01 - added record separator to test data - perltidy - removed start() call from build - added some modules - added Catmandu exporter for MAB2 data - added Makefile.pl - removed github plugins - correction of github URL - initial commit LICENSE100644001750001750 4376213636113757 14445 0ustar00joroljorol000000000000Catmandu-MAB2-0.24This software is copyright (c) 2013 by Johann Rolschewski . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2013 by Johann Rolschewski . This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2013 by Johann Rolschewski . This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End cpanfile100755001750001750 57213636113757 15077 0ustar00joroljorol000000000000Catmandu-MAB2-0.24requires 'perl', 'v5.14.0'; requires 'Catmandu', '1.20'; requires 'Catmandu::SRU', '0.427'; requires 'Readonly'; requires 'Moo'; requires 'Moo::Role'; requires 'XML::LibXML::Reader'; on 'test', sub { requires 'Test::Exception', '0.32'; requires 'Test::More', '1.001003'; requires 'Test::Warn', 0; requires 'Test::Pod', 0; requires 'Software::License','0.103010'; }; dist.ini100644001750001750 6613636113757 15012 0ustar00joroljorol000000000000Catmandu-MAB2-0.24author = Johann Rolschewski [@Milla] Build.PL100644001750001750 26213636113757 14660 0ustar00joroljorol000000000000Catmandu-MAB2-0.24# This Build.PL for Catmandu-MAB2 was generated by Dist::Zilla::Plugin::ModuleBuildTiny 0.015. use strict; use warnings; use v5.14.0; use Module::Build::Tiny 0.034; Build_PL(); META.yml100644001750001750 224313636113757 14656 0ustar00joroljorol000000000000Catmandu-MAB2-0.24--- abstract: 'Catmandu modules for working with MAB2 data.' author: - 'Johann Rolschewski ' build_requires: Software::License: '0.103010' Test::Exception: '0.32' Test::More: '1.001003' Test::Pod: '0' Test::Warn: '0' configure_requires: Module::Build::Tiny: '0.034' dynamic_config: 0 generated_by: 'Dist::Milla version v1.0.20, Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Catmandu-MAB2 no_index: directory: - eg - examples - inc - share - t - xt requires: Catmandu: '1.20' Catmandu::SRU: '0.427' Moo: '0' Moo::Role: '0' Readonly: '0' XML::LibXML::Reader: '0' perl: v5.14.0 resources: bugtracker: https://github.com/jorol/Catmandu-MAB2/issues homepage: https://github.com/jorol/Catmandu-MAB2 repository: https://github.com/jorol/Catmandu-MAB2.git version: '0.24' x_contributors: - 'Johann Rolschewski ' - 'Mohammad S Anwar ' x_generated_by_perl: v5.28.1 x_serialization_backend: 'YAML::Tiny version 1.73' x_static_install: 1 MANIFEST100644001750001750 150713636113757 14540 0ustar00joroljorol000000000000Catmandu-MAB2-0.24# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012. Build.PL Changes LICENSE MANIFEST META.json META.yml README cpanfile dist.ini lib/Catmandu/Exporter/MAB2.pm lib/Catmandu/Fix/Bind/mab_each.pm lib/Catmandu/Fix/Condition/mab_match.pm lib/Catmandu/Fix/mab_map.pm lib/Catmandu/Importer/MAB2.pm lib/Catmandu/Importer/SRU/Parser/mabxml.pm lib/Catmandu/MAB2.pm lib/MAB2/Parser/Disk.pm lib/MAB2/Parser/RAW.pm lib/MAB2/Parser/XML.pm lib/MAB2/Writer/Disk.pm lib/MAB2/Writer/Handle.pm lib/MAB2/Writer/RAW.pm lib/MAB2/Writer/XML.pm script/mab2_convert.pl t/00-load.t t/01-parser.t t/02-importer.t t/03-fix.t t/04-exporter.t t/05-writer.t t/06-sru.t t/07-mab-each.t t/08-mab-map.t t/author-pod-syntax.t t/lib/MockHTTPClient.pm t/mab2.dat t/mab2.xml t/mab2_faulty.dat t/mab2disk.dat t/mab2disk_faulty.dat t/sru_mabxml.xml META.json100644001750001750 405613636113757 15032 0ustar00joroljorol000000000000Catmandu-MAB2-0.24{ "abstract" : "Catmandu modules for working with MAB2 data.", "author" : [ "Johann Rolschewski " ], "dynamic_config" : 0, "generated_by" : "Dist::Milla version v1.0.20, Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Catmandu-MAB2", "no_index" : { "directory" : [ "eg", "examples", "inc", "share", "t", "xt" ] }, "prereqs" : { "configure" : { "requires" : { "Module::Build::Tiny" : "0.034" } }, "develop" : { "requires" : { "Dist::Milla" : "v1.0.20", "Test::Pod" : "1.41" } }, "runtime" : { "requires" : { "Catmandu" : "1.20", "Catmandu::SRU" : "0.427", "Moo" : "0", "Moo::Role" : "0", "Readonly" : "0", "XML::LibXML::Reader" : "0", "perl" : "v5.14.0" } }, "test" : { "requires" : { "Software::License" : "0.103010", "Test::Exception" : "0.32", "Test::More" : "1.001003", "Test::Pod" : "0", "Test::Warn" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/jorol/Catmandu-MAB2/issues" }, "homepage" : "https://github.com/jorol/Catmandu-MAB2", "repository" : { "type" : "git", "url" : "https://github.com/jorol/Catmandu-MAB2.git", "web" : "https://github.com/jorol/Catmandu-MAB2" } }, "version" : "0.24", "x_contributors" : [ "Johann Rolschewski ", "Mohammad S Anwar " ], "x_generated_by_perl" : "v5.28.1", "x_serialization_backend" : "Cpanel::JSON::XS version 4.08", "x_static_install" : 1 } t000755001750001750 013636113757 13507 5ustar00joroljorol000000000000Catmandu-MAB2-0.2403-fix.t100644001750001750 150713636113757 15045 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse strict; use warnings; use Test::More; use Catmandu; use Catmandu::Fix; use Catmandu::Importer::MAB2; my $fixer = Catmandu::Fix->new(fixes => [ 'mab_map("LDR", "leader")', 'mab_map("001", "id")', 'mab_map("004", "date")', 'mab_map("406[b]jb", "coverage")', 'mab_map("705ea", "subject", -pluck => 1)', 'remove_field("record")', 'remove_field("_id")']); my $importer = Catmandu::Importer::MAB2->new(file => "./t/mab2.dat", type=> "RAW"); my $records = $fixer->fix($importer)->to_array(); ok( $records->[0]->{'leader'} eq '02020nM2.01200024 h', 'fix leader' ); ok( $records->[0]->{'id'} eq '47918-4', 'fix id' ); ok( $records->[0]->{'date'} eq '20110211', 'fix date' ); ok( $records->[0]->{'coverage'} eq '1983', 'fix coverage' ); is( $records->[1]->{'subject'}, 'DDC22ger775.05', 'fix & pluck subfields'); done_testing;06-sru.t100644001750001750 256113636113757 15074 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse strict; use warnings; use Test::More; use Test::Exception; use Catmandu::Importer::SRU; use Catmandu::Importer::SRU::Parser::mabxml; use FindBin; use lib "$FindBin::Bin/lib"; use MockHTTPClient; note "Catmandu::Importer::SRU::Parser::mabxml"; { my %attrs = ( base => 'http://www.unicat.be/sru', query => 'sru_mabxml.xml', recordSchema => 'mabxml', http_client => MockHTTPClient->new, ); my $importer = Catmandu::Importer::SRU->new(%attrs); isa_ok( $importer, 'Catmandu::Importer::SRU' ); can_ok( $importer, 'each' ); can_ok( $importer, 'to_array' ); can_ok( $importer, 'first' ); is( $importer->url, 'http://www.unicat.be/sru?version=1.1&operation=searchRetrieve&query=sru_mabxml.xml&recordSchema=mabxml&startRecord=1&maximumRecords=10', 'query url' ); my $mabparser = Catmandu::Importer::SRU::Parser::mabxml->new; my @parsers = ( 'mabxml', '+Catmandu::Importer::SRU::Parser::mabxml', $mabparser, sub { $mabparser->parse( $_[0] ); } ); foreach my $parser (@parsers) { my $importer = Catmandu::Importer::SRU->new( %attrs, parser => $parser ); ok( my $obj = $importer->first, 'parse mab' ); ok( exists $obj->{_id}, 'mab has _id' ); ok( exists $obj->{record}, 'mab has record' ); } } done_testing; mab2.dat100644001750001750 5677313636113757 15224 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t02020nM2.01200024 h001 47918-4002a19991118003 20101112110154004 20110211016 550915044‡DNB025a010420517025o85117764025z47918-4026 ZDB47918-4030 b|zucz|z|||37036aXA-DE037bger050 a|a|||||||||||052 pmg||||ze||||z|070 9001070aDNB070b1242073 24,1331 C't335 Magazin für Computer-Technik370aMagazin für Computer-Technik370aCt405 Nachgewiesen 1983 -406bj1983410 Hannover412 Heise425b1983523 Ersch. im Abonnement auch zusammen mit d. CD-ROM c't-plus-rom. - Periodizität: 14-tägl.527z1307745-4 CD-ROM-Ausg. --->‡C't-ROM527z1357019-5 Disketten-Ausg. --->‡C't-Sammeldiskette527z1417097-8 CD-ROM-Ausg. --->‡C't-plus-rom527z2031802-9 Online-Ausg. --->‡C't529z2015583-9 Beil. 1997 u. 2000 - 2001 --->‡C't / Freeware, Shareware529z1480287-9 Beil. 1998 - 1999 --->‡C't / Shareware, Freeware529z2088571-4 Beil. ab 2002 --->‡Software-Kollektion529z54251-9 Beil. --->‡C't / Special529z2233486-5 Ab 2005 Beil. --->‡C't / Ratgeber529z2495944-3 Ab 2009 Beil. --->‡C't / Kompakt529z2490138-6 Ab 2009 Beil. --->‡C't / Medien529z2470478-7 Ab 2009 Beil. --->‡C't / Extra529z2564783-0 Ab 2009 Beil. --->‡C't / Special / Digitale Fotografie529z2563469-0 Ab 2010 Beil. --->‡C't digital photography537 (üa/Z)542aISSN 0724-8679542z: DM 6.00 (Einzelh.), DM 58.00 (jährl.)545aaISSN 0724-8679 = C't574 84,A27,0450673b2013198-7 Hannover700 |28‡DNB700 |004‡DNB700l|820700 |004‡ZDB700 |070‡ZDB700z|795700z|100700z|z101710aMikrocomputer902s 4115533-6 Personalcomputer902s 4067488-5 Zeitschrift904aDE-600‡DE-600907s 4039206-5 Mikrocomputer907s 4067488-5 Zeitschrift909aDE-600‡DE-600912s 4148885-4 Datentechnik912s 4067488-5 Zeitschrift914aDE-600‡DE-600917s 4070083-5 Computer917s 4148885-4 Datentechnik917f 1|Zeitschrift919aDE-600‡DE-600 00907nM2.01200024 h001 54251-9002a19991118003 20100721152440004 20110211025a010476520025o85225698025z54251-9026 ZDB54251-9030 b|zucz|z|||35036aXA-DE037bger050 a|a|||||||||||052 p||||||zz||||z|070 9001070aDNB070b9001076 ||a|||085xaSpecial310 C't / Special331 C't360 Special370aCt370aSpecial405 1.1985 -406bd1j1985410 Hannover412 Heise425b1985435 30 cm437 DVD-ROMs als Beil.523 Periodizität: unregelmäßig530z47918-4 Beil. zu --->‡C't533z2564783-0 Daraus hervorgeg. --->‡C't / Special / Digitale Fotografie537 (üa/Z) 89!101b!(21-07-10)(NA Special Digitale Fotografie)542zEUR 8.90 (DE, Einzelh.), EUR 9.90 (AT, Einzeh.), sfr 16.50 (Einzelh.)574 09,A32,1579673b2013198-7 Hannover700 |770‡DNB700 |004‡ZDB700z|795705 a775.05c775eDDC22gerf05902s 4763160-0 Digitale Photographie902f 1|Zeitschrift904aDE-101‡DE-101 00914nM2.01200024 h001 246797-5002a19991119003 20100413093150004 20110211016 551547758‡DNB025a011495790025o85138566025z246797-5026 ZDB246797-5030 b|zucz|z|||37036aXA-DE037bger050 a|a|||||||||||052 pmg||||zm||||z|070 9001070aDNB070b9001076 ||a|||331 UNIX-Magazin335 die unabhängige Zeitschrift für alle Unix-Anwender370aUNIX405 Nachgewiesen 1988 - 1992410 Haar412 Markt & Technik Verl.425b1988425c1992505 Nebent.: UNIX523 Periodizität: monatl.533z1013182-6 Aufgeg. in --->‡IX537 82!542aISSN 0934-8476542z: DM 7.50 (Einzelh.), sfr 7.50 (Einzelh.), S 65.00 (Einzelh.), DM 84.00 (jährlich), DM 60.00 (jährlich, Studentenabonnement)545aaISSN 0934-8476574 93,A36,0690673b2012840-X Haar700 |28‡DNB700 |78‡DNB700 |004‡DNB700d|30m700 |070‡ZDB700 |004‡ZDB700z|100700z|795700z|z632902s 4061835-3 UNIX902f 1|Zeitschrift904aDE-101‡DE-101 02151nM2.01200024 h001 1013182-6002a19991120003 20110201135054004 20110211016 551616849‡DNB025a015462226025o183346356025z1013182-6026 ZDB1013182-6030 b|zucz|z|||37036aXA-DE037bger050 a|a|||||||||||052 pmg||||zmb|||z|070 9001070aDNB070b9001331 IX335 Magazin für professionelle Informationstechnik370aIX und UNIX-Magazin370aMagazin für professionelle Informationstechnik370aCeBIT-Special370aIX extra370aIX + UNIX-Magazin370aMultiuser-Multitasking-Magazin405 1988,11; 1989,2 -406bj1988410 Hannover412 Heise425b1988431 Index 1988/90 in: 1990,7507 Nebent. 1993,1-4: IX + UNIX-Magazin. - Zusatz anfangs: Multiuser-Multitasking-Magazin523 Ersch.-Beginn mit H. 11; Periodizität: monatl., anfangs alle 2 Monate524 Ungezählte Beil. ab 2002: CeBit-Special; ab 2004,11: IX extra527z1323573-4 CD-ROM-Ausg. --->‡IX pressed / Jahresausgabe527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe527z1458314-8 DVD-Ausg. --->‡IX abo+527z2028167-5 Online-Ausg. --->‡IX529z2203242-3 Sonderh. --->‡IX / Special529z2511088-3 Ab 2009 Sonderh. --->‡IX kompakt529z2564134-7 Ab 2010 Themenbeil. --->‡Rechenzentren und Infrastruktur529z2586057-4 Ab 2011 Sonderh. --->‡IX Developer531z246797-5 Darin aufgeg. --->‡UNIX-Magazin537 Kopie(evtl. Split vgl. Abl.)542aISSN 0935-9680542z: DM 7.50 (Einzelnr.), S 62.00 (Einzelnr.), sfr 7.50 (Einzelnr.), DM 40.50 (jährl.), DM 36.30 (jährl., für Studenten)545aaISSN 1612-1392574 89,A44,0451673b2013198-7 Hannover700 |28‡DNB700 |004‡DNB700d|30m700l|820700 |050‡ZDB700 |070‡ZDB700 |004‡ZDB700z|100700z|795700z|z632902s 4061835-3 UNIX902f 1|Zeitschrift904aDE-101‡DE-101907s 4133249-0 Multitasking907s 4067488-5 Zeitschrift909aDE-600‡DE-600912s 4224999-5 Mehrplatzsystem912s 4067488-5 Zeitschrift914aDE-600‡DE-600917s 4011152-0 Datenverarbeitung917s 4067488-5 Zeitschrift919aDE-600‡DE-600922s 4061835-3 UNIX922s 4067488-5 Zeitschrift924aDE-600‡DE-600 01693nM2.01200024 h001 1307745-4002a19991121003 20110203010725004 20110211016 957151225‡DNB025a018119204025o632852812025z1307745-4026 ZDB1307745-4030 b|zucz|z|||37036aXA-DE037bger050 ||||||||d|||||052 pmg||||za||||z|058 co||||||||||||070 9001070aDNB070b9999076 ||a|||331 C't-ROM334 Elektronische Ressource335 Wissen zum Abruf370aCt-ROM370aWissen zum Abruf405 Nachgewiesen 1983/89(2003); 1990/91(1996); 1992/93(1995); 1994(1995) -410 Hannover412 Heise425b1995523 Periodizität: jährl. - DVD kumuliert unregelmäßig in Mehrjahresabständen, z.B.: 1983/89 u. 1990/2003; Blu-ray-disc-Kumulation ab 1983-2008527z47918-4 Druckausg. --->‡C't527z2031802-9 Online-Ausg. --->‡C't527z1417097-8 Weitere CD-ROM-/DVD-Ausg. --->‡C't-plus-rom537 4!B208!82(läuft weiter, 7/98) (üa/Z)574 00,A16,1001652aaOptischer Datenträger653 aDVDs + CD-ROMs + Blu-ray DiscseBeil.654 aSystemvoraussetzung: HTML-3.0-fähiger WWW-Browser; ab 2000: Pentium oder neuer; 32 MB Arbeitsspeicher; Windows 9x, Windows ME, Windows NT, Windows 2000, Windows XP; Linux, Macintosh und OS/2; 8fach CD-ROM-Laufwerk673b2013198-7 Hannover700 |004‡DNB700d|30700 |004‡ZDB700 |070‡ZDB700z|795700z|100700z|z101902s 4070083-5 Computer902f 1|Zeitschrift902f 1|CD-ROM904aDE-101‡DE-101907s 4148885-4 Datentechnik907f 1|Zeitschrift907f 1|CD-ROM909aDE-600‡DE-600912s 4070083-5 Computer912s 4148885-4 Datentechnik912f 1|Zeitschrift912f 1|CD-ROM914aDE-600‡DE-600917s 4011152-0 Datenverarbeitung917s 4148885-4 Datentechnik917f 1|Zeitschrift917f 1|CD-ROM919aDE-600‡DE-600 01528nM2.01200024 h001 1323573-4002a19991121003 20100713190507004 20110211025a018261485025o634114787025z1323573-4026 ZDB1323573-4030 b|zucz|z|||35036aXA-DE037bger050 ||||||||d|||||052 p||||||za||||z|058 co||||||||||||070 9001070aDNB070b9999076 ||a|||085xa[Jahresausgabe]nElektronische Ressource310 IX pressed / Jahresausgabe331 IX pressed334 Elektronische Ressource360 [Jahresausgabe] [Elektronische Ressource]370a[Jahresausgabe]370aIxpressed405 1994 -406bj1994410 Hannover412 Heise415 Hannover417 eMedia425b1994505 Nebent.: Ixpressed507 Hauptsacht. vom Label523 Periodizität: jährl.527z1013182-6 Druckausg. --->‡IX527z2028167-5 Online-Ausg. --->‡IX527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe537 38M!107!(17-03-09)574 10,A25652aaOptischer Datenträger653 aCD-ROMsd12 cm654 aSystemvoraussetzungen: Pentium oder neuer; 32 MB Arbeitsspeicher; Windows 9x, Windows ME, Windows NT, Windows 2000, Windows XP; Linux, UNIX und Macintosh; 8fach CD-ROM-Laufwerk673b2013198-7 Hannover700 |004‡DNB700 |070‡ZDB700 |004‡ZDB700z|100700z|795700z|z632705 a005.43205c005.432eDDC22gerf05902s 4061835-3 UNIX902f 1|Zeitschrift902f 1|CD-ROM904aDE-101‡DE-101907s 4011152-0 Datenverarbeitung907s 4067488-5 Zeitschrift907s 4139307-7 CD-ROM909aDE-600‡DE-600912s 4061835-3 UNIX912s 4067488-5 Zeitschrift912s 4139307-7 CD-ROM914aDE-600‡DE-600 00587nM2.01200024 h001 1357019-5002a19991122003 20100713190747004 20110211025a018559069025z1357019-5026 ZDB1357019-5030 b|zucz|z|||37036aXA-DE037bger050 ||||||||b|||||052 pmg||||zm||||z|058 cj||||||||||||070 9001070aDNB070b9999331 C't-Sammeldiskette334 Elektronische Ressource405 Nachgewiesen 1997 -410 Hannover412 Heise425b1997523 Periodizität: monatl.527z47918-4 Druckausg. --->‡C't527z2031802-9 Online-Ausg. --->‡C't537 (üa/Z)652aaDiskette673b2013198-7 Hannover700 |004‡ZDB700 |070‡ZDB700z|795700z|100700z|z101 01157nM2.01200024 h001 1417097-8002a19991122003 20100924172919004 20110211025a019116519025o613546507025z1417097-8026 ZDB1417097-8030 b|zucz|z|||37036aXA-DE037bger050 ||||||||d|||||052 pmg||||zf||||z|058 co||||||||||||070 9001070aDNB070b9999076 ||a|||331 C't-plus-rom334 Elektronische Ressource335 Wissen zum Abruf ; Jahres-DVD ; Ausgaben ...370act-plus-rom370aWissen zum Abruf370aHalbjahres-CD370aHalbjahres-DVD405 1997 -406bj1997410 Hannover412 Heise425b1997507 Zusatz bis 2008,1: Halbjahres-CD. - Zusatz ab 2009,1 abwechselnd auch: Halbjahres-DVD510 Ausg. für Abonnenten der Druckausg.523 Bis 2008,1 CD-ROM-Ausg., ab 2008,2 DVD-ROM-Ausg.; Periodizität: halbjährl.527z47918-4 Druckausg. --->‡C't527z2031802-9 Online-Ausg. --->‡C't527z1307745-4 Weitere CD-ROM-/DVD-Ausg. --->‡C't-ROM537 (üa/Z)574 08,A01,0030652aaOptischer Datenträger653 aDVDs + CD-ROMsd12 cm673b2013198-7 Hannover700 |004‡DNB700 |004‡ZDB700 |070‡ZDB700z|795700z|100700z|z101705 a004c004eDDC22ger902s 4070083-5 Computer902f 1|Zeitschrift902f 1|CD-ROM904aDE-101‡DE-101 01000nM2.01200024 h001 1458314-8002a19991122003 20110203011020004 20110211025a019517408025o264086402025z1458314-8026 ZDB1458314-8030 b|zucz|z|||37036aXA-DE037bger050 ||||||||d|||||052 p||||||zz||||z|058 co||||||||||||070 9001070aDNB070b9999331 IX abo+334 Elektronische Ressource335 schneller Zugriff370aIX abo plus405 1997 -410 Hannover412 Heise425b1997523 Anfangs CD-ROM-Ausg.; später DVD-Ausg.527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe527z1013182-6 Druckausg. --->‡IX527z2028167-5 Online-Ausg. --->‡IX652aaOptischer Datenträger653 aCD-ROMs + DVDs673b2013198-7 Hannover700l|820700 |070‡ZDB700 |004‡ZDB700z|100700z|795700z|z632902s 4061835-3 UNIX902s 4067488-5 Zeitschrift902s 4139307-7 CD-ROM902f 1|DVD-ROM904aDE-600‡DE-600907s 4011152-0 Datenverarbeitung907s 4067488-5 Zeitschrift907s 4139307-7 CD-ROM909aDE-600‡DE-600 00704nM2.01200024 h001 1480287-9002a19991122003 20090508183721004 20110211025a019732430025o174454499025z1480287-9026 ZDB1480287-9030 b|zucz|z|||35036aXA-DE037bger050 ||||||||d|||||052 p||||||zz||||z|058 co||||||||||||070 9001070aDNB070b9999310 C't / Shareware, Freeware331 C't334 Elektronische Ressource360 Shareware, Freeware370aShareware, Freeware405 1998 - 1999410 Hannover412 Heise425b1998425c1999530z47918-4 Beil. zu --->‡C't532z2015583-9 Vorg. u. Forts. --->‡C't / Freeware, Shareware537 (üa/Z) 107!(14-09-06)652aaOptischer Datenträger653 aCD-ROMs673b2013198-7 Hannover700 |070‡ZDB700 |004‡ZDB700z|100700z|795700z|z101 00805nM2.01200024 h001 2015583-9002a20000606003 20090508184158004 20110211025a020475411025o174460930025z2015583-9026 ZDB2015583-9030 b|zucz|z|||35036aXA-DE037bger050 ||||||||d|||||052 p||||||zf||||z|058 co||||||||||||070 0464070aDNB070b9999310 C't / Freeware, Shareware331 C't334 Elektronische Ressource360 Freeware, Shareware370aFreeware, Shareware405 Nachgewiesen 1997; 2000 - 2001410 Hannover412 Heise425b1997425c2001523 Periodizität: 2x jährl.530z47918-4 Beil. zu --->‡C't532z1480287-9 1998 - 1999 --->‡C't / Shareware, Freeware533z2088571-4 Forts. --->‡Software-Kollektion537 700!(07-05-04) (üa/Z)652aaOptischer Datenträger653 aCD-ROMs673b2013198-7 Hannover700 |004‡ZDB700 |070‡ZDB700z|795700z|100700z|z101 01650nM2.01200024 h001 2028167-5002a20001023003 20110114105521004 20110211025a020925018025o225248387025z2028167-5026 ZDB2028167-5030 b|zucz|z|||37036aXA-DE037bger050 ||||||||g|||||052 pmg||||zm||||z|058 cr||||||||||||070 0089070aDNB070b9001078eZDB-5-WVT331 IX334 Elektronische Ressource335 Magazin für professionelle Informationstechnik370aMagazin für professionelle Informationstechnik370aIX405 Nachgewiesen 1994 -410 Hannover412 Heise415 München417 GBI425b1994507 Gesehen am 12.03.08. - Datenbank-Kurzbezeichnung: IX523 Volltext auch als Teil einer Datenbank verfügbar527z1323573-4 CD-ROM-Ausg. --->‡IX pressed / Jahresausgabe527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe527z1458314-8 DVD-ROM-Ausg. --->‡IX abo+527z1013182-6 Druckausg. --->‡IX537 355!URL-Änderung(10-04-03);100!z LF gelöscht(12-03-08)542aISSN 0935-9680652aaOnline-Ressource653 aOnline-Ressource655 uhttp://www.bibliothek.uni-regensburg.de/ezeit/?2028167xEZB655 uhttp://www.heise.de/ix/xVerlag673b2013198-7 Hannover700 |070‡ZDB700 |004‡ZDB700z|100700z|795700z|z632902s 4026926-7 Informationstechnik902s 4511937-5 Online-Publikation904aDE-600‡DE-600907s 4133249-0 Multitasking907s 4067488-5 Zeitschrift909aDE-600‡DE-600912s 4224999-5 Mehrplatzsystem912s 4067488-5 Zeitschrift914aDE-600‡DE-600917s 4011152-0 Datenverarbeitung917s 4067488-5 Zeitschrift919aDE-600‡DE-600922s 4061835-3 UNIX922s 4067488-5 Zeitschrift924aDE-600‡DE-600 01516nM2.01200024 h001 2031802-9002a20001128003 20100324112006004 20110211025a021050880025o314471122025z2031802-9026 ZDB2031802-9030 b|zucz|z|||37036aXA-DE037bger050 ||||||||g|||||052 pmg||||zm||||z|058 cr||||||||||||070 0089070aDNB070b9001078eZDB-5-WVT331 C't334 Elektronische Ressource370aCt370aC't : Magazin für Computer-Technik405 Nachgewiesen 1990 -410 Hannover412 Heise415 München417 GBI425b1990505 Nebent.: C't : Magazin für Computer-Technik507 Gesehen am 13.09.06523 Volltext nur als Teil einer Datenbank verfügbar. - Periodizität monatl., ab 1998 zweimal im Monat527z47918-4 Druckausg. --->‡C't527z1307745-4 CD-ROM-Ausg. --->‡C't-ROM527z1357019-5 Disketten-Ausg. --->‡C't-Sammeldiskette527z1417097-8 CD-ROM-Ausg. --->‡C't-plus-rom537 (üa/Z)! (14-09-06)542aISSN 0724-8679652aaOnline-Ressource653 aOnline-Ressource655 uhttp://www.bibliothek.uni-regensburg.de/ezeit/?2031802xEZB655 uhttp://www.heise.de/ct/inhverz/xVerlag; Inhaltsverz., nur einzelne Artikel Volltext655 uhttp://www.gbi.dexAgentur673b2013198-7 Hannover673b1006792-9 München700 |004‡ZDB700 |070‡ZDB700z|795700z|100700z|z101902s 4115533-6 Personalcomputer902s 4067488-5 Zeitschrift904aDE-600‡DE-600907s 4039206-5 Mikrocomputer907s 4067488-5 Zeitschrift909aDE-600‡DE-600912s 4148885-4 Datentechnik912s 4067488-5 Zeitschrift914aDE-600‡DE-600 00852nM2.01200024 h001 2088571-4002a20020913003 20100618141851004 20110211016 96740391X‡DNB025a023885831025o175034421025z2088571-4026 ZDB2088571-4030 b|zucz|z|||37036aXA-DE037bger050 ||||||||d|||||052 p||||||zz||||z|058 co||||||||||||070 0465070aDNB070b1241076 ||a|||331 Software-Kollektion334 Elektronische Ressource405 2002 -406bj2002410 Hannover412 Heise425b2002507 Hauptsacht. vom Label530z47918-4 Beil. zu --->‡C't531z2015583-9 Vorg. --->‡C't / Freeware, Shareware537 (üa/Z)574 03,A23,0681652aaOptischer Datenträger653 aCD-ROMs + DVDsd12 cm673b2013198-7 Hannover700 |28‡DNB700 |004‡DNB700 |004‡ZDB700 |070‡ZDB700z|795700z|100700z|z101902s 4148885-4 Datentechnik902s 4067488-5 Zeitschrift902s 4139307-7 CD-ROM904aDE-600‡DE-600 00843nM2.01200024 h001 2563469-0002a20100713003 20101116223036004 20110211025a1004379897025z2563469-0026 ZDB2563469-0030 b|zucz|z|||37036aXA-DE037beng050 a|a|||||||||||052 p||||||zz||||z|070 1241070aDNB070b9999076 ||a|||331 C't digital photography370aDigital photography405 1.2010 -406bd1j2010410 Hannover412 Heise425b2010435 30 cm523 Periodizität: unregelmäßig527z2564783-0 Dt. Ausg. --->‡C't / Special / Digitale Fotografie529z2579847-9 DVD-Beil. --->‡C't digital photography / DVD-Beilage530z47918-4 Beil. zu --->‡C't542aISSN 2190-6114545aaISSN 2190-6114 = C't digital photography574 10,A47673b2013198-7 Hannover700 |770‡DNB700 |770‡ZDB705 a775.05c775eDDC22gerf05902s 4763160-0 Digitale Photographie902f 1|Zeitschrift904aDE-101‡DE-101 00571nM2.01200024 h001 2564134-7002a20100716003 20101123213819004 20110211025a1004727917025z2564134-7026 ZDB2564134-7030 b|zucz|z|||37036aXA-DE037bger050 a|a|||||||||||052 pmg||||zq||||z|070 0034070aDNB070b9999076 ||a|||331 Rechenzentren und Infrastruktur335 Komponenten, Kabel, Netzwerke405 2009,1(Dez.); 2010 -406aj2009406bj2010410 Hannover412 Heise425b2009435 28 cm523 Periodizität: 4x jährl.530z1013182-6 Themenbeil. zu --->‡IX537 (üa/Z)673b2013198-7 Hannover700 |004‡DNB700 |050‡ZDB700 |004‡ZDB700z|510 01127nM2.01200024 h001 2564783-0002a20100721003 20101102121703004 20110211025a1004831730025z2564783-0026 ZDB2564783-0030 b|zucz|z|||35036aXA-DE037bger050 a|a|||||||||||052 p||||||zqf|||z|070 1241070aDNB070b1241076 ||a|||085xaSpecial085xaDigitale Fotografie310 C't / Special / Digitale Fotografie331 C't360 Special360 Digitale Fotografie370aSpecial370aDigitale Fotografie405 2009 -406bj2009410 Hannover412 Heise425b2009435 30 cm523 Periodizität: 4x jährl., 2009: halbjährl.527z2564792-1 Dt. Ausg. --->‡C't / Special / Digitale Fotografie / DVD-Beilage527z2563469-0 Engl. Ausg. --->‡C't digital photography529z2564792-1 Beil. --->‡C't / Special / Digitale Fotografie / DVD-Beilage530z47918-4 Beil. zu --->‡C't531z54251-9 Hervorgeg. aus --->‡C't / Special537 (üa/Z)542zEUR 8.90 (DE, Einzelh.), EUR 9.90 (AT, Einzeh.), sfr 16.50 (Einzelh.)574 10,A32673b2013198-7 Hannover700 |770‡DNB700 |770‡ZDB705 a775.05c775eDDC22gerf05902s 4763160-0 Digitale Photographie902f 1|Zeitschrift904aDE-101‡DE-101 00361nM2.01200024 h001 2586057-4002a20101214003 20101214151107004 20110211025a1009079263025z2586057-4026 ZDB2586057-4030 b|zucz|z|||37036aXA-DE037bger050 a|a|||||||||||052 p||||||z|||||||070 0034070aDNB070b0034331 IX Developer405 2011 -410 Hannover412 Heise425b2011530z1013182-6 Sonderh. zu --->‡IX700 |070‡ZDB700 |000‡ZDB 03210nM2.01200024 h001 126275-0002a19991118003 20100916100514004 20110211025a01071605X025z126275-0026 ZDB126275-0030 b|zucz|z|||35036aXA-FR037bfre050 a|ac||||||||||052 zaoup||zdwc||||057 duuu|||uuuu070 9001070aDNB070b0929073 26073 26310 ˜Leœ Figaro 331 ˜Leœ Figaro335 premier quotidien national français370a˜Leœ Figaro / L'Aurore370a˜Leœ Figaro / Dernière heure370a˜Leœ Figaro / Edition de Paris370a˜Leœ Figaro / Edition de Lyon370a˜Leœ Figaro littéraire370a˜Leœ Figaro / Madame370a˜Leœ Figaro / TV magazine370a˜Leœ Figaro / Magazine370a˜Leœ Figaro / ˜Leœ Fig-Eco370a˜Leœ Figaro économie370a˜Leœ Figaro / Économie370a˜Leœ Figaro entreprises / Solutions370a˜Leœ Figaro entreprises / Enquêtes370a˜Leœ Figaro / Réussir370a˜Leœ Figaro / Entreprises & emploi370aL'Aurore405 [1.]1854,2.Apr.-31.Dez = Nr. 1-40; 2.1855,7.Jan. - 13.1866,11.Nov. = Nr. 41-1225; 13.1866,1(16.Nov.) - 24.1877,61(2.März); 23.1877,62(3.März)-365(31.Dez.); 24.1878,1(1.Jan.) - 65.1919.313(10.Nov.); 65.1919,314(2.Dez.) - 74.1927,46(15.Febr.); 102.1927,47(16.Febr.) - 117.1942,271(24.Nov.); 118.1944,23.Aug. - 148.1974,16/17.Nov. = Nr. 1-9383; 1974,18.Nov. -406bj1854410 Paris418 aClermont-Ferrandh1940,183-249418 aLyonh1940,250-1942,271425b1854507 Zeitw. mit sachl. Benennung d. zeitl. versch. Tagesausg.: L'Aurore. - Zeitw. mit sachl. Benennung d. zeitl. versch. Tagesausg.: Quatre, Cinq heures, Dernière heure etc.516 Commission paritaire: 57984523 115.1940,164-182 u. 1942,25.Nov. - 1944,22.Aug. nicht ersch.; teils auch mit Ser.-Zählung; Jg. 23 doppelt gez.; Periodizität: tägl., 1854 - 1855: wöchentl., 1856 - 1866,11.Nov.: 2x wöchentl.; Teile der Tagesaufl. werden mehrmals aktualisiert.; Aufl. 1994 ca.: 557.450524 Zeitw. mit Edition de Paris; Edition de Lyon. - Darin als Teile der Zeitung gez. Wochenbeil. u. Rubriken: cahier 2 bis 1994(fälschl. 1992),1.Dez.: Le Fig-Eco; cahier 3 bis 1992,2.Nov.: Figaro économie, ab 1992,9.Nov. als cahier 2 gez., ab 1994,2.Dez. Forts. d. Rubrik Fig-Eco; TV magazine; Le Figaro magazine; Madame; zeitw.: TV-Radio; ab 1971 Le Figaro littéraire; ab 2001,14.Mai Supplément hebdomadaire du Figaro économie: Le Figaro entreprises / Solutions und Le Figaro entreprises / Enquêtes; später Le Figaro / Entreprises & emploi; ab 2007,12.März: Le Figaro / Réussir527z2412496-5 Digital. Ausg. --->‡˜Leœ figaro529z1260267-x Beil. --->‡˜Leœ figaro de la jeunesse529z1002783-x Beil. --->‡˜L'œ Année du Figaro531z820919-4 Darin aufgeg. --->‡˜Leœ Gaulois532z820942-x 1919,11.Nov.-1.Dez. dafür Streikersatzbl. --->‡˜Laœ presse de Paris700 |070‡ZDB 00587nM2.01200024 h001 1142708-5002a19991121003 20080226134105004 20110211025a016714660025z1142708-5026 ZDB1142708-5030 b|zucz|z|||37036aXA-FR037bfre050 a|ac||||||||||052 z||||||zw||||||057 uuuu|||uuuu070 9001070aDNB070b0001331 ˜Leœ Figaro335 le journal non politique405 1.1826,15.Jan. - 9.1834,1.Dez. = Nr. 1-333; damit Ersch. eingest.410 Paris425b1826425c1834523 Periodizität: wöchentl.527z2412496-5 Digital. Ausg. --->‡˜Leœ figaro537 (üa/Z)610 Mikrofilm-Ausg.610aParis : ACRPP673b1019630-4 Paris700 |070‡ZDB700z|100700z|z101mab2.xml100644001750001750 14646213636113757 15267 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t 47918-4199911182010111211015420110211550915044DNB0104205178511776447918-4ZDB47918-4b|zucz|z|||37XA-DEgera|a|||||||||||pmg||||ze||||z|9001DNB124224,1C'tMagazin für Computer-TechnikMagazin für Computer-TechnikCtNachgewiesen 1983 -1983HannoverHeise1983Ersch. im Abonnement auch zusammen mit d. CD-ROM c't-plus-rom. - Periodizität: 14-tägl.1307745-4 CD-ROM-Ausg. --->C't-ROM1357019-5 Disketten-Ausg. --->C't-Sammeldiskette1417097-8 CD-ROM-Ausg. --->C't-plus-rom2031802-9 Online-Ausg. --->C't2015583-9 Beil. 1997 u. 2000 - 2001 --->C't / Freeware, Shareware1480287-9 Beil. 1998 - 1999 --->C't / Shareware, Freeware2088571-4 Beil. ab 2002 --->Software-Kollektion54251-9 Beil. --->C't / Special2233486-5 Ab 2005 Beil. --->C't / Ratgeber2495944-3 Ab 2009 Beil. --->C't / Kompakt2490138-6 Ab 2009 Beil. --->C't / Medien2470478-7 Ab 2009 Beil. --->C't / Extra2564783-0 Ab 2009 Beil. --->C't / Special / Digitale Fotografie2563469-0 Ab 2010 Beil. --->C't digital photography(üa/Z)ISSN 0724-8679: DM 6.00 (Einzelh.), DM 58.00 (jährl.)ISSN 0724-8679 = C't84,A27,04502013198-7 Hannover|28DNB|004DNB|820|004ZDB|070ZDB|795|100|z101Mikrocomputer 4115533-6 Personalcomputer 4067488-5 ZeitschriftDE-600DE-600 4039206-5 Mikrocomputer 4067488-5 ZeitschriftDE-600DE-600 4148885-4 Datentechnik 4067488-5 ZeitschriftDE-600DE-600 4070083-5 Computer 4148885-4 Datentechnik 1|ZeitschriftDE-600DE-600 54251-91999111820100721152440201102110104765208522569854251-9ZDB54251-9b|zucz|z|||35XA-DEgera|a|||||||||||p||||||zz||||z|9001DNB9001||a|||SpecialC't / SpecialC'tSpecialCtSpecial1.1985 -11985HannoverHeise198530 cmDVD-ROMs als Beil.Periodizität: unregelmäßig47918-4 Beil. zu --->C't2564783-0 Daraus hervorgeg. --->C't / Special / Digitale Fotografie(üa/Z) 89!101b!(21-07-10)(NA Special Digitale Fotografie)EUR 8.90 (DE, Einzelh.), EUR 9.90 (AT, Einzeh.), sfr 16.50 (Einzelh.)09,A32,15792013198-7 Hannover|770DNB|004ZDB|795775.05775DDC22ger05 4763160-0 Digitale Photographie 1|ZeitschriftDE-101DE-101 246797-5199911192010041309315020110211551547758DNB01149579085138566246797-5ZDB246797-5b|zucz|z|||37XA-DEgera|a|||||||||||pmg||||zm||||z|9001DNB9001||a|||UNIX-Magazindie unabhängige Zeitschrift für alle Unix-AnwenderUNIXNachgewiesen 1988 - 1992HaarMarkt & Technik Verl.19881992Nebent.: UNIXPeriodizität: monatl.1013182-6 Aufgeg. in --->IX82!ISSN 0934-8476: DM 7.50 (Einzelh.), sfr 7.50 (Einzelh.), S 65.00 (Einzelh.), DM 84.00 (jährlich), DM 60.00 (jährlich, Studentenabonnement)ISSN 0934-847693,A36,06902012840-X Haar|28DNB|78DNB|004DNB|30m|070ZDB|004ZDB|100|795|z632 4061835-3 UNIX 1|ZeitschriftDE-101DE-101 1013182-6199911202011020113505420110211551616849DNB0154622261833463561013182-6ZDB1013182-6b|zucz|z|||37XA-DEgera|a|||||||||||pmg||||zmb|||z|9001DNB9001IXMagazin für professionelle InformationstechnikIX und UNIX-MagazinMagazin für professionelle InformationstechnikCeBIT-SpecialIX extraIX + UNIX-MagazinMultiuser-Multitasking-Magazin1988,11; 1989,2 -1988HannoverHeise1988Index 1988/90 in: 1990,7Nebent. 1993,1-4: IX + UNIX-Magazin. - Zusatz anfangs: Multiuser-Multitasking-MagazinErsch.-Beginn mit H. 11; Periodizität: monatl., anfangs alle 2 MonateUngezählte Beil. ab 2002: CeBit-Special; ab 2004,11: IX extra1323573-4 CD-ROM-Ausg. --->IX pressed / Jahresausgabe2484905-4 DVD-Ausg. --->IX pressed / Mehrjahresausgabe1458314-8 DVD-Ausg. --->IX abo+2028167-5 Online-Ausg. --->IX2203242-3 Sonderh. --->IX / Special2511088-3 Ab 2009 Sonderh. --->IX kompakt2564134-7 Ab 2010 Themenbeil. --->Rechenzentren und Infrastruktur2586057-4 Ab 2011 Sonderh. --->IX Developer246797-5 Darin aufgeg. --->UNIX-MagazinKopie(evtl. Split vgl. Abl.)ISSN 0935-9680: DM 7.50 (Einzelnr.), S 62.00 (Einzelnr.), sfr 7.50 (Einzelnr.), DM 40.50 (jährl.), DM 36.30 (jährl., für Studenten)ISSN 1612-139289,A44,04512013198-7 Hannover|28DNB|004DNB|30m|820|050ZDB|070ZDB|004ZDB|100|795|z632 4061835-3 UNIX 1|ZeitschriftDE-101DE-101 4133249-0 Multitasking 4067488-5 ZeitschriftDE-600DE-600 4224999-5 Mehrplatzsystem 4067488-5 ZeitschriftDE-600DE-600 4011152-0 Datenverarbeitung 4067488-5 ZeitschriftDE-600DE-600 4061835-3 UNIX 4067488-5 ZeitschriftDE-600DE-600 1307745-4199911212011020301072520110211957151225DNB0181192046328528121307745-4ZDB1307745-4b|zucz|z|||37XA-DEger||||||||d|||||pmg||||za||||z|co||||||||||||9001DNB9999||a|||C't-ROMElektronische RessourceWissen zum AbrufCt-ROMWissen zum AbrufNachgewiesen 1983/89(2003); 1990/91(1996); 1992/93(1995); 1994(1995) -HannoverHeise1995Periodizität: jährl. - DVD kumuliert unregelmäßig in Mehrjahresabständen, z.B.: 1983/89 u. 1990/2003; Blu-ray-disc-Kumulation ab 1983-200847918-4 Druckausg. --->C't2031802-9 Online-Ausg. --->C't1417097-8 Weitere CD-ROM-/DVD-Ausg. --->C't-plus-rom4!B208!82(läuft weiter, 7/98) (üa/Z)00,A16,1001Optischer DatenträgerDVDs + CD-ROMs + Blu-ray DiscsBeil.Systemvoraussetzung: HTML-3.0-fähiger WWW-Browser; ab 2000: Pentium oder neuer; 32 MB Arbeitsspeicher; Windows 9x, Windows ME, Windows NT, Windows 2000, Windows XP; Linux, Macintosh und OS/2; 8fach CD-ROM-Laufwerk2013198-7 Hannover|004DNB|30|004ZDB|070ZDB|795|100|z101 4070083-5 Computer 1|Zeitschrift 1|CD-ROMDE-101DE-101 4148885-4 Datentechnik 1|Zeitschrift 1|CD-ROMDE-600DE-600 4070083-5 Computer 4148885-4 Datentechnik 1|Zeitschrift 1|CD-ROMDE-600DE-600 4011152-0 Datenverarbeitung 4148885-4 Datentechnik 1|Zeitschrift 1|CD-ROMDE-600DE-600 1323573-41999112120100713190507201102110182614856341147871323573-4ZDB1323573-4b|zucz|z|||35XA-DEger||||||||d|||||p||||||za||||z|co||||||||||||9001DNB9999||a|||[Jahresausgabe]Elektronische RessourceIX pressed / JahresausgabeIX pressedElektronische Ressource[Jahresausgabe] [Elektronische Ressource][Jahresausgabe]Ixpressed1994 -1994HannoverHeiseHannovereMedia1994Nebent.: IxpressedHauptsacht. vom LabelPeriodizität: jährl.1013182-6 Druckausg. --->IX2028167-5 Online-Ausg. --->IX2484905-4 DVD-Ausg. --->IX pressed / Mehrjahresausgabe38M!107!(17-03-09)10,A25Optischer DatenträgerCD-ROMs12 cmSystemvoraussetzungen: Pentium oder neuer; 32 MB Arbeitsspeicher; Windows 9x, Windows ME, Windows NT, Windows 2000, Windows XP; Linux, UNIX und Macintosh; 8fach CD-ROM-Laufwerk2013198-7 Hannover|004DNB|070ZDB|004ZDB|100|795|z632005.43205005.432DDC22ger05 4061835-3 UNIX 1|Zeitschrift 1|CD-ROMDE-101DE-101 4011152-0 Datenverarbeitung 4067488-5 Zeitschrift 4139307-7 CD-ROMDE-600DE-600 4061835-3 UNIX 4067488-5 Zeitschrift 4139307-7 CD-ROMDE-600DE-600 1357019-51999112220100713190747201102110185590691357019-5ZDB1357019-5b|zucz|z|||37XA-DEger||||||||b|||||pmg||||zm||||z|cj||||||||||||9001DNB9999C't-SammeldisketteElektronische RessourceNachgewiesen 1997 -HannoverHeise1997Periodizität: monatl.47918-4 Druckausg. --->C't2031802-9 Online-Ausg. --->C't(üa/Z)Diskette2013198-7 Hannover|004ZDB|070ZDB|795|100|z101 1417097-81999112220100924172919201102110191165196135465071417097-8ZDB1417097-8b|zucz|z|||37XA-DEger||||||||d|||||pmg||||zf||||z|co||||||||||||9001DNB9999||a|||C't-plus-romElektronische RessourceWissen zum Abruf ; Jahres-DVD ; Ausgaben ...ct-plus-romWissen zum AbrufHalbjahres-CDHalbjahres-DVD1997 -1997HannoverHeise1997Zusatz bis 2008,1: Halbjahres-CD. - Zusatz ab 2009,1 abwechselnd auch: Halbjahres-DVDAusg. für Abonnenten der Druckausg.Bis 2008,1 CD-ROM-Ausg., ab 2008,2 DVD-ROM-Ausg.; Periodizität: halbjährl.47918-4 Druckausg. --->C't2031802-9 Online-Ausg. --->C't1307745-4 Weitere CD-ROM-/DVD-Ausg. --->C't-ROM(üa/Z)08,A01,0030Optischer DatenträgerDVDs + CD-ROMs12 cm2013198-7 Hannover|004DNB|004ZDB|070ZDB|795|100|z101004004DDC22ger 4070083-5 Computer 1|Zeitschrift 1|CD-ROMDE-101DE-101 1458314-81999112220110203011020201102110195174082640864021458314-8ZDB1458314-8b|zucz|z|||37XA-DEger||||||||d|||||p||||||zz||||z|co||||||||||||9001DNB9999IX abo+Elektronische Ressourceschneller ZugriffIX abo plus1997 -HannoverHeise1997Anfangs CD-ROM-Ausg.; später DVD-Ausg.2484905-4 DVD-Ausg. --->IX pressed / Mehrjahresausgabe1013182-6 Druckausg. --->IX2028167-5 Online-Ausg. --->IXOptischer DatenträgerCD-ROMs + DVDs2013198-7 Hannover|820|070ZDB|004ZDB|100|795|z632 4061835-3 UNIX 4067488-5 Zeitschrift 4139307-7 CD-ROM 1|DVD-ROMDE-600DE-600 4011152-0 Datenverarbeitung 4067488-5 Zeitschrift 4139307-7 CD-ROMDE-600DE-600 1480287-91999112220090508183721201102110197324301744544991480287-9ZDB1480287-9b|zucz|z|||35XA-DEger||||||||d|||||p||||||zz||||z|co||||||||||||9001DNB9999C't / Shareware, FreewareC'tElektronische RessourceShareware, FreewareShareware, Freeware1998 - 1999HannoverHeise1998199947918-4 Beil. zu --->C't2015583-9 Vorg. u. Forts. --->C't / Freeware, Shareware(üa/Z) 107!(14-09-06)Optischer DatenträgerCD-ROMs2013198-7 Hannover|070ZDB|004ZDB|100|795|z101 2015583-92000060620090508184158201102110204754111744609302015583-9ZDB2015583-9b|zucz|z|||35XA-DEger||||||||d|||||p||||||zf||||z|co||||||||||||0464DNB9999C't / Freeware, SharewareC'tElektronische RessourceFreeware, SharewareFreeware, SharewareNachgewiesen 1997; 2000 - 2001HannoverHeise19972001Periodizität: 2x jährl.47918-4 Beil. zu --->C't1480287-9 1998 - 1999 --->C't / Shareware, Freeware2088571-4 Forts. --->Software-Kollektion700!(07-05-04) (üa/Z)Optischer DatenträgerCD-ROMs2013198-7 Hannover|004ZDB|070ZDB|795|100|z101 2028167-52000102320110114105521201102110209250182252483872028167-5ZDB2028167-5b|zucz|z|||37XA-DEger||||||||g|||||pmg||||zm||||z|cr||||||||||||0089DNB9001ZDB-5-WVTIXElektronische RessourceMagazin für professionelle InformationstechnikMagazin für professionelle InformationstechnikIXNachgewiesen 1994 -HannoverHeiseMünchenGBI1994Gesehen am 12.03.08. - Datenbank-Kurzbezeichnung: IXVolltext auch als Teil einer Datenbank verfügbar1323573-4 CD-ROM-Ausg. --->IX pressed / Jahresausgabe2484905-4 DVD-Ausg. --->IX pressed / Mehrjahresausgabe1458314-8 DVD-ROM-Ausg. --->IX abo+1013182-6 Druckausg. --->IX355!URL-Änderung(10-04-03);100!z LF gelöscht(12-03-08)ISSN 0935-9680Online-RessourceOnline-Ressourcehttp://www.bibliothek.uni-regensburg.de/ezeit/?2028167EZBhttp://www.heise.de/ix/Verlag2013198-7 Hannover|070ZDB|004ZDB|100|795|z632 4026926-7 Informationstechnik 4511937-5 Online-PublikationDE-600DE-600 4133249-0 Multitasking 4067488-5 ZeitschriftDE-600DE-600 4224999-5 Mehrplatzsystem 4067488-5 ZeitschriftDE-600DE-600 4011152-0 Datenverarbeitung 4067488-5 ZeitschriftDE-600DE-600 4061835-3 UNIX 4067488-5 ZeitschriftDE-600DE-600 2031802-92000112820100324112006201102110210508803144711222031802-9ZDB2031802-9b|zucz|z|||37XA-DEger||||||||g|||||pmg||||zm||||z|cr||||||||||||0089DNB9001ZDB-5-WVTC'tElektronische RessourceCtC't : Magazin für Computer-TechnikNachgewiesen 1990 -HannoverHeiseMünchenGBI1990Nebent.: C't : Magazin für Computer-TechnikGesehen am 13.09.06Volltext nur als Teil einer Datenbank verfügbar. - Periodizität monatl., ab 1998 zweimal im Monat47918-4 Druckausg. --->C't1307745-4 CD-ROM-Ausg. --->C't-ROM1357019-5 Disketten-Ausg. --->C't-Sammeldiskette1417097-8 CD-ROM-Ausg. --->C't-plus-rom(üa/Z)! (14-09-06)ISSN 0724-8679Online-RessourceOnline-Ressourcehttp://www.bibliothek.uni-regensburg.de/ezeit/?2031802EZBhttp://www.heise.de/ct/inhverz/Verlag; Inhaltsverz., nur einzelne Artikel Volltexthttp://www.gbi.deAgentur2013198-7 Hannover1006792-9 München|004ZDB|070ZDB|795|100|z101 4115533-6 Personalcomputer 4067488-5 ZeitschriftDE-600DE-600 4039206-5 Mikrocomputer 4067488-5 ZeitschriftDE-600DE-600 4148885-4 Datentechnik 4067488-5 ZeitschriftDE-600DE-600 2088571-420020913201006181418512011021196740391XDNB0238858311750344212088571-4ZDB2088571-4b|zucz|z|||37XA-DEger||||||||d|||||p||||||zz||||z|co||||||||||||0465DNB1241||a|||Software-KollektionElektronische Ressource2002 -2002HannoverHeise2002Hauptsacht. vom Label47918-4 Beil. zu --->C't2015583-9 Vorg. --->C't / Freeware, Shareware(üa/Z)03,A23,0681Optischer DatenträgerCD-ROMs + DVDs12 cm2013198-7 Hannover|28DNB|004DNB|004ZDB|070ZDB|795|100|z101 4148885-4 Datentechnik 4067488-5 Zeitschrift 4139307-7 CD-ROMDE-600DE-600 2563469-020100713201011162230362011021110043798972563469-0ZDB2563469-0b|zucz|z|||37XA-DEenga|a|||||||||||p||||||zz||||z|1241DNB9999||a|||C't digital photographyDigital photography1.2010 -12010HannoverHeise201030 cmPeriodizität: unregelmäßig2564783-0 Dt. Ausg. --->C't / Special / Digitale Fotografie2579847-9 DVD-Beil. --->C't digital photography / DVD-Beilage47918-4 Beil. zu --->C'tISSN 2190-6114ISSN 2190-6114 = C't digital photography10,A472013198-7 Hannover|770DNB|770ZDB775.05775DDC22ger05 4763160-0 Digitale Photographie 1|ZeitschriftDE-101DE-101 2564134-720100716201011232138192011021110047279172564134-7ZDB2564134-7b|zucz|z|||37XA-DEgera|a|||||||||||pmg||||zq||||z|0034DNB9999||a|||Rechenzentren und InfrastrukturKomponenten, Kabel, Netzwerke2009,1(Dez.); 2010 -20092010HannoverHeise200928 cmPeriodizität: 4x jährl.1013182-6 Themenbeil. zu --->IX(üa/Z)2013198-7 Hannover|004DNB|050ZDB|004ZDB|510 2564783-020100721201011021217032011021110048317302564783-0ZDB2564783-0b|zucz|z|||35XA-DEgera|a|||||||||||p||||||zqf|||z|1241DNB1241||a|||SpecialDigitale FotografieC't / Special / Digitale FotografieC'tSpecialDigitale FotografieSpecialDigitale Fotografie2009 -2009HannoverHeise200930 cmPeriodizität: 4x jährl., 2009: halbjährl.2564792-1 Dt. Ausg. --->C't / Special / Digitale Fotografie / DVD-Beilage2563469-0 Engl. Ausg. --->C't digital photography2564792-1 Beil. --->C't / Special / Digitale Fotografie / DVD-Beilage47918-4 Beil. zu --->C't54251-9 Hervorgeg. aus --->C't / Special(üa/Z)EUR 8.90 (DE, Einzelh.), EUR 9.90 (AT, Einzeh.), sfr 16.50 (Einzelh.)10,A322013198-7 Hannover|770DNB|770ZDB775.05775DDC22ger05 4763160-0 Digitale Photographie 1|ZeitschriftDE-101DE-101 2586057-420101214201012141511072011021110090792632586057-4ZDB2586057-4b|zucz|z|||37XA-DEgera|a|||||||||||p||||||z|||||||0034DNB0034IX Developer2011 -HannoverHeise20111013182-6 Sonderh. zu --->IX|070ZDB|000ZDB 126275-019991118201009161005142011021101071605X126275-0ZDB126275-0b|zucz|z|||35XA-FRfrea|ac||||||||||zaoup||zdwc||||duuu|||uuuu9001DNB09292626Le Figaro <Paris>Le Figaropremier quotidien national françaisLe Figaro / L'AuroreLe Figaro / Dernière heureLe Figaro / Edition de ParisLe Figaro / Edition de LyonLe Figaro littéraireLe Figaro / MadameLe Figaro / TV magazineLe Figaro / MagazineLe Figaro / Le Fig-EcoLe Figaro économieLe Figaro / ÉconomieLe Figaro entreprises / SolutionsLe Figaro entreprises / EnquêtesLe Figaro / RéussirLe Figaro / Entreprises & emploiL'Aurore[1.]1854,2.Apr.-31.Dez = Nr. 1-40; 2.1855,7.Jan. - 13.1866,11.Nov. = Nr. 41-1225; 13.1866,1(16.Nov.) - 24.1877,61(2.März); 23.1877,62(3.März)-365(31.Dez.); 24.1878,1(1.Jan.) - 65.1919.313(10.Nov.); 65.1919,314(2.Dez.) - 74.1927,46(15.Febr.); 102.1927,47(16.Febr.) - 117.1942,271(24.Nov.); 118.1944,23.Aug. - 148.1974,16/17.Nov. = Nr. 1-9383; 1974,18.Nov. -1854ParisClermont-Ferrand1940,183-249Lyon1940,250-1942,2711854Zeitw. mit sachl. Benennung d. zeitl. versch. Tagesausg.: L'Aurore. - Zeitw. mit sachl. Benennung d. zeitl. versch. Tagesausg.: Quatre, Cinq heures, Dernière heure etc.Commission paritaire: 57984115.1940,164-182 u. 1942,25.Nov. - 1944,22.Aug. nicht ersch.; teils auch mit Ser.-Zählung; Jg. 23 doppelt gez.; Periodizität: tägl., 1854 - 1855: wöchentl., 1856 - 1866,11.Nov.: 2x wöchentl.; Teile der Tagesaufl. werden mehrmals aktualisiert.; Aufl. 1994 ca.: 557.450Zeitw. mit Edition de Paris; Edition de Lyon. - Darin als Teile der Zeitung gez. Wochenbeil. u. Rubriken: cahier 2 bis 1994(fälschl. 1992),1.Dez.: Le Fig-Eco; cahier 3 bis 1992,2.Nov.: Figaro économie, ab 1992,9.Nov. als cahier 2 gez., ab 1994,2.Dez. Forts. d. Rubrik Fig-Eco; TV magazine; Le Figaro magazine; Madame; zeitw.: TV-Radio; ab 1971 Le Figaro littéraire; ab 2001,14.Mai Supplément hebdomadaire du Figaro économie: Le Figaro entreprises / Solutions und Le Figaro entreprises / Enquêtes; später Le Figaro / Entreprises & emploi; ab 2007,12.März: Le Figaro / Réussir2412496-5 Digital. Ausg. --->Le figaro1260267-x Beil. --->Le figaro de la jeunesse1002783-x Beil. --->L' Année du Figaro820919-4 Darin aufgeg. --->Le Gaulois820942-x 1919,11.Nov.-1.Dez. dafür Streikersatzbl. --->La presse de Paris|070ZDB 1142708-51999112120080226134105201102110167146601142708-5ZDB1142708-5b|zucz|z|||37XA-FRfrea|ac||||||||||z||||||zw||||||uuuu|||uuuu9001DNB0001Le Figarole journal non politique1.1826,15.Jan. - 9.1834,1.Dez. = Nr. 1-333; damit Ersch. eingest.Paris18261834Periodizität: wöchentl.2412496-5 Digital. Ausg. --->Le figaro(üa/Z)Mikrofilm-Ausg.Paris : ACRPP1019630-4 Paris|070ZDB|100|z101 00-load.t100644001750001750 115513636113757 15172 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse strict; use warnings; use Test::More; BEGIN { use_ok 'Catmandu::Importer::MAB2'; use_ok 'Catmandu::Exporter::MAB2'; use_ok 'Catmandu::Fix::mab_map'; use_ok 'MAB2::Parser::Disk'; use_ok 'MAB2::Parser::RAW'; use_ok 'MAB2::Parser::XML'; use_ok 'MAB2::Writer::RAW'; use_ok 'MAB2::Writer::XML'; } require_ok 'Catmandu::Importer::MAB2'; require_ok 'Catmandu::Exporter::MAB2'; require_ok 'Catmandu::Fix::mab_map'; require_ok 'MAB2::Parser::Disk'; require_ok 'MAB2::Parser::RAW'; require_ok 'MAB2::Parser::XML'; require_ok 'MAB2::Writer::RAW'; require_ok 'MAB2::Writer::XML'; done_testing;01-parser.t100644001750001750 1665513636113757 15603 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse strict; use warnings; use Test::Exception; use Test::More; use Test::Warn; use utf8; use MAB2::Parser::Disk; use MAB2::Parser::RAW; use MAB2::Parser::XML; note 'MAB2::Parser::XML'; { my $parser = MAB2::Parser::XML->new('./t/mab2.xml'); isa_ok( $parser, 'MAB2::Parser::XML' ); my $record = $parser->next(); ok( $record->{_id} eq '47918-4', 'record _id' ); is_deeply( $record->{record}->[0], [ '001', ' ', '_', '47918-4' ], 'first field' ); ok( $parser->next()->{_id} eq '54251-9', 'next record' ); $parser = MAB2::Parser::XML->new( q{47918-4199911182010111211015420110211550915044DNB0104205178511776447918-4ZDB47918-4b|zucz|z|||37XA-DEgera|a|||||||||||pmg||||ze||||z|9001DNB124224,1C'tMagazin für Computer-TechnikMagazin für Computer-TechnikCtNachgewiesen 1983 -1983HannoverHeise1983Ersch. im Abonnement auch zusammen mit d. CD-ROM c't-plus-rom. - Periodizität: 14-tägl.1307745-4 CD-ROM-Ausg. --->C't-ROM1357019-5 Disketten-Ausg. --->C't-Sammeldiskette1417097-8 CD-ROM-Ausg. --->C't-plus-rom2031802-9 Online-Ausg. --->C't2015583-9 Beil. 1997 u. 2000 - 2001 --->C't / Freeware, Shareware1480287-9 Beil. 1998 - 1999 --->C't / Shareware, Freeware2088571-4 Beil. ab 2002 --->Software-Kollektion54251-9 Beil. --->C't / Special2233486-5 Ab 2005 Beil. --->C't / Ratgeber2495944-3 Ab 2009 Beil. --->C't / Kompakt2490138-6 Ab 2009 Beil. --->C't / Medien2470478-7 Ab 2009 Beil. --->C't / Extra2564783-0 Ab 2009 Beil. --->C't / Special / Digitale Fotografie2563469-0 Ab 2010 Beil. --->C't digital photography(üa/Z)ISSN 0724-8679: DM 6.00 (Einzelh.), DM 58.00 (jährl.)ISSN 0724-8679 = C't84,A27,04502013198-7 Hannover|28DNB|004DNB|820|004ZDB|070ZDB|795|100|z101Mikrocomputer 4115533-6 Personalcomputer 4067488-5 ZeitschriftDE-600DE-600 4039206-5 Mikrocomputer 4067488-5 ZeitschriftDE-600DE-600 4148885-4 Datentechnik 4067488-5 ZeitschriftDE-600DE-600 4070083-5 Computer 4148885-4 Datentechnik 1|ZeitschriftDE-600DE-600} ); isa_ok( $parser, 'MAB2::Parser::XML' ); $record = $parser->next(); ok( $record->{_id} eq '47918-4', 'record _id' ); is_deeply( $record->{record}->[0], [ '001', ' ', '_', '47918-4' ], 'first field' ); } note 'MAB2::Parser::XML exceptions'; { throws_ok { MAB2::Parser::XML->new('') } qr/^file/, 'got exeption'; } note 'MAB2::Parser::RAW'; { my $parser = MAB2::Parser::RAW->new('./t/mab2.dat'); isa_ok( $parser, 'MAB2::Parser::RAW' ); my $record = $parser->next(); ok( $record->{_id} eq '47918-4', 'record _id' ); ok( $record->{record}->[0][3] eq '02020nM2.01200024 h', 'record leader' ); is_deeply( $record->{record}->[1], [ '001', ' ', '_', '47918-4' ], 'first field' ); ok( $parser->next()->{_id} eq '54251-9', 'next record' ); } note 'MAB2::Parser::RAW exceptions'; { throws_ok { MAB2::Parser::RAW->new('mab2.xxx') } qr/^file/, 'got exeption'; } note 'MAB2::Parser::RAW warnings'; { my $parser = MAB2::Parser::RAW->new('./t/mab2_faulty.dat'); warning_like { $parser->next() } qr/^record terminator not found/, "got warning record terminator"; warning_like { $parser->next() } qr/^faulty record leader/, "got warning faulty leader"; warning_like { $parser->next() } qr/^faulty field/, "got warning faulty field"; warning_like { $parser->next() } qr/^faulty field structure/, "got warning faulty field structure"; } note 'MAB2::Parser::Disk'; { my $parser = MAB2::Parser::Disk->new('./t/mab2disk.dat'); isa_ok( $parser, 'MAB2::Parser::Disk' ); my $record = $parser->next(); ok( $record->{_id} eq '47918-4', 'record _id' ); ok( $record->{record}->[0][3] eq '02020nM2.01200024 h', 'record leader' ); is_deeply( $record->{record}->[1], [ '001', ' ', '_', '47918-4' ], 'first field' ); ok( $parser->next()->{_id} eq '54251-9', 'next record' ); $record = $parser->next(); is_deeply( $record->{record}->[-1], [ "545", "a", "x", "ISSN 0724-8679 = C't", "y", "ISSN 0724-8679 = C't" ], 'got $ subfields' ); is_deeply( $record->{record}->[-2], [ "545", "a", "x", "ISSN 0724-8679 = C't", "y", "ISSN 0724-8679 = C't" ], 'got subfields' ); } note 'MAB2::Parser::Disk exceptions'; { throws_ok { MAB2::Parser::Disk->new('mab2disk.xxx') } qr/^file/, 'got exeption'; } note 'MAB2::Parser::Disk warnings'; { my $parser = MAB2::Parser::Disk->new('./t/mab2disk_faulty.dat'); warning_like { $parser->next() } qr/^faulty record leader/, "got warning faulty leader"; warning_like { $parser->next() } qr/^faulty field/, "got warning faulty field"; warning_like { $parser->next() } qr/^faulty field structure/, "got warning faulty field structure"; } done_testing; 05-writer.t100644001750001750 612213636113757 15573 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse utf8; use strict; use Test::More; use MAB2::Writer::Disk; use MAB2::Writer::RAW; use MAB2::Writer::XML; use File::Temp qw(tempfile); use IO::File; use Encode qw(encode); my ($fh, $filename) = tempfile(); my $writer = MAB2::Writer::XML->new( fh => $fh, xml_declaration => 1, collection => 1 ); my @mab_records = ( [ ['001', ' ', '_', '47918-4'], ['310', ' ', '_', 'Daß Ümläüt'], ['406', 'b', 'j', '1983'], ], { record => [ ['LDR', ' ', '_', '11111nM2.01200024 h'], ['406', 'a', j => '1990', k => '2000'], ] } ); $writer->start(); foreach my $record (@mab_records) { $writer->write($record); } # ToDo: Catmandu::Exporter::MAB2::commit $writer->end(); close($fh); my $out = do { local ( @ARGV, $/ ) = $filename; <> }; is $out, <<'MABXML'; 47918-4 Daß Ümläüt 1983 1990 2000 MABXML ($fh, $filename) = tempfile(); $writer = MAB2::Writer::RAW->new( fh => $fh ); foreach my $record (@mab_records) { $writer->write($record); } close($fh); $out = do { local (@ARGV,$/)=$filename; <> }; is $out, <<'MABRAW'; 99999nM2.01200024 h001 47918-4310 Daß Ümläüt406bj1983 11111nM2.01200024 h406aj1990k2000 MABRAW ($fh, $filename) = tempfile(); $writer = MAB2::Writer::RAW->new( file => $filename, encoding => 'UTF-8' ); foreach my $record (@mab_records) { $writer->write($record); } $writer->close_fh(); open $fh, '<:encoding(UTF-8)', $filename or die $!; $out = do { local $/; <$fh> }; is $out, <<'MABRAW'; 99999nM2.01200024 h001 47918-4310 Daß Ümläüt406bj1983 11111nM2.01200024 h406aj1990k2000 MABRAW ($fh, $filename) = tempfile(); $writer = MAB2::Writer::Disk->new( fh => $fh ); foreach my $record (@mab_records) { $writer->write($record); } close($fh); $out = do { local (@ARGV,$/)=$filename; <> }; is $out, <<'MABDISK1'; ### 99999nM2.01200024 h 001 47918-4 310 Daß Ümläüt 406bj1983 ### 11111nM2.01200024 h 406aj1990k2000 MABDISK1 ($fh, $filename) = tempfile(); $writer = MAB2::Writer::Disk->new( fh => $fh, subfield_indicator => '$' ); foreach my $record (@mab_records) { $writer->write($record); } close($fh); $out = do { local (@ARGV,$/)=$filename; <> }; is $out, <<'MABDISK2'; ### 99999nM2.01200024 h 001 47918-4 310 Daß Ümläüt 406b$j1983 ### 11111nM2.01200024 h 406a$j1990$k2000 MABDISK2 done_testing; 08-mab-map.t100644001750001750 72513636113757 15557 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse strict; use warnings; use warnings qw(FATAL utf8); use utf8; use Test::More; use Catmandu::Importer::MAB2; use Catmandu::Fix; my $pkg; BEGIN { $pkg = 'Catmandu::Fix::mab_map'; use_ok $pkg; } require_ok $pkg; my $fixer = Catmandu::Fix->new( fixes => [q|mab_map('00 ', test)|] ); my $importer = Catmandu::Importer::MAB2->new( file => './t/mab2.xml', type => "XML" ); eval { $fixer->fix( $importer->first ) }; ok $@, 'got exception'; done_testing; mab2disk.dat100644001750001750 5622213636113757 16064 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t### 02020nM2.01200024 h 001 47918-4 002a19991118 003 20101112110154 004 20110211 016 550915044‡DNB 025a010420517 025o85117764 025z47918-4 026 ZDB47918-4 030 b|zucz|z|||37 036aXA-DE 037bger 050 a|a||||||||||| 052 pmg||||ze||||z| 070 9001 070aDNB 070b1242 073 24,1 331 C't 335 Magazin für Computer-Technik 370aMagazin für Computer-Technik 370aCt 405 Nachgewiesen 1983 - 406bj1983 410 Hannover 412 Heise 425b1983 523 Ersch. im Abonnement auch zusammen mit d. CD-ROM c't-plus-rom. - Periodizität: 14-tägl. 527z1307745-4 CD-ROM-Ausg. --->‡C't-ROM 527z1357019-5 Disketten-Ausg. --->‡C't-Sammeldiskette 527z1417097-8 CD-ROM-Ausg. --->‡C't-plus-rom 527z2031802-9 Online-Ausg. --->‡C't 529z2015583-9 Beil. 1997 u. 2000 - 2001 --->‡C't / Freeware, Shareware 529z1480287-9 Beil. 1998 - 1999 --->‡C't / Shareware, Freeware 529z2088571-4 Beil. ab 2002 --->‡Software-Kollektion 529z54251-9 Beil. --->‡C't / Special 529z2233486-5 Ab 2005 Beil. --->‡C't / Ratgeber 529z2495944-3 Ab 2009 Beil. --->‡C't / Kompakt 529z2490138-6 Ab 2009 Beil. --->‡C't / Medien 529z2470478-7 Ab 2009 Beil. --->‡C't / Extra 529z2564783-0 Ab 2009 Beil. --->‡C't / Special / Digitale Fotografie 529z2563469-0 Ab 2010 Beil. --->‡C't digital photography 537 (üa/Z) 542aISSN 0724-8679 542z: DM 6.00 (Einzelh.), DM 58.00 (jährl.) 545aaISSN 0724-8679 = C't 574 84,A27,0450 673b2013198-7 Hannover 700 |28‡DNB 700 |004‡DNB 700l|820 700 |004‡ZDB 700 |070‡ZDB 700z|795 700z|100 700z|z101 710aMikrocomputer 902s 4115533-6 Personalcomputer 902s 4067488-5 Zeitschrift 904aDE-600‡DE-600 907s 4039206-5 Mikrocomputer 907s 4067488-5 Zeitschrift 909aDE-600‡DE-600 912s 4148885-4 Datentechnik 912s 4067488-5 Zeitschrift 914aDE-600‡DE-600 917s 4070083-5 Computer 917s 4148885-4 Datentechnik 917f 1|Zeitschrift 919aDE-600‡DE-600 ### 00907nM2.01200024 h 001 54251-9 002a19991118 003 20100721152440 004 20110211 025a010476520 025o85225698 025z54251-9 026 ZDB54251-9 030 b|zucz|z|||35 036aXA-DE 037bger 050 a|a||||||||||| 052 p||||||zz||||z| 070 9001 070aDNB 070b9001 076 ||a||| 085x$aSpecial 310 C't / Special 331 C't 360 Special 370aCt 370aSpecial 405 1.1985 - 406b$d1$j1985 410 Hannover 412 Heise 425b1985 435 30 cm 437 DVD-ROMs als Beil. 523 Periodizität: unregelmäßig 530z47918-4 Beil. zu --->‡C't 533z2564783-0 Daraus hervorgeg. --->‡C't / Special / Digitale Fotografie 537 (üa/Z) 89!101b!(21-07-10)(NA Special Digitale Fotografie) 542zEUR 8.90 (DE, Einzelh.), EUR 9.90 (AT, Einzeh.), sfr 16.50 (Einzelh.) 574 09,A32,1579 673b2013198-7 Hannover 700 |770‡DNB 700 |004‡ZDB 700z|795 705 $a775.05$c775$eDDC22ger$f05 902s 4763160-0 Digitale Photographie 902f 1|Zeitschrift 904aDE-101‡DE-101 ### 02020nM2.01200024 h 001 47918-4 542aISSN 0724-8679 545axISSN 0724-8679 = C'tyISSN 0724-8679 = C't 545a$xISSN 0724-8679 = C't$yISSN 0724-8679 = C't ### 00914nM2.01200024 h 001 246797-5 002a19991119 003 20100413093150 004 20110211 016 551547758‡DNB 025a011495790 025o85138566 025z246797-5 026 ZDB246797-5 030 b|zucz|z|||37 036aXA-DE 037bger 050 a|a||||||||||| 052 pmg||||zm||||z| 070 9001 070aDNB 070b9001 076 ||a||| 331 UNIX-Magazin 335 die unabhängige Zeitschrift für alle Unix-Anwender 370aUNIX 405 Nachgewiesen 1988 - 1992 410 Haar 412 Markt & Technik Verl. 425b1988 425c1992 505 Nebent.: UNIX 523 Periodizität: monatl. 533z1013182-6 Aufgeg. in --->‡IX 537 82! 542aISSN 0934-8476 542z: DM 7.50 (Einzelh.), sfr 7.50 (Einzelh.), S 65.00 (Einzelh.), DM 84.00 (jährlich), DM 60.00 (jährlich, Studentenabonnement) 545aaISSN 0934-8476 574 93,A36,0690 673b2012840-X Haar 700 |28‡DNB 700 |78‡DNB 700 |004‡DNB 700d|30m 700 |070‡ZDB 700 |004‡ZDB 700z|100 700z|795 700z|z632 902s 4061835-3 UNIX 902f 1|Zeitschrift 904aDE-101‡DE-101 ### 02151nM2.01200024 h 001 1013182-6 002a19991120 003 20110201135054 004 20110211 016 551616849‡DNB 025a015462226 025o183346356 025z1013182-6 026 ZDB1013182-6 030 b|zucz|z|||37 036aXA-DE 037bger 050 a|a||||||||||| 052 pmg||||zmb|||z| 070 9001 070aDNB 070b9001 331 IX 335 Magazin für professionelle Informationstechnik 370aIX und UNIX-Magazin 370aMagazin für professionelle Informationstechnik 370aCeBIT-Special 370aIX extra 370aIX + UNIX-Magazin 370aMultiuser-Multitasking-Magazin 405 1988,11; 1989,2 - 406bj1988 410 Hannover 412 Heise 425b1988 431 Index 1988/90 in: 1990,7 507 Nebent. 1993,1-4: IX + UNIX-Magazin. - Zusatz anfangs: Multiuser-Multitasking-Magazin 523 Ersch.-Beginn mit H. 11; Periodizität: monatl., anfangs alle 2 Monate 524 Ungezählte Beil. ab 2002: CeBit-Special; ab 2004,11: IX extra 527z1323573-4 CD-ROM-Ausg. --->‡IX pressed / Jahresausgabe 527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe 527z1458314-8 DVD-Ausg. --->‡IX abo+ 527z2028167-5 Online-Ausg. --->‡IX 529z2203242-3 Sonderh. --->‡IX / Special 529z2511088-3 Ab 2009 Sonderh. --->‡IX kompakt 529z2564134-7 Ab 2010 Themenbeil. --->‡Rechenzentren und Infrastruktur 529z2586057-4 Ab 2011 Sonderh. --->‡IX Developer 531z246797-5 Darin aufgeg. --->‡UNIX-Magazin 537 Kopie(evtl. Split vgl. Abl.) 542aISSN 0935-9680 542z: DM 7.50 (Einzelnr.), S 62.00 (Einzelnr.), sfr 7.50 (Einzelnr.), DM 40.50 (jährl.), DM 36.30 (jährl., für Studenten) 545aaISSN 1612-1392 574 89,A44,0451 673b2013198-7 Hannover 700 |28‡DNB 700 |004‡DNB 700d|30m 700l|820 700 |050‡ZDB 700 |070‡ZDB 700 |004‡ZDB 700z|100 700z|795 700z|z632 902s 4061835-3 UNIX 902f 1|Zeitschrift 904aDE-101‡DE-101 907s 4133249-0 Multitasking 907s 4067488-5 Zeitschrift 909aDE-600‡DE-600 912s 4224999-5 Mehrplatzsystem 912s 4067488-5 Zeitschrift 914aDE-600‡DE-600 917s 4011152-0 Datenverarbeitung 917s 4067488-5 Zeitschrift 919aDE-600‡DE-600 922s 4061835-3 UNIX 922s 4067488-5 Zeitschrift 924aDE-600‡DE-600 ### 01693nM2.01200024 h 001 1307745-4 002a19991121 003 20110203010725 004 20110211 016 957151225‡DNB 025a018119204 025o632852812 025z1307745-4 026 ZDB1307745-4 030 b|zucz|z|||37 036aXA-DE 037bger 050 ||||||||d||||| 052 pmg||||za||||z| 058 co|||||||||||| 070 9001 070aDNB 070b9999 076 ||a||| 331 C't-ROM 334 Elektronische Ressource 335 Wissen zum Abruf 370aCt-ROM 370aWissen zum Abruf 405 Nachgewiesen 1983/89(2003); 1990/91(1996); 1992/93(1995); 1994(1995) - 410 Hannover 412 Heise 425b1995 523 Periodizität: jährl. - DVD kumuliert unregelmäßig in Mehrjahresabständen, z.B.: 1983/89 u. 1990/2003; Blu-ray-disc-Kumulation ab 1983-2008 527z47918-4 Druckausg. --->‡C't 527z2031802-9 Online-Ausg. --->‡C't 527z1417097-8 Weitere CD-ROM-/DVD-Ausg. --->‡C't-plus-rom 537 4!B208!82(läuft weiter, 7/98) (üa/Z) 574 00,A16,1001 652aaOptischer Datenträger 653 aDVDs + CD-ROMs + Blu-ray DiscseBeil. 654 aSystemvoraussetzung: HTML-3.0-fähiger WWW-Browser; ab 2000: Pentium oder neuer; 32 MB Arbeitsspeicher; Windows 9x, Windows ME, Windows NT, Windows 2000, Windows XP; Linux, Macintosh und OS/2; 8fach CD-ROM-Laufwerk 673b2013198-7 Hannover 700 |004‡DNB 700d|30 700 |004‡ZDB 700 |070‡ZDB 700z|795 700z|100 700z|z101 902s 4070083-5 Computer 902f 1|Zeitschrift 902f 1|CD-ROM 904aDE-101‡DE-101 907s 4148885-4 Datentechnik 907f 1|Zeitschrift 907f 1|CD-ROM 909aDE-600‡DE-600 912s 4070083-5 Computer 912s 4148885-4 Datentechnik 912f 1|Zeitschrift 912f 1|CD-ROM 914aDE-600‡DE-600 917s 4011152-0 Datenverarbeitung 917s 4148885-4 Datentechnik 917f 1|Zeitschrift 917f 1|CD-ROM 919aDE-600‡DE-600 ### 01528nM2.01200024 h 001 1323573-4 002a19991121 003 20100713190507 004 20110211 025a018261485 025o634114787 025z1323573-4 026 ZDB1323573-4 030 b|zucz|z|||35 036aXA-DE 037bger 050 ||||||||d||||| 052 p||||||za||||z| 058 co|||||||||||| 070 9001 070aDNB 070b9999 076 ||a||| 085xa[Jahresausgabe]nElektronische Ressource 310 IX pressed / Jahresausgabe 331 IX pressed 334 Elektronische Ressource 360 [Jahresausgabe] [Elektronische Ressource] 370a[Jahresausgabe] 370aIxpressed 405 1994 - 406bj1994 410 Hannover 412 Heise 415 Hannover 417 eMedia 425b1994 505 Nebent.: Ixpressed 507 Hauptsacht. vom Label 523 Periodizität: jährl. 527z1013182-6 Druckausg. --->‡IX 527z2028167-5 Online-Ausg. --->‡IX 527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe 537 38M!107!(17-03-09) 574 10,A25 652aaOptischer Datenträger 653 aCD-ROMsd12 cm 654 aSystemvoraussetzungen: Pentium oder neuer; 32 MB Arbeitsspeicher; Windows 9x, Windows ME, Windows NT, Windows 2000, Windows XP; Linux, UNIX und Macintosh; 8fach CD-ROM-Laufwerk 673b2013198-7 Hannover 700 |004‡DNB 700 |070‡ZDB 700 |004‡ZDB 700z|100 700z|795 700z|z632 705 a005.43205c005.432eDDC22gerf05 902s 4061835-3 UNIX 902f 1|Zeitschrift 902f 1|CD-ROM 904aDE-101‡DE-101 907s 4011152-0 Datenverarbeitung 907s 4067488-5 Zeitschrift 907s 4139307-7 CD-ROM 909aDE-600‡DE-600 912s 4061835-3 UNIX 912s 4067488-5 Zeitschrift 912s 4139307-7 CD-ROM 914aDE-600‡DE-600 ### 00587nM2.01200024 h 001 1357019-5 002a19991122 003 20100713190747 004 20110211 025a018559069 025z1357019-5 026 ZDB1357019-5 030 b|zucz|z|||37 036aXA-DE 037bger 050 ||||||||b||||| 052 pmg||||zm||||z| 058 cj|||||||||||| 070 9001 070aDNB 070b9999 331 C't-Sammeldiskette 334 Elektronische Ressource 405 Nachgewiesen 1997 - 410 Hannover 412 Heise 425b1997 523 Periodizität: monatl. 527z47918-4 Druckausg. --->‡C't 527z2031802-9 Online-Ausg. --->‡C't 537 (üa/Z) 652aaDiskette 673b2013198-7 Hannover 700 |004‡ZDB 700 |070‡ZDB 700z|795 700z|100 700z|z101 ### 01157nM2.01200024 h 001 1417097-8 002a19991122 003 20100924172919 004 20110211 025a019116519 025o613546507 025z1417097-8 026 ZDB1417097-8 030 b|zucz|z|||37 036aXA-DE 037bger 050 ||||||||d||||| 052 pmg||||zf||||z| 058 co|||||||||||| 070 9001 070aDNB 070b9999 076 ||a||| 331 C't-plus-rom 334 Elektronische Ressource 335 Wissen zum Abruf ; Jahres-DVD ; Ausgaben ... 370act-plus-rom 370aWissen zum Abruf 370aHalbjahres-CD 370aHalbjahres-DVD 405 1997 - 406bj1997 410 Hannover 412 Heise 425b1997 507 Zusatz bis 2008,1: Halbjahres-CD. - Zusatz ab 2009,1 abwechselnd auch: Halbjahres-DVD 510 Ausg. für Abonnenten der Druckausg. 523 Bis 2008,1 CD-ROM-Ausg., ab 2008,2 DVD-ROM-Ausg.; Periodizität: halbjährl. 527z47918-4 Druckausg. --->‡C't 527z2031802-9 Online-Ausg. --->‡C't 527z1307745-4 Weitere CD-ROM-/DVD-Ausg. --->‡C't-ROM 537 (üa/Z) 574 08,A01,0030 652aaOptischer Datenträger 653 aDVDs + CD-ROMsd12 cm 673b2013198-7 Hannover 700 |004‡DNB 700 |004‡ZDB 700 |070‡ZDB 700z|795 700z|100 700z|z101 705 a004c004eDDC22ger 902s 4070083-5 Computer 902f 1|Zeitschrift 902f 1|CD-ROM 904aDE-101‡DE-101 ### 01000nM2.01200024 h 001 1458314-8 002a19991122 003 20110203011020 004 20110211 025a019517408 025o264086402 025z1458314-8 026 ZDB1458314-8 030 b|zucz|z|||37 036aXA-DE 037bger 050 ||||||||d||||| 052 p||||||zz||||z| 058 co|||||||||||| 070 9001 070aDNB 070b9999 331 IX abo+ 334 Elektronische Ressource 335 schneller Zugriff 370aIX abo plus 405 1997 - 410 Hannover 412 Heise 425b1997 523 Anfangs CD-ROM-Ausg.; später DVD-Ausg. 527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe 527z1013182-6 Druckausg. --->‡IX 527z2028167-5 Online-Ausg. --->‡IX 652aaOptischer Datenträger 653 aCD-ROMs + DVDs 673b2013198-7 Hannover 700l|820 700 |070‡ZDB 700 |004‡ZDB 700z|100 700z|795 700z|z632 902s 4061835-3 UNIX 902s 4067488-5 Zeitschrift 902s 4139307-7 CD-ROM 902f 1|DVD-ROM 904aDE-600‡DE-600 907s 4011152-0 Datenverarbeitung 907s 4067488-5 Zeitschrift 907s 4139307-7 CD-ROM 909aDE-600‡DE-600 ### 00704nM2.01200024 h 001 1480287-9 002a19991122 003 20090508183721 004 20110211 025a019732430 025o174454499 025z1480287-9 026 ZDB1480287-9 030 b|zucz|z|||35 036aXA-DE 037bger 050 ||||||||d||||| 052 p||||||zz||||z| 058 co|||||||||||| 070 9001 070aDNB 070b9999 310 C't / Shareware, Freeware 331 C't 334 Elektronische Ressource 360 Shareware, Freeware 370aShareware, Freeware 405 1998 - 1999 410 Hannover 412 Heise 425b1998 425c1999 530z47918-4 Beil. zu --->‡C't 532z2015583-9 Vorg. u. Forts. --->‡C't / Freeware, Shareware 537 (üa/Z) 107!(14-09-06) 652aaOptischer Datenträger 653 aCD-ROMs 673b2013198-7 Hannover 700 |070‡ZDB 700 |004‡ZDB 700z|100 700z|795 700z|z101 ### 00805nM2.01200024 h 001 2015583-9 002a20000606 003 20090508184158 004 20110211 025a020475411 025o174460930 025z2015583-9 026 ZDB2015583-9 030 b|zucz|z|||35 036aXA-DE 037bger 050 ||||||||d||||| 052 p||||||zf||||z| 058 co|||||||||||| 070 0464 070aDNB 070b9999 310 C't / Freeware, Shareware 331 C't 334 Elektronische Ressource 360 Freeware, Shareware 370aFreeware, Shareware 405 Nachgewiesen 1997; 2000 - 2001 410 Hannover 412 Heise 425b1997 425c2001 523 Periodizität: 2x jährl. 530z47918-4 Beil. zu --->‡C't 532z1480287-9 1998 - 1999 --->‡C't / Shareware, Freeware 533z2088571-4 Forts. --->‡Software-Kollektion 537 700!(07-05-04) (üa/Z) 652aaOptischer Datenträger 653 aCD-ROMs 673b2013198-7 Hannover 700 |004‡ZDB 700 |070‡ZDB 700z|795 700z|100 700z|z101 ### 01650nM2.01200024 h 001 2028167-5 002a20001023 003 20110114105521 004 20110211 025a020925018 025o225248387 025z2028167-5 026 ZDB2028167-5 030 b|zucz|z|||37 036aXA-DE 037bger 050 ||||||||g||||| 052 pmg||||zm||||z| 058 cr|||||||||||| 070 0089 070aDNB 070b9001 078eZDB-5-WVT 331 IX 334 Elektronische Ressource 335 Magazin für professionelle Informationstechnik 370aMagazin für professionelle Informationstechnik 370aIX 405 Nachgewiesen 1994 - 410 Hannover 412 Heise 415 München 417 GBI 425b1994 507 Gesehen am 12.03.08. - Datenbank-Kurzbezeichnung: IX 523 Volltext auch als Teil einer Datenbank verfügbar 527z1323573-4 CD-ROM-Ausg. --->‡IX pressed / Jahresausgabe 527z2484905-4 DVD-Ausg. --->‡IX pressed / Mehrjahresausgabe 527z1458314-8 DVD-ROM-Ausg. --->‡IX abo+ 527z1013182-6 Druckausg. --->‡IX 537 355!URL-Änderung(10-04-03);100!z LF gelöscht(12-03-08) 542aISSN 0935-9680 652aaOnline-Ressource 653 aOnline-Ressource 655 uhttp://www.bibliothek.uni-regensburg.de/ezeit/?2028167xEZB 655 uhttp://www.heise.de/ix/xVerlag 673b2013198-7 Hannover 700 |070‡ZDB 700 |004‡ZDB 700z|100 700z|795 700z|z632 902s 4026926-7 Informationstechnik 902s 4511937-5 Online-Publikation 904aDE-600‡DE-600 907s 4133249-0 Multitasking 907s 4067488-5 Zeitschrift 909aDE-600‡DE-600 912s 4224999-5 Mehrplatzsystem 912s 4067488-5 Zeitschrift 914aDE-600‡DE-600 917s 4011152-0 Datenverarbeitung 917s 4067488-5 Zeitschrift 919aDE-600‡DE-600 922s 4061835-3 UNIX 922s 4067488-5 Zeitschrift 924aDE-600‡DE-600 ### 01516nM2.01200024 h 001 2031802-9 002a20001128 003 20100324112006 004 20110211 025a021050880 025o314471122 025z2031802-9 026 ZDB2031802-9 030 b|zucz|z|||37 036aXA-DE 037bger 050 ||||||||g||||| 052 pmg||||zm||||z| 058 cr|||||||||||| 070 0089 070aDNB 070b9001 078eZDB-5-WVT 331 C't 334 Elektronische Ressource 370aCt 370aC't : Magazin für Computer-Technik 405 Nachgewiesen 1990 - 410 Hannover 412 Heise 415 München 417 GBI 425b1990 505 Nebent.: C't : Magazin für Computer-Technik 507 Gesehen am 13.09.06 523 Volltext nur als Teil einer Datenbank verfügbar. - Periodizität monatl., ab 1998 zweimal im Monat 527z47918-4 Druckausg. --->‡C't 527z1307745-4 CD-ROM-Ausg. --->‡C't-ROM 527z1357019-5 Disketten-Ausg. --->‡C't-Sammeldiskette 527z1417097-8 CD-ROM-Ausg. --->‡C't-plus-rom 537 (üa/Z)! (14-09-06) 542aISSN 0724-8679 652aaOnline-Ressource 653 aOnline-Ressource 655 uhttp://www.bibliothek.uni-regensburg.de/ezeit/?2031802xEZB 655 uhttp://www.heise.de/ct/inhverz/xVerlag; Inhaltsverz., nur einzelne Artikel Volltext 655 uhttp://www.gbi.dexAgentur 673b2013198-7 Hannover 673b1006792-9 München 700 |004‡ZDB 700 |070‡ZDB 700z|795 700z|100 700z|z101 902s 4115533-6 Personalcomputer 902s 4067488-5 Zeitschrift 904aDE-600‡DE-600 907s 4039206-5 Mikrocomputer 907s 4067488-5 Zeitschrift 909aDE-600‡DE-600 912s 4148885-4 Datentechnik 912s 4067488-5 Zeitschrift 914aDE-600‡DE-600 ### 00852nM2.01200024 h 001 2088571-4 002a20020913 003 20100618141851 004 20110211 016 96740391X‡DNB 025a023885831 025o175034421 025z2088571-4 026 ZDB2088571-4 030 b|zucz|z|||37 036aXA-DE 037bger 050 ||||||||d||||| 052 p||||||zz||||z| 058 co|||||||||||| 070 0465 070aDNB 070b1241 076 ||a||| 331 Software-Kollektion 334 Elektronische Ressource 405 2002 - 406bj2002 410 Hannover 412 Heise 425b2002 507 Hauptsacht. vom Label 530z47918-4 Beil. zu --->‡C't 531z2015583-9 Vorg. --->‡C't / Freeware, Shareware 537 (üa/Z) 574 03,A23,0681 652aaOptischer Datenträger 653 aCD-ROMs + DVDsd12 cm 673b2013198-7 Hannover 700 |28‡DNB 700 |004‡DNB 700 |004‡ZDB 700 |070‡ZDB 700z|795 700z|100 700z|z101 902s 4148885-4 Datentechnik 902s 4067488-5 Zeitschrift 902s 4139307-7 CD-ROM 904aDE-600‡DE-600 ### 00843nM2.01200024 h 001 2563469-0 002a20100713 003 20101116223036 004 20110211 025a1004379897 025z2563469-0 026 ZDB2563469-0 030 b|zucz|z|||37 036aXA-DE 037beng 050 a|a||||||||||| 052 p||||||zz||||z| 070 1241 070aDNB 070b9999 076 ||a||| 331 C't digital photography 370aDigital photography 405 1.2010 - 406bd1j2010 410 Hannover 412 Heise 425b2010 435 30 cm 523 Periodizität: unregelmäßig 527z2564783-0 Dt. Ausg. --->‡C't / Special / Digitale Fotografie 529z2579847-9 DVD-Beil. --->‡C't digital photography / DVD-Beilage 530z47918-4 Beil. zu --->‡C't 542aISSN 2190-6114 545aaISSN 2190-6114 = C't digital photography 574 10,A47 673b2013198-7 Hannover 700 |770‡DNB 700 |770‡ZDB 705 a775.05c775eDDC22gerf05 902s 4763160-0 Digitale Photographie 902f 1|Zeitschrift 904aDE-101‡DE-101 ### 00571nM2.01200024 h 001 2564134-7 002a20100716 003 20101123213819 004 20110211 025a1004727917 025z2564134-7 026 ZDB2564134-7 030 b|zucz|z|||37 036aXA-DE 037bger 050 a|a||||||||||| 052 pmg||||zq||||z| 070 0034 070aDNB 070b9999 076 ||a||| 331 Rechenzentren und Infrastruktur 335 Komponenten, Kabel, Netzwerke 405 2009,1(Dez.); 2010 - 406aj2009 406bj2010 410 Hannover 412 Heise 425b2009 435 28 cm 523 Periodizität: 4x jährl. 530z1013182-6 Themenbeil. zu --->‡IX 537 (üa/Z) 673b2013198-7 Hannover 700 |004‡DNB 700 |050‡ZDB 700 |004‡ZDB 700z|510 ### 01127nM2.01200024 h 001 2564783-0 002a20100721 003 20101102121703 004 20110211 025a1004831730 025z2564783-0 026 ZDB2564783-0 030 b|zucz|z|||35 036aXA-DE 037bger 050 a|a||||||||||| 052 p||||||zqf|||z| 070 1241 070aDNB 070b1241 076 ||a||| 085xaSpecial 085xaDigitale Fotografie 310 C't / Special / Digitale Fotografie 331 C't 360 Special 360 Digitale Fotografie 370aSpecial 370aDigitale Fotografie 405 2009 - 406bj2009 410 Hannover 412 Heise 425b2009 435 30 cm 523 Periodizität: 4x jährl., 2009: halbjährl. 527z2564792-1 Dt. Ausg. --->‡C't / Special / Digitale Fotografie / DVD-Beilage 527z2563469-0 Engl. Ausg. --->‡C't digital photography 529z2564792-1 Beil. --->‡C't / Special / Digitale Fotografie / DVD-Beilage 530z47918-4 Beil. zu --->‡C't 531z54251-9 Hervorgeg. aus --->‡C't / Special 537 (üa/Z) 542zEUR 8.90 (DE, Einzelh.), EUR 9.90 (AT, Einzeh.), sfr 16.50 (Einzelh.) 574 10,A32 673b2013198-7 Hannover 700 |770‡DNB 700 |770‡ZDB 705 a775.05c775eDDC22gerf05 902s 4763160-0 Digitale Photographie 902f 1|Zeitschrift 904aDE-101‡DE-101 ### 00361nM2.01200024 h 001 2586057-4 002a20101214 003 20101214151107 004 20110211 025a1009079263 025z2586057-4 026 ZDB2586057-4 030 b|zucz|z|||37 036aXA-DE 037bger 050 a|a||||||||||| 052 p||||||z||||||| 070 0034 070aDNB 070b0034 331 IX Developer 405 2011 - 410 Hannover 412 Heise 425b2011 530z1013182-6 Sonderh. zu --->‡IX 700 |070‡ZDB 700 |000‡ZDB ### 03210nM2.01200024 h 001 126275-0 002a19991118 003 20100916100514 004 20110211 025a01071605X 025z126275-0 026 ZDB126275-0 030 b|zucz|z|||35 036aXA-FR 037bfre 050 a|ac|||||||||| 052 zaoup||zdwc|||| 057 duuu|||uuuu 070 9001 070aDNB 070b0929 073 26 073 26 310 ˜Leœ Figaro 331 ˜Leœ Figaro 335 premier quotidien national français 370a˜Leœ Figaro / L'Aurore 370a˜Leœ Figaro / Dernière heure 370a˜Leœ Figaro / Edition de Paris 370a˜Leœ Figaro / Edition de Lyon 370a˜Leœ Figaro littéraire 370a˜Leœ Figaro / Madame 370a˜Leœ Figaro / TV magazine 370a˜Leœ Figaro / Magazine 370a˜Leœ Figaro / ˜Leœ Fig-Eco 370a˜Leœ Figaro économie 370a˜Leœ Figaro / Économie 370a˜Leœ Figaro entreprises / Solutions 370a˜Leœ Figaro entreprises / Enquêtes 370a˜Leœ Figaro / Réussir 370a˜Leœ Figaro / Entreprises & emploi 370aL'Aurore 405 [1.]1854,2.Apr.-31.Dez = Nr. 1-40; 2.1855,7.Jan. - 13.1866,11.Nov. = Nr. 41-1225; 13.1866,1(16.Nov.) - 24.1877,61(2.März); 23.1877,62(3.März)-365(31.Dez.); 24.1878,1(1.Jan.) - 65.1919.313(10.Nov.); 65.1919,314(2.Dez.) - 74.1927,46(15.Febr.); 102.1927,47(16.Febr.) - 117.1942,271(24.Nov.); 118.1944,23.Aug. - 148.1974,16/17.Nov. = Nr. 1-9383; 1974,18.Nov. - 406bj1854 410 Paris 418 aClermont-Ferrandh1940,183-249 418 aLyonh1940,250-1942,271 425b1854 507 Zeitw. mit sachl. Benennung d. zeitl. versch. Tagesausg.: L'Aurore. - Zeitw. mit sachl. Benennung d. zeitl. versch. Tagesausg.: Quatre, Cinq heures, Dernière heure etc. 516 Commission paritaire: 57984 523 115.1940,164-182 u. 1942,25.Nov. - 1944,22.Aug. nicht ersch.; teils auch mit Ser.-Zählung; Jg. 23 doppelt gez.; Periodizität: tägl., 1854 - 1855: wöchentl., 1856 - 1866,11.Nov.: 2x wöchentl.; Teile der Tagesaufl. werden mehrmals aktualisiert.; Aufl. 1994 ca.: 557.450 524 Zeitw. mit Edition de Paris; Edition de Lyon. - Darin als Teile der Zeitung gez. Wochenbeil. u. Rubriken: cahier 2 bis 1994(fälschl. 1992),1.Dez.: Le Fig-Eco; cahier 3 bis 1992,2.Nov.: Figaro économie, ab 1992,9.Nov. als cahier 2 gez., ab 1994,2.Dez. Forts. d. Rubrik Fig-Eco; TV magazine; Le Figaro magazine; Madame; zeitw.: TV-Radio; ab 1971 Le Figaro littéraire; ab 2001,14.Mai Supplément hebdomadaire du Figaro économie: Le Figaro entreprises / Solutions und Le Figaro entreprises / Enquêtes; später Le Figaro / Entreprises & emploi; ab 2007,12.März: Le Figaro / Réussir 527z2412496-5 Digital. Ausg. --->‡˜Leœ figaro 529z1260267-x Beil. --->‡˜Leœ figaro de la jeunesse 529z1002783-x Beil. --->‡˜L'œ Année du Figaro 531z820919-4 Darin aufgeg. --->‡˜Leœ Gaulois 532z820942-x 1919,11.Nov.-1.Dez. dafür Streikersatzbl. --->‡˜Laœ presse de Paris 700 |070‡ZDB 02-importer.t100644001750001750 355113636113757 16120 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse strict; use warnings; use Test::Exception; use Test::More; use Catmandu; use Catmandu::Importer::MAB2; note 'Catmandu::Importer::MAB2 RAW'; { my $importer = Catmandu::Importer::MAB2->new( file => './t/mab2.dat', type => 'RAW' ); my @records; $importer->each( sub { push( @records, $_[0] ); } ); ok( scalar @records == 20, 'records' ); ok( $records[0]->{'_id'} eq '47918-4', 'record _id' ); is_deeply( $records[0]->{'record'}->[0], [ 'LDR', '', '_', '02020nM2.01200024 h' ], 'record leader' ); } note 'Catmandu::Importer::MAB2 XML'; { my $importer = Catmandu::Importer::MAB2->new( file => './t/mab2.xml', type => 'XML' ); my @records = (); $importer->each( sub { push( @records, $_[0] ); } ); ok( scalar @records == 20, 'records' ); ok( $records[0]->{'_id'} eq '47918-4', 'record _id' ); is_deeply( $records[0]->{'record'}->[0], [ '001', ' ', '_', '47918-4' ], 'record field' ); } note 'Catmandu::Importer::MAB2 Disk'; { my $importer = Catmandu::Importer::MAB2->new( file => './t/mab2disk.dat', type => 'Disk' ); my @records = (); $importer->each( sub { push( @records, $_[0] ); } ); ok( scalar @records == 20, 'records' ); ok( $records[0]->{'_id'} eq '47918-4', 'record _id' ); is_deeply( $records[0]->{'record'}->[0], [ 'LDR', '', '_', '02020nM2.01200024 h' ], 'record field' ); } note 'Catmandu::Importer::MAB2 Exception'; { throws_ok { Catmandu::Importer::MAB2->new( file => './t/mab2disk.dat', type => 'XYZ' )->next } qr/^unknown type/, 'got exeption'; } done_testing; 04-exporter.t100644001750001750 455513636113757 16136 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/tuse utf8; use strict; use warnings; use Test::More; use Catmandu::Exporter::MAB2; use File::Temp qw(tempfile); use IO::File; use Encode qw(encode); my @mab_records = ( [ [ '001', ' ', '_', '47918-4' ], [ '310', ' ', '_', 'Daß Ümläüt' ], [ '406', 'b', 'j', '1983' ], ], { record => [ [ '406', 'a', j => '1990', k => '2000' ] ] } ); my ( $fh, $filename ) = tempfile(); my $exporter = Catmandu::Exporter::MAB2->new( file => $filename, type => 'XML', xml_declaration => 1, collection => 1 ); for my $record (@mab_records) { $exporter->add($record); } $exporter->commit(); close($fh); open $fh, '<:encoding(UTF-8)', $filename or die $!; my $out = do { local $/; <$fh> }; is $out, <<'MABXML'; 47918-4 Daß Ümläüt 1983 1990 2000 MABXML ( $fh, $filename ) = tempfile(); $exporter = Catmandu::Exporter::MAB2->new( file => $filename, type => 'RAW' ); for my $record (@mab_records) { $exporter->add($record); } $exporter->commit(); close($fh); open $fh, '<:encoding(UTF-8)', $filename or die $!; $out = do { local $/; <$fh> }; is $out, <<'MABRAW'; 99999nM2.01200024 h001 47918-4310 Daß Ümläüt406bj1983 99999nM2.01200024 h406aj1990k2000 MABRAW ( $fh, $filename ) = tempfile(); $exporter = Catmandu::Exporter::MAB2->new( file => $filename, type => 'DISK' ); for my $record (@mab_records) { $exporter->add($record); } $exporter->commit(); close($fh); open $fh, '<:encoding(UTF-8)', $filename or die $!; $out = do { local $/; <$fh> }; is $out, <<'MABDISK'; ### 99999nM2.01200024 h 001 47918-4 310 Daß Ümläüt 406bj1983 ### 99999nM2.01200024 h 406aj1990k2000 MABDISK done_testing; 07-mab-each.t100644001750001750 116613636113757 15721 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t#!/usr/bin/perl use strict; use warnings; use warnings qw(FATAL utf8); use utf8; use Test::More; use Catmandu::Importer::MAB2; use Catmandu::Fix; my $pkg; BEGIN { $pkg = 'Catmandu::Fix::Bind::mab_each'; use_ok $pkg; } require_ok $pkg; my $fixer = Catmandu::Fix->new(fixes => [q| do mab_each() if mab_match("03.",'ger') add_field(is_ger,true) end end |]); my $importer = Catmandu::Importer::MAB2->new( file => './t/mab2.xml', type => "XML" ); my $record = $fixer->fix($importer->first); ok exists $record->{record}, 'created a MAB2 record'; is $record->{is_ger}, 'true', 'created is_ger tag'; done_testing;sru_mabxml.xml100644001750001750 6307013636113757 16570 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t1.123412652199276829292MABxml-1xml99857743X200911252009120823565999857743XDNB99857743Xu|zuaz|z|||35XA-DE-HEger||||||||||||||m|||z|||1245DNB9999Reihe CKartenElektronische Ressourcevierteljährliches VerzeichnisDeutsche Nationalbibliografie / CDeutsche NationalbibliografieElektronische RessourceDeutsche Nationalbibliothek (Leipzig, Frankfurt am Main, Berlin)Reihe C, Karten [Elektronische Ressource] : vierteljährliches VerzeichnisKartenFrankfurt am MainDeutsche Nationalbibliothek20102010 -Erscheint: März 2010ISSN 1869-3970(Zugang über den Portal-Katalog: kostenfrei), EUR 5.00 (pro Lfg. bei Bereitstellung der PDF-Datei auf dem WWW- bzw. FTP-Server der Deutschen Nationalbibliothek), EUR 6.00 (Papierkopien, banderoliert und gelocht, pro Lfg. inkl. Porto Inland)978394111316909,N51,0046Online-Ressource|010DNB1MABxml-1xml2532449-420091120201002031213529984691492532449-4ZDB2532449-4b|zucz|z|||27XA-DEger||||||||g|||||pbi||||zw||||||cr||||||||||||1240DNB1240laDeutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1NeuerscheinungsdienstDeutsche NationalbibliothekElektronische RessourceNDND2010 -2010Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek2010Gesehen am 12.01.10. - Hauptsacht. von der Einzelveröff.Ersch. wöchentl.2245002-6 Vorg. als Druckausg. --->Deutsche Nationalbibliothek <Leipzig; Frankfurt, Main>: NeuerscheinungsdienstISSN 1611-0153(Zugang über den Portal-Katalog: kostenfrei), EUR 5.00 (pro Lfg. bei Bereitstellung der PDF-Datei auf dem WWW- bzw. FTP-Server der Deutschen Nationalbibliothek), EUR 9.50 (Papierkopien, banderoliert und gelocht, pro Lfg. inkl. Porto Inland)Online-RessourceOnline-Ressourcehttp://www.d-nb.de/service/zd/dnb.htmVerlagkostenfreihttp://d-nb.info/998469149Langzeitarchivierung NationalbibliothekLangzeitarchivierung gewährleistet durch die Deutsche Nationalbibliothek|010DNB|1002MABxml-1xml2535855-820091120201001281031489984685762535855-8ZDB2535855-8b|zucz|z|||35XA-DEger||||||||g|||||pbi||||zm||||||cr||||||||||||1240DNB1240laReihe HHochschulschriftenElektronische Ressourcemonatliches VerzeichnisDeutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1Deutsche Nationalbibliografie / HDeutsche NationalbibliografieElektronische RessourceDeutsche Nationalbibliothek (Leipzig, Frankfurt am Main, Berlin)Reihe H, Hochschulschriften [Elektronische Ressource] : monatliches VerzeichnisHochschulschriften2010 -2010Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek2010Hauptsacht. von der Einzelveröff.Ersch. monatl.2134320-2 Vorg. als Druckausg. --->Deutsche Nationalbibliografie / HISSN 1869-3989(Zugang über den Portal-Katalog: kostenfrei), EUR 5.00 (pro Lfg. bei Bereitstellung der PDF-Datei auf dem WWW- bzw. FTP-Server der Deutschen Nationalbibliothek), EUR 14.00 (Papierkopien, banderoliert und gelocht, pro Lfg. inkl. Porto Inland)Online-RessourceOnline-Ressourcehttp://www.d-nb.de/service/zd/dnb.htmVerlagkostenfreihttp://d-nb.info/998468576Langzeitarchivierung NationalbibliothekLangzeitarchivierung gewährleistet durch die Deutsche Nationalbibliothek|010DNB|1103MABxml-1xml9984679952009112020100203122513DNB998467995z|zuzz|z|||35XA-DEger||||||||g|||||pbi||||zq||||||cr||||||||||||1240DNB1240Reihe CKartenElektronische Ressourcevierteljährliches VerzeichnisDeutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1Deutsche Nationalbibliografie / CDeutsche NationalbibliografieElektronische RessourceDeutsche Nationalbibliothek (Leipzig, Frankfurt am Main, Berlin)Reihe C, Karten [Elektronische Ressource] : vierteljährliches VerzeichnisKarten2010 -2010Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek20102010Ersch. vierteljährl.2141669-2 Vorg. als Druckausg.Deutsche Nationalbibliografie / CISSN 1869-3970(Zugang über den Portal-Katalog: kostenfrei), EUR 5.00 (pro Lfg. bei Bereitstellung der PDF-Datei auf dem WWW- bzw. FTP-Server der Deutschen Nationalbibliothek), EUR 6.00 (Papierkopien, banderoliert und gelocht, pro Lfg. inkl. Porto Inland)Online-RessourceOnline-ressourcehttp://www.d-nb.de/service/zd/dnb.htmVerlagkostenfreiLangzeitarchivierung gewährleistet durch die Deutsche Nationalbibliothek|010DNB|520DNB|1104MABxml-1xml2532441-X20091120201001271506309984672942532441-XDNB998467294b|zucz|z|||35XA-DEger||||||||g|||||pbi||||zw||||||cr||||||||||||1240DNB1240laReihe BMonografien und Periodika außerhalb des VerlagsbuchhandelsElektronische Ressourcewöchentliches VerzeichnisDeutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1Deutsche Nationalbibliografie / BDeutsche NationalbibliografieElektronische RessourceDeutsche Nationalbibliothek (Leipzig, Frankfurt am Main, Berlin)Reihe B, Monografien und Periodika außerhalb des Verlagsbuchhandels [Elektronische Ressource] : wöchentliches VerzeichnisMonografien und Periodika außerhalb des Verlagsbuchhandels2010 -2010Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek2010Gesehen am 12.01.10. - Hauptsacht. von der Einzelveröff.Ersch. wöchentl.2131238-2 Vorg. als Druckausg. --->Deutsche Nationalbibliografie / BISSN 1869-3954(Zugang über den Portal-Katalog: kostenfrei), EUR 5.00 (pro Lfg. bei Bereitstellung der PDF-Datei auf dem WWW- bzw. FTP-Server der Deutschen Nationalbibliothek), EUR 5.00 (Papierkopien, banderoliert und gelocht, pro Lfg. inkl. Porto Inland)Online-RessourceOnline-Ressourcehttp://www.d-nb.de/service/zd/dnb.htmVerlagkostenfreihttp://d-nb.info/998467294Langzeitarchivierung NationalbibliothekLangzeitarchivierung gewährleistet durch die Deutsche Nationalbibliothek|010DNB|1105MABxml-1xml2532426-320091120201001271506569984662122532426-3ZDB2532426-3b|zucz|z|||35XA-DEger||||||||g|||||pbi||||zw||||||cr||||||||||||1240DNB1240laReihe AMonografien und Periodika des VerlagsbuchhandelsElektronische Ressourcewöchentliches VerzeichnisDeutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1Deutsche Nationalbibliografie / ADeutsche NationalbibliografieElektronische RessourceDeutsche Nationalbibliothek (Leipzig, Frankfurt am Main, Berlin)Reihe A, Monografien und Periodika des Verlagsbuchhandels [Elektronische Ressource] : wöchentliches VerzeichnisMonografien und Periodika des Verlagsbuchhandels2010 -2010Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek2010Gesehen am 12.01.10. - Hauptsacht. von der Einzelveröff.Ersch. wöchentl.2131230-8 Vorg. als Druckausg. --->Deutsche Nationalbibliografie / AISSN 1869-3946(Zugang über den Portal-Katalog: kostenfrei), EUR 5.00 (pro Lfg. bei Bereitstellung der PDF-Datei auf dem WWW- bzw. FTP-Server der Deutschen Nationalbibliothek), EUR 12.50 (Papierkopien, banderoliert und gelocht, pro Lfg. inkl. Porto Inland)Online-RessourceOnline-Ressourcehttp://www.d-nb.de/service/zd/dnb.htmVerlagkostenfreihttp://d-nb.info/998466212Langzeitarchivierung NationalbibliothekLangzeitarchivierung gewährleistet durch die Deutsche NationalbibliothekNationalbibliographie|010DNB|1106MABxml-1xml9991560392009121720091217213304999156039DNB999156039a|zuaz|z|||37XA-DE-HEger||||||||g|||||m|||z|||cr||||||||||||1240DNB9999Wolf, Stefan139435476Deutsche Übersetzung des DCMI type vocabularyElektronische RessourceKIM, Kompetenzzentrum Interoperable Metadatencontributor: Stefan Wolf ...FrankfurtDt. Nationalbibliothek20092009urn:nbn:de:101-2009121608Online-RessourceOnline-Ressourcehttp://nbn-resolving.de/urn:nbn:de:101-2009121608Resolving-Systemca. 0,18 MBhttp://www.kim-forum.org/material/pdf/uebersetzung_dc_type.pdfVerlagkostenfreihttp://d-nb.info/999156039/34Langzeitarchivierung Nationalbibliothek|020DNB7MABxml-1xml9989736612009121020091218115638998973661DNB998973661a|zuaz|z|||37XA-DE-HEger||||||||g|||||m|||z|||cr||||||||||||1240DNB1240Brodersen, Maren133848027Deutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1Lieferung von Metadaten für Netzpublikationen an die Deutsche Nationalbibliothek - Metadaten-Kernset DefinitionenElektronische RessourceDeutsche Nationalbibliothek. Red.: Maren Brodersen ...11 10Version 1.0, Stand: 30. November 2009Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek20092009urn:nbn:de:101-2009120326Online-RessourceOnline-Ressourcehttp://nbn-resolving.de/urn:nbn:de:101-2009120326Resolving-Systemca. 0,11 MBhttp://www.d-nb.de/netzpub/ablief/pdf/metadaten_kernset_definitionen.pdfVerlagkostenfreihttp://d-nb.info/998973661/34Langzeitarchivierung Nationalbibliothek|020DNB8MABxml-1xml9989689432009120920091218115644998968943DNB998968943a|zuaz|z|||37XA-DE-HEger||||||||g|||||m|||z|||cr||||||||||||1240DNB1240Brodersen, Maren133848027Deutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1Lieferung von Metadaten für Netzpublikationen an die Deutsche Nationalbibliothek - Metadaten-Kernset im Format ONIX (OAI-Schnittstelle)Elektronische RessourceDeutsche Nationalbibliothek. Red.: Maren Brodersen ...11 11Version 1.1, Stand: 30.11.2009Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek20092009urn:nbn:de:101-2009120339Online-RessourceOnline-Ressourcehttp://nbn-resolving.de/urn:nbn:de:101-2009120339Resolving-Systemca. 0,09 MBhttp://www.d-nb.de/netzpub/ablief/pdf/metadaten_kernset_onix.pdfVerlagkostenfreihttp://d-nb.info/998968943/34Langzeitarchivierung Nationalbibliothek|020DNB9MABxml-1xml99896882X200912092009121617143499896882XDNB99896882Xa|zuaz|z|||37XA-DE-HEger||||||||g|||||m|||z|||cr||||||||||||1240DNB1240Kett, Jürgen136596916Deutsche Nationalbibliothek <Leipzig; Frankfurt, Main>10140798-1Automatisiertes Abliefern über Harvesting-VerfahrenElektronische RessourceWege zur effizienten Ablieferung von NetzpublikationenDeutsche Nationalbibliothek. Red.: Jürgen Kett ...11 11Version 1.1, Stand: 30.11.2009Leipzig ; Frankfurt, M. ; BerlinDt. Nationalbibliothek20092009urn:nbn:de:101-2009120311Online-RessourceOnline-Ressourcehttp://nbn-resolving.de/urn:nbn:de:101-2009120311Resolving-Systemca. 0,14 MBhttp://www.d-nb.de/netzpub/ablief/pdf/automatisierte_ablieferung.pdfVerlagkostenfreihttp://d-nb.info/99896882X/34Langzeitarchivierung Nationalbibliothek|020DNB10111.1WOE=Deutsche NationalbibliothekMABxml-1Deutsche Nationalbibliothekmab2_faulty.dat100644001750001750 23513636113757 16526 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t02020nM2.01200024 h001 47918-4 0202XnM2.01200024 h001 47918-4 02020nM2.01200024 h001  02020nM2.01200024 h001 47918-4025#010420517Catmandu000755001750001750 013636113757 15546 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/libMAB2.pm100644001750001750 324613636113757 16732 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandupackage Catmandu::MAB2; our $VERSION = '0.24'; use strict; use warnings; 1; # End of Catmandu::MAB2 __END__ =pod =encoding UTF-8 =head1 NAME Catmandu::MAB2 - Catmandu modules for working with MAB2 data. =begin markdown [![Build Status](https://travis-ci.org/jorol/Catmandu-MAB2.png)](https://travis-ci.org/jorol/Catmandu-MAB2) [![Coverage Status](https://coveralls.io/repos/jorol/Catmandu-MAB2/badge.png?branch=devel)](https://coveralls.io/r/jorol/Catmandu-MAB2?branch=devel) [![Kwalitee Score](http://cpants.cpanauthors.org/dist/Catmandu-MAB2.png)](http://cpants.cpanauthors.org/dist/Catmandu-MAB2) [![CPAN version](https://badge.fury.io/pl/Catmandu-MAB2.png)](http://badge.fury.io/pl/Catmandu-MAB2) =end markdown =head1 DESCRIPTION Catmandu::MAB2 provides methods to work with MAB2 data within the L framework. See L and L for an introduction into Catmandu. =head1 CATMANDU MODULES =over =item * L =item * L =item * L =item * L =back =head1 INTERNAL MODULES Parser and writer for MAB2 data. =over =item * L =item * L =item * L =item * L =item * L =item * L =item * L =back =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut mab2disk_faulty.dat100644001750001750 20413636113757 17375 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t### 0202XnM2.01200024 h 001 47918-4 ### 02020nM2.01200024 h 001 ### 02020nM2.01200024 h 001 47918-4 025#010420517 author-pod-syntax.t100644001750001750 45413636113757 17425 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t#!perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { print qq{1..0 # SKIP these tests are for testing by the author\n}; exit } } # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. use strict; use warnings; use Test::More; use Test::Pod 1.41; all_pod_files_ok(); Parser000755001750001750 013636113757 15727 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2RAW.pm100644001750001750 750513636113757 17065 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2/Parserpackage MAB2::Parser::RAW; our $VERSION = '0.24'; use strict; use warnings; use charnames qw< :full >; use Carp qw(carp croak); use Readonly; Readonly my $LEADER_LEN => 24; Readonly my $SUBFIELD_INDICATOR => qq{\N{INFORMATION SEPARATOR ONE}}; Readonly my $END_OF_FIELD => qq{\N{INFORMATION SEPARATOR TWO}}; Readonly my $END_OF_RECORD => qq{\N{INFORMATION SEPARATOR THREE}}; sub new { my $class = shift; my $file = shift; my $self = { filename => undef, rec_number => 0, reader => undef, }; # check for file or filehandle my $ishandle = eval { fileno($file); }; if ( !$@ && defined $ishandle ) { $self->{filename} = scalar $file; $self->{reader} = $file; } elsif ( -e $file ) { open $self->{reader}, '<:encoding(UTF-8)', $file or croak "cannot read from file $file\n"; $self->{filename} = $file; } else { croak "file or filehande $file does not exists"; } return ( bless $self, $class ); } sub next { my $self = shift; if ( my $line = $self->{reader}->getline() ) { $self->{rec_number}++; my $record = _decode($line); # get last subfield from 001 as id my ($id) = map { $_->[-1] } grep { $_->[0] =~ '001' } @{$record}; return { _id => $id, record => $record }; } return; } sub _decode { my $reader = shift; chomp $reader; if ( substr( $reader, -1, 1 ) ne $END_OF_RECORD ) { carp "record terminator not found"; } my @record; my $leader = substr $reader, 0, $LEADER_LEN; if ( $leader =~ m/(\d{5}\wM2.0\d*\s*\w)/ ) { push @record, [ 'LDR', '', '_', $leader ]; } else { carp "faulty record leader: \"$leader\""; } my @fields = split $END_OF_FIELD, substr( $reader, $LEADER_LEN, -1 ); for my $field (@fields) { if ( length $field <= 4 ) { carp "faulty field: \"$field\""; next; } if ( my ( $tag, $ind, $data ) = $field =~ m/^(\d{3})([A-Za-z0-9\s])(.*)/ ) { if ( $data =~ m/\s*$SUBFIELD_INDICATOR(.*)/ ) { push( @record, [ $tag, $ind, map { ( substr( $_, 0, 1 ), substr( $_, 1 ) ) } split /$SUBFIELD_INDICATOR/, $1 ] ); } else { push @record, [ $tag, $ind, '_', $data ]; } } else { carp "faulty field structure: \"$field\""; next; } } return \@record; } 1; # End of MAB2::Parser::RAW __END__ =pod =encoding UTF-8 =head1 NAME MAB2::Parser::RAW - MAB2 RAW format parser =head1 SYNOPSIS L is a parser for raw MAB2 records. L expects UTF-8 encoded files as input. Otherwise provide a filehande with a specified I/O layer. use MAB2::Parser::RAW; my $parser = MAB2::Parser::RAW->new( $filename ); while ( my $record_hash = $parser->next() ) { # do something } =head1 Arguments =over =item C Path to file with MAB2 Band records. =item C Open filehandle for file with MAB2 Band records. =back =head1 METHODS =head2 new($filename | $filehandle) =head2 next() Reads the next record from MAB2 input stream. Returns a Perl hash. =head2 _decode($record) Deserialize a raw MAB2 record to an ARRAY of ARRAYs. =head1 SEEALSO L. =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut XML.pm100644001750001750 735313636113757 17075 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2/Parserpackage MAB2::Parser::XML; our $VERSION = '0.24'; use strict; use warnings; use Carp qw; use XML::LibXML::Reader; sub new { my $class = shift; my $input = shift; my $self = { filename => undef, rec_number => 0, xml_reader => undef, }; # check for file or filehandle my $ishandle = eval { fileno($input); }; if ( !$@ && defined $ishandle ) { binmode $input; # drop all PerlIO layers, as required by libxml2 my $reader = XML::LibXML::Reader->new( IO => $input ) or croak "cannot read from filehandle $input\n"; $self->{filename} = scalar $input; $self->{xml_reader} = $reader; } elsif ( defined $input && $input !~ /\n/ && -e $input ) { my $reader = XML::LibXML::Reader->new( location => $input ) or croak "cannot read from file $input\n"; $self->{filename} = $input; $self->{xml_reader} = $reader; } elsif ( defined $input && length $input > 0 ) { my $reader = XML::LibXML::Reader->new( string => $input ) or croak "cannot read XML string $input\n"; $self->{xml_reader} = $reader; } else { croak "file, filehande or string $input does not exists"; } return ( bless $self, $class ); } sub next { my $self = shift; if ( $self->{xml_reader}->nextElement('datensatz') ) { $self->{rec_number}++; my $record = _decode( $self->{xml_reader} ); my ($id) = map { $_->[-1] } grep { $_->[0] =~ '001' } @{$record}; return { _id => $id, record => $record }; } return; } sub _decode { my $reader = shift; my @record; # get all field nodes from MAB2 XML record; foreach my $field_node ( $reader->copyCurrentNode(1)->getChildrenByTagName('feld') ) { my @field; # get field tag number my $tag = $field_node->getAttribute('nr'); my $ind = $field_node->getAttribute('ind') // ''; # ToDo: textContent ignores and # Check for data or subfields if ( my @subfields = $field_node->getChildrenByTagName('uf') ) { push( @field, ( $tag, $ind ) ); # get all subfield nodes foreach my $subfield_node (@subfields) { my $subfield_code = $subfield_node->getAttribute('code'); my $subfield_data = $subfield_node->textContent; push( @field, ( $subfield_code, $subfield_data ) ); } } else { my $data = $field_node->textContent(); push( @field, ( $tag, $ind, '_', $data ) ); } push( @record, [@field] ); } return \@record; } 1; __END__ =pod =encoding UTF-8 =head1 NAME MAB2::Parser::XML - MAB2 XML parser =head1 SYNOPSIS L is a parser for MAB2 XML records. use MAB2::Parser::XML; my $parser = MAB2::Parser::XML->new( $filename ); while ( my $record_hash = $parser->next() ) { # do something } =head1 Arguments =over =item C Path to file with MAB2 XML records. =item C Open filehandle for file with MAB2 XML records. =item C XML string with MAB2 XML records. =back =head1 METHODS =head2 new($filename | $filehandle | $string) =head2 next() Reads the next record from MAB2 XML input stream. Returns a Perl hash. =head2 _decode($record) Deserialize a MAB2 XML record to an an ARRAY of ARRAYs. =head1 SEEALSO L. =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Writer000755001750001750 013636113757 15747 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2RAW.pm100644001750001750 500513636113757 17076 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2/Writerpackage MAB2::Writer::RAW; our $VERSION = '0.24'; use strict; use Moo; with 'MAB2::Writer::Handle'; use charnames ':full'; use Readonly; Readonly my $SUBFIELD_INDICATOR => qq{\N{INFORMATION SEPARATOR ONE}}; Readonly my $END_OF_FIELD => qq{\N{INFORMATION SEPARATOR TWO}}; Readonly my $END_OF_RECORD => qq{\N{INFORMATION SEPARATOR THREE}\N{LINE FEED}}; sub _write_record { my ( $self, $record ) = @_; my $fh = $self->fh; if ( $record->[0][0] eq 'LDR' ) { my $leader = $record->[0]; print $fh $leader->[3]; } else { # set default record leader print $fh "99999nM2.01200024 h"; } foreach my $field (@$record) { next if $field->[0] eq 'LDR'; if ( $field->[2] eq '_' ) { print $fh $field->[0], $field->[1], $field->[3], $END_OF_FIELD; } else { print $fh $field->[0], $field->[1]; for ( my $i = 2; $i < scalar @$field; $i += 2 ) { my $subfield_code = $field->[ $i ]; my $value = $field->[ $i + 1 ]; print $fh $SUBFIELD_INDICATOR, $subfield_code, $value; } print $fh $END_OF_FIELD; } } print $fh $END_OF_RECORD; } 1; __END__ =pod =encoding UTF-8 =head1 NAME MAB2::Writer::RAW - MAB2 RAW format serializer =head1 SYNOPSIS L is a MAB2 serializer. use MAB2::Writer::RAW; my @mab_records = ( [ ['001', ' ', '_', '2415107-5'], ['331', ' ', '_', 'Code4Lib journal'], ['655', 'e', 'u', 'http://journal.code4lib.org/', 'z', 'kostenfrei'], ... ], { record => [ ['001', ' ', '_', '2415107-5'], ['331', ' ', '_', 'Code4Lib journal'], ['655', 'e', 'u', 'http://journal.code4lib.org/', 'z', 'kostenfrei'], ... ] } ); $writer = MAB2::Writer::RAW->new( fh => $fh ); foreach my $record (@mab_records) { $writer->write($record); } =head1 Arguments See L. =head1 METHODS =head2 new(file => $file | fh => $fh [, encoding => 'UTF-8']) =head2 _write_record($record) =head1 SEEALSO L, L. =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut XML.pm100644001750001750 710013636113757 17103 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2/Writerpackage MAB2::Writer::XML; our $VERSION = '0.24'; use strict; use Moo; with 'MAB2::Writer::Handle'; has xml_declaration => ( is => 'ro' , default => sub {0} ); has collection => ( is => 'ro' , default => sub {0} ); sub start { my ($self) = @_; print { $self->fh } "\n" if $self->xml_declaration; print { $self->fh } "\n" if $self->collection; } sub _write_record { my ( $self, $record ) = @_; my $fh = $self->fh; if ( $record->[0][0] eq 'LDR' ) { my $leader = $record->[0]; my ( $status, $typ ) = ( $1, $2 ) if $leader->[3] =~ /^\d{5}(\w)M2\.0\d*\s*(\w)$/; print $fh "\n"; } else { # default to typ and status print $fh "\n"; } foreach my $field (@$record) { next if $field->[0] eq 'LDR'; if ( $field->[2] eq '_' ) { print $fh "[0]\" ind=\"$field->[1]\">$field->[3]\n"; } else { print $fh "[0]\" ind=\"$field->[1]\">\n"; for ( my $i = 2; $i < scalar @$field; $i += 2 ) { my $value = $field->[ $i + 1 ]; print $fh " [$i]\">$value\n"; } print $fh "\n"; } } print $fh "\n"; } sub end { my ($self) = @_; print { $self->fh } "\n" if $self->collection; } 1; __END__ =pod =encoding UTF-8 =head1 NAME MAB2::Writer::XML - MAB2 XML format serializer =head1 SYNOPSIS L is a MAB2 XML serializer. use MAB2::Writer::XML; my @mab_records = ( [ ['001', ' ', '_', '2415107-5'], ['331', ' ', '_', 'Code4Lib journal'], ['655', 'e', 'u', 'http://journal.code4lib.org/', 'z', 'kostenfrei'], ... ], { record => [ ['001', ' ', '_', '2415107-5'], ['331', ' ', '_', 'Code4Lib journal'], ['655', 'e', 'u', 'http://journal.code4lib.org/', 'z', 'kostenfrei'], ... ] } ); my $writer = MAB2::Writer::XML->new( fh => $fh, xml_declaration => 1, collection => 1 ); $writer->start(); foreach my $record (@mab_records) { $writer->write($record); } $writer->end(); =head1 Arguments =over =item C Write XML declaration. Set to 0 or 1. Default: 0. Optional. =item C Wrap records in collection element (). Set to 0 or 1. Default: 0. Optional. =back See also L. =head1 METHODS =head2 new(file => $file | fh => $fh [, xml_declaration => 1, collection => 1, encoding => 'UTF-8']) =head2 start() Writes XML declaration and/or start element for a collection. =head2 _write_record() =head2 end() Writes end element for the collection. =head1 SEEALSO L, L. =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut script000755001750001750 013636113757 14550 5ustar00joroljorol000000000000Catmandu-MAB2-0.24mab2_convert.pl100644001750001750 476613636113757 17643 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/script#!/usr/bin/perl # PODNAME: mab2_convert.pl our $VERSION = '0.11'; use utf8; use warnings; use Getopt::Long; use MAB2::Parser::Disk; use MAB2::Parser::RAW; use MAB2::Parser::XML; use MAB2::Writer::Disk; use MAB2::Writer::RAW; use MAB2::Writer::XML; my ($in, $out, $from, $to); my $options_ok = GetOptions ( 'i=s' => \$in, 'o=s' => \$out, 'f=s' => \$from, 't=s' => \$to, 'help' => sub { cli_usage() }, 'usage' => sub { cli_usage() }, ); cli_usage() if !$options_ok or !$in or !$out or !$from or !$to; my $formats = qr{^(Disk|RAW|XML)$}; die "Not a valid input format \"$from\"" if $from !~ m/$formats/; die "Not a valid output format \"$to\"" if $to !~ m/$formats/; convert($in, $out, $from, $to); sub cli_usage { my $usage = <new( $in ); my $writer; if ($to eq 'XML') { $writer = MAB2::Writer::XML->new( file => $out, xml_declaration => 1, collection => 1 ); $writer->start(); } else{ $writer = "MAB2::Writer::$to"->new( file => $out ); } while ( my $record = $parser->next() ) { $writer->write($record); } $writer->end() if $to eq 'XML'; print "DONE\n"; } __END__ =pod =encoding UTF-8 =head1 NAME mab2_convert.pl - converter for MAB2 formats =head1 SYNOPSIS Usage: mab2_convert.pl -i mab2raw.dat -o mab2xml.xml -f RAW -t XML Description: Convert records from one MAB2 format to an other. Options: -i Specify input file. -o Specify output file. -f Specify input format (Disk|RAW|XML). -t Specify output format (Disk|RAW|XML). --help Print this documentation =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Disk.pm100644001750001750 744213636113757 17326 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2/Parserpackage MAB2::Parser::Disk; our $VERSION = '0.24'; use strict; use warnings; use charnames qw< :full >; use Carp qw(carp croak); use Readonly; Readonly my $SUBFIELD_INDICATOR => qq{\N{INFORMATION SEPARATOR ONE}}; Readonly my $END_OF_FIELD => qq{\N{LINE FEED}}; Readonly my $END_OF_RECORD => q{}; sub new { my $class = shift; my $file = shift; my $self = { filename => undef, rec_number => 0, reader => undef, }; # check for file or filehandle my $ishandle = eval { fileno($file); }; if ( !$@ && defined $ishandle ) { $self->{filename} = scalar $file; $self->{reader} = $file; } elsif ( -e $file ) { open $self->{reader}, '<:encoding(UTF-8)', $file or croak "cannot read from file $file\n"; $self->{filename} = $file; } else { croak "file or filehande $file does not exists"; } return ( bless $self, $class ); } sub next { my $self = shift; local $/ = $END_OF_RECORD; if ( my $data = $self->{reader}->getline() ) { $self->{rec_number}++; my $record = _decode($data); # get last subfield from 001 as id my ($id) = map { $_->[-1] } grep { $_->[0] =~ '001' } @{$record}; return { _id => $id, record => $record }; } return; } sub _decode { my $reader = shift; chomp($reader); my @record; my @fields = split( $END_OF_FIELD, $reader ); my $leader = shift @fields; if ($leader =~ m/^\N{NUMBER SIGN}{3}\s(\d{5}[cdnpu]M2.0\d{7}\s{6}\w)/xms ) { push( @record, [ 'LDR', '', '_', $1 ] ); } else { carp "faulty record leader: $leader"; } foreach my $field (@fields) { if ( length $field <= 4 ) { carp "faulty field: \"$field\""; next; } if ( my ( $tag, $ind, $data ) = $field =~ m/^(\d{3})([A-Za-z0-9\s])(.*)/ ) { # check if data contains subfield indicators if ( $data =~ m/\s*($SUBFIELD_INDICATOR|\$)(.*)/ ) { my $subfield_indicator = $1 eq '$' ? '\$' : $1; push @record, [ $tag, $ind, map { ( substr( $_, 0, 1 ), substr( $_, 1 ) ) } split /$subfield_indicator/, $2 ]; } else { push @record, [ $tag, $ind, '_', $data ]; } } else { carp "faulty field structure: \"$field\""; next; } } return \@record; } 1; # End of MAB2::Parser::Disk __END__ =pod =encoding UTF-8 =head1 NAME MAB2::Parser::Disk - MAB2 Diskette format parser =head1 SYNOPSIS L is a parser for MAB2 Diskette records. L expects UTF-8 encoded files as input. Otherwise provide a filehande with a specified I/O layer. use MAB2::Parser::Disk; my $parser = MAB2::Parser::Disk->new( $filename ); while ( my $record_hash = $parser->next() ) { # do something } =head1 Arguments =over =item C Path to file with MAB2 Diskette records. =item C Open filehandle for file with MAB2 Diskette records. =back =head1 METHODS =head2 new($filename | $filehandle) =head2 next() Reads the next record from MAB2 input stream. Returns a Perl hash. =head2 _decode($record) Deserialize a raw MAB2 record to an ARRAY of ARRAYs. =head1 SEE ALSO L. =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Disk.pm100644001750001750 540313636113757 17341 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2/Writerpackage MAB2::Writer::Disk; our $VERSION = '0.24'; use strict; use charnames ':full'; use Readonly; use Moo; with 'MAB2::Writer::Handle'; has subfield_indicator => ( is => 'rw', default => sub { qq{\N{INFORMATION SEPARATOR ONE}} } ); Readonly my $END_OF_FIELD => qq{\N{LINE FEED}}; Readonly my $END_OF_RECORD => qq{\N{LINE FEED}}; sub _write_record { my ( $self, $record ) = @_; my $fh = $self->fh; my $SUBFIELD_INDICATOR = $self->subfield_indicator; if ( $record->[0][0] eq 'LDR' ) { my $leader = $record->[0]; print $fh "### ", $leader->[3], $END_OF_FIELD; } else { # set default record leader print $fh "### 99999nM2.01200024 h", $END_OF_FIELD; } foreach my $field (@$record) { next if $field->[0] eq 'LDR'; if ( $field->[2] eq '_' ) { print $fh $field->[0], $field->[1], $field->[3], $END_OF_FIELD; } else { print $fh $field->[0], $field->[1]; for ( my $i = 2; $i < scalar @$field; $i += 2 ) { my $subfield_code = $field->[ $i ]; my $value = $field->[ $i + 1 ]; print $fh $SUBFIELD_INDICATOR, $subfield_code, $value; } print $fh $END_OF_FIELD; } } print $fh $END_OF_RECORD; } 1; __END__ =pod =encoding UTF-8 =head1 NAME MAB2::Writer::Disk - MAB2 Diskette format serializer =head1 SYNOPSIS L is a MAB2 Diskette serializer. use MAB2::Writer::Disk; my @mab_records = ( [ ['001', ' ', '_', '2415107-5'], ['331', ' ', '_', 'Code4Lib journal'], ['655', 'e', 'u', 'http://journal.code4lib.org/', 'z', 'kostenfrei'], ... ], { record => [ ['001', ' ', '_', '2415107-5'], ['331', ' ', '_', 'Code4Lib journal'], ['655', 'e', 'u', 'http://journal.code4lib.org/', 'z', 'kostenfrei'], ... ] } ); $writer = MAB2::Writer::Disk->new( fh => $fh ); foreach my $record (@mab_records) { $writer->write($record); } =head1 Arguments =over =item C Set subfield separator. Default: INFORMATION SEPARATOR ONE. Optional. =back See also L. =head1 METHODS =head2 new(file => $file | fh => $fh [, encoding => 'UTF-8', subfield_separator => '$']) =head2 _write_record($record) =head1 SEEALSO L, L. =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut lib000755001750001750 013636113757 14255 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/tMockHTTPClient.pm100755001750001750 46413636113757 17472 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/t/libpackage MockHTTPClient; #ABSTRACT: HTTP::Tiny mockup class to return XML data from file based on a query use Moo; sub get { my ($self, $url) = @_; $url =~ /query=([^&]+)/; my $xml = do {local (@ARGV, $/) = "t/$1"; <>}; {success => 1, status => 200, reason => 'OK', content => $xml,}; } 1; Handle.pm100644001750001750 364213636113757 17645 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/MAB2/Writerpackage MAB2::Writer::Handle; our $VERSION = '0.24'; use strict; use Moo::Role; use Carp qw(croak); use Encode qw(find_encoding); use Scalar::Util qw(blessed openhandle); has encoding => ( is => 'rw', isa => sub { find_encoding($_[0]) or croak "encoding \"$_[0]\" is not a valid encoding"; }, default => sub { 'UTF-8' }, ); has file => ( is => 'rw', isa => sub { croak 'expect file!' unless defined $_[0]; }, trigger => \&_set_fh, ); has fh => ( is => 'rw', isa => sub { my $ishandle = eval { fileno( $_[0] ); }; croak 'expect filehandle or object with method print!' unless !$@ and defined $ishandle or ( blessed $_[0] && $_[0]->can('print') ); }, default => sub { \*STDOUT } ); sub _set_fh { my ($self) = @_; my $encoding = $self->encoding; open my $fh, ">:encoding($encoding)", $self->file or croak 'could not open file!'; $self->fh($fh); } sub close_fh { my ($self) = @_; close $self->{fh}; } sub write { my ($self, @records) = @_; foreach my $record (@records) { $record = $record->{record} if ref $record eq 'HASH'; $self->_write_record($record); } } 1; __END__ =pod =encoding UTF-8 =head1 NAME MAB2::Writer::Handle - Utility class for common MAB2::Writer arguments and methods. =head1 Arguments =over =item C Path to file. =item C Open filehandle. =item C Set encoding. =back =head1 METHODS =head2 _set_fh() Open filehandle (with specified encoding) from file. =head2 close_fh() Close filehandle. =head2 write() Write record to filehandle. =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Fix000755001750001750 013636113757 16274 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandumab_map.pm100644001750001750 1364713636113757 20421 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Fixpackage Catmandu::Fix::mab_map; our $VERSION = '0.24'; use Catmandu::Sane; use Carp qw(confess); use Moo; use Catmandu::Fix::Has; has mab_path => ( fix_arg => 1 ); has path => ( fix_arg => 1 ); has record => ( fix_opt => 1 ); has split => ( fix_opt => 1 ); has join => ( fix_opt => 1 ); has value => ( fix_opt => 1 ); has pluck => ( fix_opt => 1 ); sub emit { my ( $self, $fixer ) = @_; my $path = $fixer->split_path( $self->path ); my $record_key = $fixer->emit_string( $self->record // 'record' ); my $join_char = $fixer->emit_string( $self->join // '' ); my $mab_path = $self->mab_path; my $field_regex; my ( $field, $ind, $subfield_regex, $from, $to ); if ( $mab_path =~ /(\S{3})(\[(.+)\])?([_a-z0-9]+)?(\/(\d+)(-(\d+))?)?/ ) { $field = $1; $ind = $3; $subfield_regex = defined $4 ? "[$4]" : "[_A-Za-z0-9]"; $from = $6; $to = $8; } else { Catmandu::Error->throw('invalid mab path'); } $field_regex = $field; $field_regex =~ s/\*/./g; my $var = $fixer->var; my $vals = $fixer->generate_var; my $perl = $fixer->emit_declare_vars( $vals, '[]' ); $perl .= $fixer->emit_foreach( "${var}->{${record_key}}", sub { my $var = shift; my $v = $fixer->generate_var; my $perl = ""; $perl .= "next if ${var}->[0] !~ /${field_regex}/;"; if (defined $ind) { $perl .= "next if (!defined ${var}->[1] || ${var}->[1] ne '${ind}');"; } if ( $self->value ) { $perl .= $fixer->emit_declare_vars( $v, $fixer->emit_string( $self->value ) ); } else { my $i = $fixer->generate_var; my $add_subfields = sub { my $start = shift; if ($self->pluck) { # Treat the subfield_regex as a hash index my $pluck = $fixer->generate_var; return "my ${pluck} = {};" . "for (my ${i} = ${start}; ${i} < \@{${var}}; ${i} += 2) {". "push(\@{ ${pluck}->{ ${var}->[${i}] } }, ${var}->[${i} + 1]);" . "}" . "for my ${i} (split('','${subfield_regex}')) { " . "push(\@{${v}}, \@{ ${pluck}->{${i}} }) if exists ${pluck}->{${i}};" . "}"; } else { # Treat the subfield_regex as regex that needs to match the subfields return "for (my ${i} = ${start}; ${i} < \@{${var}}; ${i} += 2) {". "if (${var}->[${i}] =~ /${subfield_regex}/) {". "push(\@{${v}}, ${var}->[${i} + 1]);". "}". "}"; } }; $perl .= $fixer->emit_declare_vars( $v, "[]" ); $perl .= $add_subfields->(2); $perl .= "if (\@{${v}}) {"; if ( !$self->split ) { $perl .= "${v} = join(${join_char}, \@{${v}});"; if ( defined( my $off = $from ) ) { my $len = defined $to ? $to - $off + 1 : 1; $perl .= "if (eval { ${v} = substr(${v}, ${off}, ${len}); 1 }) {"; } } $perl .= $fixer->emit_create_path( $fixer->var, $path, sub { my $var = shift; if ( $self->split ) { "if (is_array_ref(${var})) {" . "push \@{${var}}, ${v};" . "} else {" . "${var} = [${v}];" . "}"; } else { "if (is_string(${var})) {" . "${var} = join(${join_char}, ${var}, ${v});" . "} else {" . "${var} = ${v};" . "}"; } } ); if ( defined($from) ) { $perl .= "}"; } $perl .= "}"; } $perl; } ); $perl; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Catmandu::Fix::mab_map - copy mab values of one field to a new field =head1 SYNOPSIS # Copy all 245 subfields into the my.title hash mab_map('245','my.title'); # Copy the 245-$a$b$c subfields into the my.title hash mab_map('245abc','my.title'); # Copy the 100 subfields into the my.authors array mab_map('100','my.authors.$append'); # Add the 710 subfields into the my.authors array mab_map('710','my.authors.$append'); # Copy the 600-$x subfields into the my.subjects array while packing each into a genre.text hash mab_map('600x','my.subjects.$append', -in => 'genre.text'); # Copy the 008 characters 35-35 into the my.language hash mab_map('008_/35-35','my.language'); # Copy all the 600 fields into a my.stringy hash joining them by '; ' mab_map('600','my.stringy', -join => '; '); # When 024 field exists create the my.has024 hash with value 'found' mab_map('024','my.has024', -value => 'found'); # Do the same examples now with the fields in 'record2' mab_map('245','my.title', -record => 'record2'); =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Exporter000755001750001750 013636113757 17356 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/CatmanduMAB2.pm100644001750001750 616213636113757 20542 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Exporterpackage Catmandu::Exporter::MAB2; our $VERSION = '0.24'; use Catmandu::Sane; use MAB2::Writer::Disk; use MAB2::Writer::RAW; use MAB2::Writer::XML; use Moo; with 'Catmandu::Exporter'; has type => ( is => 'ro', default => sub {'raw'} ); has xml_declaration => ( is => 'ro', default => sub {0} ); has collection => ( is => 'ro', default => sub {0} ); has writer => ( is => 'lazy' ); sub _build_writer { my ($self) = @_; my $type = lc( $self->{type} ); if ( $type eq 'raw' ) { MAB2::Writer::RAW->new( fh => $self->fh ); } elsif ( $type eq 'disk' ) { MAB2::Writer::Disk->new( fh => $self->fh ); } elsif ( $type eq 'xml' ) { MAB2::Writer::XML->new( fh => $self->fh, xml_declaration => $self->xml_declaration, collection => $self->collection ); } else { die "unknown type: $type"; } } sub add { my ( $self, $data ) = @_; if ( !$self->count ) { if ( lc( $self->type ) eq 'xml' ) { $self->writer->start(); } } $self->writer->write($data); } sub commit { my ($self) = @_; if ( $self->collection ) { $self->writer->end(); } $self->writer->close_fh(); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Catmandu::Exporter::MAB2 - Package that exports MAB2 data =head1 SYNOPSIS use Catmandu::Exporter::MAB2; my $exporter = Catmandu::Exporter::MAB2->new(file => "mab2.dat", type => "RAW"); my $data = { record => [ ... [245, '1', 'a', 'Cross-platform Perl /', 'c', 'Eric F. Johnson.'], ... ], }; $exporter->add($data); $exporter->commit; =head1 Arguments =over =item C Path to file with MAB2 records. =item C Open filehandle for file with MAB2 records. =item C Specify type of MAB2 records: Disk (Diskette), RAW (Band), XML. Default: 001. Optional. =item C Write XML declaration. Set to 0 or 1. Default: 0. Optional. =item C Wrap records in collection element (). Set to 0 or 1. Default: 0. Optional. =back =head1 METHODS =head2 new(file => $file | fh => $filehandle [, type => XML, xml-declaration => 1, collection => 1]) Create a new Catmandu MAB2 exports which serializes into a $file. =head2 add($data) Add record to exporter. =head2 commit() Close collection (optional) and filehandle. =head1 CONFIGURATION In addition to the configuration provided by L (C, C, etc.) the importer can be configured with the following parameters: =over =item type MAB2 syntax variant. See L. =item xml_declaration Write XML declaration. Set to 0 or 1. Default: 0. Optional. =item collection Wrap records in collection element (). Set to 0 or 1. Default: 0. Optional. =back =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Importer000755001750001750 013636113757 17347 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/CatmanduMAB2.pm100644001750001750 614113636113757 20530 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Importerpackage Catmandu::Importer::MAB2; our $VERSION = '0.24'; use Catmandu::Sane; use Moo; use MAB2::Parser::Disk; use MAB2::Parser::RAW; use MAB2::Parser::XML; with 'Catmandu::Importer'; has type => ( is => 'ro', default => sub {'RAW'} ); has id => ( is => 'ro', default => sub {'001'} ); sub mab_generator { my $self = shift; my $file; my $type = lc($self->type); if ( $type eq 'raw' ) { $file = MAB2::Parser::RAW->new( $self->fh ); } elsif ( $type eq 'xml' ) { $self->{encoding} = ':raw'; # set encoding to :raw to drop PerlIO layers, as required by libxml2 $file = MAB2::Parser::XML->new( $self->fh ); } elsif ( $type eq 'disk' ) { $file = MAB2::Parser::Disk->new( $self->fh ); } else { Catmandu::Error->throw('unknown type'); } my $id = $self->id; sub { my $record = $file->next(); return unless $record; return $record; }; } sub generator { my ($self) = @_; my $type = lc($self->type); if ( $type =~ /raw|xml|disk$/ ) { return $self->mab_generator; } else { Catmandu::Error->throw('unknown type (suppported types: Disk, RAW, XML)'); } } 1; __END__ =pod =encoding UTF-8 =head1 NAME Catmandu::Importer::MAB2 - Package that imports MAB2 data =head1 SYNOPSIS use Catmandu::Importer::MAB2; my $importer = Catmandu::Importer::MAB2->new(file => "./t/mab2.dat", type=> "raw"); my $n = $importer->each(sub { my $hashref = $_[0]; # ... }); To convert between MAB2 syntax variants with the L command line client: catmandu convert MAB2 --type raw to MAB2 --type xml < mab2.dat =head1 MAB2 The parsed MAB2 record is a HASH containing two keys '_id' containing the 001 field (or the system identifier of the record) and 'record' containing an ARRAY of ARRAYs for every field: { 'record' => [ [ '001', ' ', '_', 'fol05882032 ' ], [ 245, 'a', 'a', 'Cross-platform Perl /', 'c', 'Eric F. Johnson.' ], ], '_id' => 'fol05882032' } =head1 METHODS This module inherits all methods of L and by this L. =head1 CONFIGURATION In addition to the configuration provided by L (C, C, etc.) the importer can be configured with the following parameters: =over =item type Describes the MAB2 syntax variant. Supported values (case ignored) include the default value C for MABxml, C for human-readable MAB2 serialization ("Diskettenformat") or C for data-exchange MAB2 serialization ("Bandformat"). =back =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Bind000755001750001750 013636113757 17150 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Fixmab_each.pm100644001750001750 420413636113757 21365 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Fix/Bindpackage Catmandu::Fix::Bind::mab_each; our $VERSION = '0.24'; use Moo; use Catmandu::Util; with 'Catmandu::Fix::Bind', 'Catmandu::Fix::Bind::Group'; has done => (is => 'ro'); sub unit { my ($self,$data) = @_; $self->{done} = 0; $data; } sub bind { my ($self,$mvar,$code) = @_; return $mvar if $self->done; my $rows = $mvar->{record} // []; my @new = (); for my $row (@{$rows}) { $mvar->{record} = [$row]; my $fixed = $code->($mvar); push @new , @{$fixed->{record}} if defined($fixed) && exists $fixed->{record}; } $mvar->{record} = \@new if exists $mvar->{record}; $self->{done} = 1; $mvar; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Catmandu::Fix::Bind::mab_each - a binder that loops over MAB2 fields =head1 SYNOPSIS # Only add field 331 to the title when field 412 matches 'Heise' do mab_each() if mab_match("412","Heise") mab_map("331",title) end end # Delete all the 700 subject fields do mab_each() if mab_match("700",".*") reject() end end =head1 DESCRIPTION The mab_each binder will iterate over each individual MAB2 field and execute the fixes only in context over each individual field. If a MAB2 record contains: 705 $a775.05$c775 705 $a702.08$c702 then the fix do mab_each() mab_map("705a",subject.$append) end will have the same effect as mab_map("705a",subject.$append) because C by default loops over all repeated MAB2 fields. But the C bind has the advantage to process fields in context. E.g. to only map fields where the subfield $c doesn't contain '702' you can write: do mab_each() unless mab_match("705","702") mab_map("705",subject.$append) end end =head1 SEE ALSO L =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Condition000755001750001750 013636113757 20222 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Fixmab_match.pm100644001750001750 347313636113757 22642 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Fix/Conditionpackage Catmandu::Fix::Condition::mab_match; our $VERSION = '0.24'; use Catmandu::Sane; use Catmandu::Fix::mab_map; use Catmandu::Fix::Condition::all_match; use Catmandu::Fix::set_field; use Catmandu::Fix::remove_field; use Moo; use Catmandu::Fix::Has; with 'Catmandu::Fix::Condition'; has mab_path => ( fix_arg => 1 ); has value => ( fix_arg => 1 ); sub emit { my ( $self, $fixer, $label ) = @_; my $perl; my $tmp_var = '_tmp_' . int( rand(9999) ); my $mab_map = Catmandu::Fix::mab_map->new( $self->mab_path, "$tmp_var.\$append" ); $perl .= $mab_map->emit( $fixer, $label ); my $all_match = Catmandu::Fix::Condition::all_match->new( "$tmp_var.*", $self->value ); my $remove_field = Catmandu::Fix::remove_field->new($tmp_var); my $pass_fixes = $self->pass_fixes; my $fail_fixes = $self->fail_fixes; $all_match->pass_fixes( [ $remove_field, @$pass_fixes ] ); $all_match->fail_fixes( [ $remove_field, @$fail_fixes ] ); $perl .= $all_match->emit( $fixer, $label ); $perl; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Catmandu::Fix::Condition::mab_match - Conditionals on MAB2 fields =head1 SYNOPSIS # mab_match(PICA_PATH,REGEX) if mab_match('245','My funny title') add_field('my.funny.title','true') end =head1 DESCRIPTION Read our Wiki pages at L for a complete overview of the Fix language. =head1 NAME Catmandu::Fix::Condition::mab_match - Conditionals on PICA fields =head1 SEE ALSO L =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Parser000755001750001750 013636113757 21254 5ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Importer/SRUmabxml.pm100644001750001750 206413636113757 23234 0ustar00joroljorol000000000000Catmandu-MAB2-0.24/lib/Catmandu/Importer/SRU/Parserpackage Catmandu::Importer::SRU::Parser::mabxml; our $VERSION = '0.24'; use Moo; use MAB2::Parser::XML; use Encode; sub parse { my ( $self, $record ) = @_; my $xml = $record->{recordData}->toString(); my $parser = MAB2::Parser::XML->new( $xml ); return $parser->next(); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Catmandu::Importer::SRU::Parser::mabxml - Package transforms SRU responses into Catmandu MAB2 =head1 SYNOPSIS my %attrs = ( base => 'http://sru.gbv.de/gvk', query => '1940-5758', recordSchema => 'mabxml' , parser => 'mabxml' , ); my $importer = Catmandu::Importer::SRU->new(%attrs); =head1 DESCRIPTION Each mabxml response will be transformed into the format defined by L =head1 AUTHOR Johann Rolschewski =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Johann Rolschewski. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut