[librecat-dev] convenience emit function

Klee, Carsten Carsten.Klee at sbb.spk-berlin.de
Fri Jun 2 09:42:13 CEST 2017


Hi Catmanduers again!

I'm not sure that this is reasonable. But for me it seems like, when creating a fix, you have recurrent tasks like "get me a value from a given path", "set a value for a given path" or "delete value for a given path".

To achieve this you always have to write code like:

my $my_var  = $fixer->generate_var;
my $perl         = $fixer->emit_declare_vars($my_var );
my $path        = $fixer->split_path( $self->path );
my $key          = pop @$path;
$perl .=
            $fixer->emit_walk_path($fixer->var, $path, sub {
            my $var = shift;
            $fixer->emit_get_key($var, $key, sub {
                my $var = shift;
                "if (is_string(${var})) {" .
                    "${my_var} = ${var};" .
                "}";
            });

But wouldn't it be more convenient (and less error prone) to provide functions for such recurrent tasks? Like

my $perl = $fixer->emit_get_string('my_var', $path, $fixer->var);

which should do the same like the code above. Or

my $perl = $fixer->emit_get_value('my_var', $path, $fixer->var);

which also should do the same, but without the 'is_string' check. And the same for emit_set_* and emit_delete_*.

Cheers!

Carsten
---
Carsten Klee
Zeitschriftendatenbank (ZDB)
Staatsbibliothek zu Berlin - Preußischer Kulturbesitz

Potsdamer Straße 33
10785 Berlin

Tel.:   +49 30 266-43 44 02
Fax:    +49 30 266-33 44 01
carsten.klee at sbb.spk-berlin.de
www.staatsbibliothek-berlin.de

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.uni-bielefeld.de/mailman2/unibi/public/librecat-dev/attachments/20170602/9128d6ab/attachment.html>


More information about the librecat-dev mailing list