[librecat-dev] binder with MARC to MARC convertor

Jason Loeffler j at minorscience.com
Wed Oct 12 19:33:31 CEST 2016


This is very helpful, Patrick. Thanks much.

On Mon, Oct 3, 2016 at 1:53 AM, Patrick Hochstenbach <
Patrick.Hochstenbach at ugent.be> wrote:

> Yes.
>
> A MARC record in Catmandu is just a ‘record’ key containing an array of
> arrays (one array for each MARC field). To make it easier to manipulate
> this array-of-arrays Catmandu marc_map, marc_add, marc_set etc fixes were
> created.
>
> There is a Bind marc_each() that loops over a MARC record (it loops over
> all the fields). You use this most often in combination with a marc_match
> condition:
>
> do marc_each()
>    # If the current field is 100 and matches some regex
>    if marc_match(“100”,”.*”)
>        marc_map(100a,myfield)
>        lookup(myfield,’list.csv’)
>        marc_set(100a,$.myfield)
>    end
> end
>
> The marc_each is only required when you do no-trivial things on repeated
> fields. The 100 field is usually not a repeated field so the Fix below
> would do exactly the same (and much faster):
>
> marc_map(100a,myfield)
> lookup(myfield,’list.csv’)
> marc_set(100a,$.myfield)
>
> The marc_add field adds new (sub)fields to the record. E.g. add a 101a to
> the MARC
>
> marc_add(‘100', a, 'test’ )
>
>
> or an 100a with indicators set:
>
> marc_add(‘100', ‘ind1', 1 , ‘ind2', 4, ‘a', 'test’ )
>
> Indicators are not required..in Catmandu that is..maybe they are in MARC
> for some fields but that is another topic
>
> Patrick
>
> > On 02 Oct 2016, at 23:34, Jason Loeffler <j at minorscience.com> wrote:
> >
> > I've worked through CSV to JSON and JSON to JSON converters using binds
> in order to operate on an object-value pair using the contents of an
> external text file/dictionary.
> >
> > E.g.
> >
> > # linked_agents.ref
> > do list(path => linked_agents)
> >   add_field("foor","bar")
> >   replace_all("ref","[^a-zA-z0-9\s]","");
> >   lookup("ref","list.csv");
> > end
> >
> > This works very well. But is there a way to execute a similar task with
> a MARC to MARC conversion?
> >
> > Something like firing a lookup in the marc_each context?
> >
> > do marc_each()
> >     lookup('some datafield', 'list.csv')
> > end
> >
> > Jason Loeffler
> > Technology Consultant | The American Academy in Rome
> >
> > _______________________________________________
> > 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/
>
> Patrick Hochstenbach - digital architect
> University Library Ghent
> Sint-Hubertusstraat 8 - 9000 Ghent - Belgium
> patrick.hochstenbach at ugent.be
> +32 (0)9 264 7980
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.uni-bielefeld.de/mailman2/unibi/public/librecat-dev/attachments/20161012/3180e86e/attachment.html>


More information about the librecat-dev mailing list