[librecat-dev] collaborate with Catmandu ?
Marc Chantreux
mc at unistra.fr
Tue Jan 8 15:26:13 CET 2019
Hi Patrick,
(happy new year to everyone if i didn't already whished it)
> Thanks Marc for this,
you're very welcome: you made an amazing job with catmandu and finally
had no opportunity to work with you guys.
> I’ve created for myself a reminder to look at your code.
Please feel very welcome to ask any question: it's probably easier for
me to dig into my memory than for you to read undocumented and
uncommented code.
> I still hope you will find somewhere your way back into
> library stuff a bit ;)
i really appreciate. thanks but no thanks: this is really
improbable as i love my current job here at Renater (FLOSS evangelist
and developer) and there isn't even an opportunity to work on library
related topics.
however, it doesn't mean we can't collaborate:
* catmandu is a multipurpose ETL and can be used to manipulate any
business object... probably including emails.
* in the sympa project (http://www.sympa.org), we have a system (called
"scenario") that provides a DSL to drive the dispatch of incoming emails.
my current work is a complete refactor of it to become
* extendable (as every keyword is bound to a function)
* composable (a scenario can contain other scenarii)
* easy to compose (everything will be stored as a IR (lisp alike)
format for a VM. as it's just data, scenarii can be build via
a web interface).
* maybe it could rely Catmandu components.
using our new DSL, we could implement the missing keyworkds
* importer to declare a source
* exporter to declare a destination
* fix to declare a fix
* from to open a stream of items from a source
* to to record the items of the current stream in an exporter
* iso-2709 to stream the content of some raw files to an importer
* a specification to CRUD the records. like
-999 to delete to remove all the 999 fields
999$a to get the value of the 999$a subfield
we could write things like:
(importer 'old-libraries
(iso-2709 ('
faculty-medecine.raw
faculty-math.raw
faculty-physic.raw))
(exporter 'transfered
(iso-2709 'to-be-transfered.utf8.raw ))
(exporter 'removed
(iso-2709 'new-library.utf8.raw ))
(fix 'to-utf8 (encoding-> marc8 utf8))
(fix 'dispatch-in-files
(if (~ .999$a /damaged|rejected/ )
(do (-999)
(to 'removed))
(to 'transfered)))
(from 'old-libraries
(do (fix 'to-utf8 (encoding-> marc8 utf8))
(fix 'dispatch-in-files))
the very begining of the code is here:
https://framagit.org/eiro/work_on_sympa/tree/master/poc/DataVM/lib
Also, we work on a boilerplate for our perl coding style:
https://metacpan.org/pod/Sympatic
If you see any way to share ideas, code, work between the two projects,
let us run a hackathon! ;) (or at least have a video conference about it).
regards,
marc
More information about the librecat-dev
mailing list