Mercurial > pub > Impl
comparison Lib/IMPL/Resources/Strings.pm @ 46:75148ccd732d
Upgrading resources
| author | Sergey | 
|---|---|
| date | Tue, 02 Feb 2010 17:09:49 +0300 | 
| parents | |
| children | 16ada169ca75 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 45:1b1fb9d54f55 | 46:75148ccd732d | 
|---|---|
| 1 use strict; | |
| 2 use warnings; | |
| 3 | |
| 4 package IMPL::Resources::Strings::Storage; | |
| 5 package IMPL::Resources::Strings; | |
| 6 use File::Spec; | |
| 7 | |
| 8 our $Locale ||= 'default'; | |
| 9 our $Base ||='locale'; | |
| 10 our $Encoding ||= 'utf-8'; | |
| 11 our @Locations; | |
| 12 | |
| 13 @Locations = ('.') unless @Locations; | |
| 14 | |
| 15 sub import { | |
| 16 my ($self,$refStrings,%options) = @_; | |
| 17 | |
| 18 my ($class,$pathModule) = caller; | |
| 19 | |
| 20 my ($vol,$dir,$file) = File::Spec->splitpath($pathModule); | |
| 21 my $baseDir = File::Spec->catpath($vol,$dir,''); | |
| 22 | |
| 23 my @pathClass = split /::/,$class; | |
| 24 my $fileClass = pop @pathClass; | |
| 25 | |
| 26 my @ways = map { | |
| 27 my @path = ($_); | |
| 28 push @path,$Base; | |
| 29 push @path,$Locale; | |
| 30 | |
| 31 File::Spec->catfile(@path,@pathClass,$fileClass); | |
| 32 } @Locations; | |
| 33 | |
| 34 push @ways, File::Spec->catfile($baseDir,'locale',$Locale,$fileClass); | |
| 35 | |
| 36 | |
| 37 | |
| 38 my $stringsStorage = findResource(@Locations,$Base,$Locale,) | |
| 39 | |
| 40 } | |
| 41 | |
| 42 sub findResource { | |
| 43 my (@locations,$file,%options) = @_; | |
| 44 | |
| 45 | |
| 46 } | |
| 47 | |
| 48 | |
| 49 | |
| 50 sub parseResource { | |
| 51 my ($fname) = @_; | |
| 52 | |
| 53 open my $hRes, "<:encoding($Encoding)", findFile($fname) or die "Failed to open file $fname: $!"; | |
| 54 | |
| 55 my %Map; | |
| 56 my $line = 1; | |
| 57 while (<$hRes>) { | |
| 58 chomp; | |
| 59 $line ++ and next if /^\s*$/; | |
| 60 | |
| 61 if (/^(\w+)\s*=\s*(.*)$/) { | |
| 62 $Map{$1} = $2; | |
| 63 } else { | |
| 64 die "Invalid resource format in $fname at $line"; | |
| 65 } | |
| 66 $line ++; | |
| 67 } | |
| 68 | |
| 69 return \%Map; | |
| 70 } | |
| 71 | |
| 72 package IMPL::Resources::Strings::Storage; | |
| 73 use base qw(IMPL::Object); | |
| 74 | |
| 75 sub get { | |
| 76 my ($this,$msg_name) = @_; | |
| 77 } | |
| 78 1; | |
| 79 | |
| 80 __END__ | |
| 81 | |
| 82 =pod | |
| 83 | |
| 84 =head1 SYNOPSIS | |
| 85 | |
| 86 package Foo; | |
| 87 | |
| 88 use IMPL::Resources::Strings { | |
| 89 msg_say_hello => "Hello, %name!", | |
| 90 msg_module_name => "Simple Foo class" | |
| 91 }, auto => 1, locale => 'en-us'; | |
| 92 | |
| 93 sub InviteUser { | |
| 94 my ($this,$uname) = @_; | |
| 95 | |
| 96 print msg_say_hello(name => $uname); | |
| 97 | |
| 98 } | |
| 99 | |
| 100 =cut | 
