[librecat-dev] my.very.deep.path in Catmandu::Fix::marc_spec

Klee, Carsten Carsten.Klee at sbb.spk-berlin.de
Mon Jun 13 08:31:55 CEST 2016


Hi Nicolas!

Great, that works!

One question left:

marc_spec("245", my.title.$append)

makes 'my.title' an array. Now if I try something like

marc_spec("245$h", my.title.medium)

it will fail silently. I understand this. But shouldn't there be a warning or something? The user might think that there is no subfield 'h'.

Cheers!

Carsten



> -----Ursprüngliche Nachricht-----
> Von: Nicolas Steenlant [mailto:Nicolas.Steenlant at UGent.be]
> Gesendet: Freitag, 10. Juni 2016 14:38
> An: Klee, Carsten
> Cc: librecat-dev at lists.uni-bielefeld.de
> Betreff: Re: [librecat-dev] my.very.deep.path in Catmandu::Fix::marc_spec
> 
> Hi Carsten,
> 
> Catmandu::Util has some internal (and undocumented) functions that help
> with this:
> 
> use Catmandu::Util qw(:data);
> use Data::Dumper;
> my $data = {};
> my $nested = data_at('my.very.deep', $data, create => 1, key => 'path');
> set_data($nested, 'path', 'a value');
> print Dumper($data);
> 
> $VAR1 = {'my' => {'very' => {'deep' => {'path' => 'a value'}}}};
> 
> Calling data_at without the create => 1 option will not make missing
> intermediate structures
> and return undef in this case.
> The key => ‘path’ option gives a hint to data_at that you want ‘deep’ to be a
> hash
> and not an array,
> since it can’t guess the type by looking at the next segment of the path.
> 
> Regards,
> Nicolas
> 
> --
> Nicolas Steenlant
> Ghent University Library
> 
> Sint-Hubertusstraat 8
> 9000 Gent
> 
> nicolas.steenlant at ugent.be
> +32 486 62 62 27
> 
> 
> > On 10 Jun 2016, at 14:05, Klee, Carsten <Carsten.Klee at sbb.spk-berlin.de>
> wrote:
> >
> > Hi Catmandu monks!
> >
> > I’m currently working on the Catmandu::Fix::marc_spec [1]. I chose to stick
> with a simple ‘fix’ method (emit is quite hairy and Perl is difficult enough to
> learn).
> >
> > To make long things short: How do I get my referenced data into the
> my.very.deep.path?
> >
> > I read https://librecatproject.wordpress.com/2014/03/26/create-a-fixer-
> part-2/ . But is there an easy way to reuse the Catmandu::Fix methods in a
> non emit method?
> >
> > Cheers!
> >
> > Carsten
> >
> >
> > [1] <https://github.com/cKlee/Catmandu-Fix-marc_spec>
> >
> >
> > _______________________________________________
> > Carsten Klee
> > Abt. Überregionale Bibliographische Dienste IIE
> > Staatsbibliothek zu Berlin – Preußischer Kulturbesitz
> > Potsdamer Straße 33
> > 10785 Berlin
> >
> > Fon:  +49 30 266-43 44 02
> > Fax:   +49 30 266-33 40 01
> > carsten.klee at sbb.spk-berlin.de
> > www.zeitschriftendatenbank.de
> > _______________________________________________
> > librecat-dev mailing list
> > - send list mails to librecat-dev at lists.uni-bielefeld.de
> > - to unsubscribe or change options, visit https://lists.uni-
> bielefeld.de/mailman2/cgi/unibi/listinfo/librecat-dev
> > - project website: http://librecat.org/




More information about the librecat-dev mailing list