Mercurial > pub > Impl
changeset 46:75148ccd732d
Upgrading resources
author | Sergey |
---|---|
date | Tue, 02 Feb 2010 17:09:49 +0300 |
parents | 1b1fb9d54f55 |
children | a9b70d836b28 |
files | Lib/IMPL/Object/Singleton.pm Lib/IMPL/Resources/Strings.pm |
diffstat | 2 files changed, 134 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/Lib/IMPL/Object/Singleton.pm Fri Jan 29 16:19:31 2010 +0300 +++ b/Lib/IMPL/Object/Singleton.pm Tue Feb 02 17:09:49 2010 +0300 @@ -10,5 +10,38 @@ $instances{$self} || ($instances{$self} = $self->new(@_)); } +1; -1; +__END__ + +=pod + +=head1 SYNOPSIS + +package Foo; + +use base qw(IMPL::Object IMPL::Object::Singleton); + +#.... + +Foo->isnatnce->some_work(); + +Foo->isnatnce->get_result(); + +=head1 DESCRIPTION + +Реализует шаблон Singleton + +=head1 MEMBERS + +=head2 OPERATORS + +=list + +=item C<instance CLASS(@params)> + +Создает или возвращает экземпляр класса, если экземляр не существует, то он создается с параметрами C<@params>. + +=over + +=cut \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/IMPL/Resources/Strings.pm Tue Feb 02 17:09:49 2010 +0300 @@ -0,0 +1,100 @@ +use strict; +use warnings; + +package IMPL::Resources::Strings::Storage; +package IMPL::Resources::Strings; +use File::Spec; + +our $Locale ||= 'default'; +our $Base ||='locale'; +our $Encoding ||= 'utf-8'; +our @Locations; + +@Locations = ('.') unless @Locations; + +sub import { + my ($self,$refStrings,%options) = @_; + + my ($class,$pathModule) = caller; + + my ($vol,$dir,$file) = File::Spec->splitpath($pathModule); + my $baseDir = File::Spec->catpath($vol,$dir,''); + + my @pathClass = split /::/,$class; + my $fileClass = pop @pathClass; + + my @ways = map { + my @path = ($_); + push @path,$Base; + push @path,$Locale; + + File::Spec->catfile(@path,@pathClass,$fileClass); + } @Locations; + + push @ways, File::Spec->catfile($baseDir,'locale',$Locale,$fileClass); + + + + my $stringsStorage = findResource(@Locations,$Base,$Locale,) + +} + +sub findResource { + my (@locations,$file,%options) = @_; + + +} + + + +sub parseResource { + my ($fname) = @_; + + open my $hRes, "<:encoding($Encoding)", findFile($fname) or die "Failed to open file $fname: $!"; + + my %Map; + my $line = 1; + while (<$hRes>) { + chomp; + $line ++ and next if /^\s*$/; + + if (/^(\w+)\s*=\s*(.*)$/) { + $Map{$1} = $2; + } else { + die "Invalid resource format in $fname at $line"; + } + $line ++; + } + + return \%Map; +} + +package IMPL::Resources::Strings::Storage; +use base qw(IMPL::Object); + +sub get { + my ($this,$msg_name) = @_; +} +1; + +__END__ + +=pod + +=head1 SYNOPSIS + +package Foo; + +use IMPL::Resources::Strings { + msg_say_hello => "Hello, %name!", + msg_module_name => "Simple Foo class" +}, auto => 1, locale => 'en-us'; + +sub InviteUser { + my ($this,$uname) = @_; + + print msg_say_hello(name => $uname); + +} + +=cut \ No newline at end of file