#! /usr/bin/perl
use strict;
use warnings;
use PPI;
my $perlcode = << "END_PERLCODE";
package My::L10N::en;
use base 'My::L10N';
our %Lexicon = (
'Some [_1] text' =>
'Some [_1] text',
);
END_PERLCODE
my $doc = PPI::Document->new(\$perlcode);
my $lexicon = $doc->find(sub { $_[1]->content eq '%Lexicon' });
$lexicon = $lexicon->[0]; # returns an array ref, but in my case, there's only ever one.
my $newmsg = q{'The [_1] is in the [_2]'};
my $newtext = sprintf ' %s =>\n %s,', $newmsg, $newmsg;
my $insert_this = PPI::Document->new(\$newtext);
# insert $newtext into %Lexicon?
$lexicon->insert_after($insert_this->tokens());
print $doc->serialize();
####
package My::L10N::en;
use base 'My::L10N';
our %Lexicon = (
'Some [_1] text' =>
'Some [_1] text',
);
####
package My::L10N::en;
use base 'My::L10N';
our %Lexicon = (
'Some [_1] text' =>
'Some [_1] text',
'The [_1] is in the [_2]' =>
'The [_1] is in the [_2]',
);
####
#! /usr/bin/perl
use strict;
use warnings;
use PPI;
use PPI::Dumper;
sub mydump { PPI::Dumper->new(shift)->print() }
my $perlcode = << "END_PERLCODE";
package My::L10N::en;
use base 'My::L10N';
our %Lexicon = (
'Some [_1] text' =>
'Some [_1] text',
);
1;
END_PERLCODE
my $doc = PPI::Document->new(\$perlcode);
my $lexicon = $doc->find(sub { $_[1]->content eq '%Lexicon' });
$lexicon = $lexicon->[0]; # returns an array ref, but in my case, there's only ever one.
my $newmsg = q{'The [_1] is in the [_2]'};
my $newtext = sprintf " %s =>\n %s,\n", $newmsg, $newmsg;
my $insert_this = PPI::Document->new(\$newtext);
# insert $newtext into %Lexicon?
my $stmt = $lexicon->statement();
my $list = $stmt->find('PPI::Structure::List')->[0];
for ($insert_this->tokens())
{
$_->remove();
my $rc = $list->add_element($_);
}
print $doc->serialize();