summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-02-19 13:35:49 -0600
committerJesse Luehrs <doy@tozt.net>2010-02-19 16:09:43 -0600
commit847140b59311da9b022e5301cb5c4e3fe230501a (patch)
tree5e0a93f429715edc4622d360e8d10a36a6883b9b
parent7daaaab84d59665bd34b01d8eed61ac0e53c435a (diff)
downloadlocale-pofilemanager-847140b59311da9b022e5301cb5c4e3fe230501a.tar.gz
locale-pofilemanager-847140b59311da9b022e5301cb5c4e3fe230501a.zip
make add_entry also accept arguments for Locale::PO->new
-rw-r--r--lib/Locale/POFileManager/File.pm26
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;