diff Lib/IMPL/Resources/Strings.pm @ 46:75148ccd732d

Upgrading resources
author Sergey
date Tue, 02 Feb 2010 17:09:49 +0300
parents
children 16ada169ca75
line wrap: on
line diff
--- /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