Mercurial > pub > Impl
comparison Lib/IMPL/Resources/Strings.pm @ 292:6dc1c369eb71
sync
author | cin |
---|---|
date | Tue, 26 Feb 2013 02:21:03 +0400 |
parents | bbc0da7ef90e |
children | 1838bdb4d238 |
comparison
equal
deleted
inserted
replaced
291:5d14baa35790 | 292:6dc1c369eb71 |
---|---|
8 use IMPL::Resources::Format qw(FormatMessage); | 8 use IMPL::Resources::Format qw(FormatMessage); |
9 | 9 |
10 our $Locale ||= 'default'; | 10 our $Locale ||= 'default'; |
11 our $Encoding ||= 'utf-8'; | 11 our $Encoding ||= 'utf-8'; |
12 our @Locations; | 12 our @Locations; |
13 my %maps; | |
13 | 14 |
14 sub import { | 15 sub import { |
15 my ($self,$refStrings,%options) = @_; | 16 my ($self,$refStrings,%options) = @_; |
16 | 17 |
17 no strict 'refs'; | 18 no strict 'refs'; |
18 | 19 |
19 my $class = caller; | 20 my $class = caller; |
21 my $methods = $options{methods}; | |
20 | 22 |
21 if (ref $refStrings eq 'HASH') { | 23 if (ref $refStrings eq 'HASH') { |
22 my %map; | 24 my $map = ( $maps{$class} ||= {} ); |
23 while(my ($name,$format) = each %$refStrings) { | 25 while(my ($name,$format) = each %$refStrings) { |
24 $map{default}{$name} = $format; | 26 $map->{default}{$name} = $format; |
25 | 27 |
26 *{"${class}::$name"} = sub { | 28 *{"${class}::$name"} = sub { |
29 shift if $methods; | |
27 my $args = @_ == 1 ? shift : { @_ }; | 30 my $args = @_ == 1 ? shift : { @_ }; |
28 | 31 |
29 return _FormatMapMessage($class,$name,\%map,$Locale,$args); | 32 return _FormatMapMessage($class,$name,$map,$Locale,$args); |
30 } | 33 } |
31 } | 34 } |
32 } | 35 } |
33 } | 36 } |
34 | 37 |