[librecat-dev] collaborate with Catmandu ?

Patrick Hochstenbach Patrick.Hochstenbach at UGent.be
Tue Jan 29 13:58:50 CET 2019

Hi Marc

I see you still had a question why we used a flow controlled by an exporter. The answer is twofold: 1) yes we use exporters to create a uniform interface around many coversion/load-into-database processes that are very similar 2) you don’t need to use this mechanism, it is possible to create a stream of data you control. E.g.

use Catmandu;

my $importer = Catmandu->importer('Mock');
my $fixer       = Catmandu->fixer(['add_field(hello,world)']);

while (my $data = $importer->next ) {
    # Fix the data

    my $str = Catmandu->export_to_string($data,'YAML');
    print "$str\n";


> On 23 Jan 2019, at 12:15, Marc Chantreux <mc at unistra.fr> wrote:
> hello Patrick,
> thanks for that and the hour we took monday to exchange ideas.
>> use Catmandu;
>> my $importer = Catmandu->importer('Null');
>> my $fixer    = Catmandu->fixer(['add_field(hello,world)']);
>> my $output   = '';
>> my $exporter = Catmandu->exporter('YAML', file => \$output);
>> $exporter->add_many($fixer->fix($importer));
>> print "$output”;
> which made me remember a very old discution we had: the idea was
> that the flow is controled by the exporter and i wanted to bet on
> perlude for that. i actually still do ... which means "a lot of
> redundant logic".
> can you explain the benefit of catmandu exporter over a simple stream?
> anyway, i'll take the workflow part aside for the moment: i'll focus on
> * see how to use a catmandu filter and importer as a part of a perlude
>  stream
> * try to get the result of the parsing of the fix langage to see how it
>  is possible to use it in combination with the DataVM.
> i'll do that on my spare time for the moment so don't expect a fast pace
> progress :)
> regards.
> marc

More information about the librecat-dev mailing list