diff options
-rw-r--r-- | lib/Locale/POFileManager/File.pm | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/lib/Locale/POFileManager/File.pm b/lib/Locale/POFileManager/File.pm index acdd0aa..839cde2 100644 --- a/lib/Locale/POFileManager/File.pm +++ b/lib/Locale/POFileManager/File.pm @@ -25,9 +25,10 @@ has entries => ( builder => '_build_entries', init_arg => undef, handles => { - entries => 'elements', - add_entry => 'push', - msgids => [ map => sub { my $m = $_->msgid; $m =~ s/^"|"$//g; $m } ], + entries => 'elements', + _add_entry => 'push', + msgids => + [ map => sub { my $m = $_->msgid; $m =~ s/^"|"$//g; $m } ], }, ); @@ -44,6 +45,18 @@ sub entry_for { return grep { $_->msgid eq $msgid } $self->entries; } +sub add_entry { + my $self = shift; + if (@_ == 1) { + $self->_add_entry($_[0]); + } + else { + my %args = @_; + $args{"-$_"} = delete $args{$_} for keys %args; + $self->_add_entry(Locale::PO->new(%args)); + } +} + sub save { my $self = shift; @@ -80,11 +93,10 @@ sub add_stubs_from { if (reftype($msgstr) && reftype($msgstr) eq 'CODE') { $msgstr = $msgstr->(lang => $self->language, msgid => $missing); } - my $entry = Locale::PO->new( - -msgid => $missing, - defined($msgstr) ? (-msgstr => $msgstr) : (), + $self->add_entry( + msgid => $missing, + defined($msgstr) ? (msgstr => $msgstr) : (), ); - $self->add_entry($entry); } $self->save; |