Changeset 21768
- Timestamp:
- 10/21/08 13:09:12 (5 years ago)
- Location:
- lang/perl/Helper-Simple/trunk
- Files:
-
- 1 removed
- 8 modified
-
.t (deleted)
-
MANIFEST (modified) (1 diff)
-
lib/Helper/Simple.pm (modified) (11 diffs)
-
t/01-helper-separate-files.t (modified) (7 diffs)
-
t/04-check_created_files2.t (modified) (1 diff)
-
t/lib/MyHelper.pm (modified) (1 diff)
-
t/lib/MyHelper/Doc/CameLize.pm (modified) (1 diff)
-
t/lib/MyHelper2/Test.pm (modified) (5 diffs)
-
t/pod-coverage.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Helper-Simple/trunk/MANIFEST
r21688 r21768 10 10 t/02-helper-one-file.t 11 11 t/03-create_files.t 12 t/04-create_files2.t 12 t/03-create_files2.t 13 t/04-check_created_files_content.t 14 t/04-check_created_files.t 15 t/04-check_created_files2.t 13 16 t/boilerplate.t 14 17 t/pod-coverage.t -
lang/perl/Helper-Simple/trunk/lib/Helper/Simple.pm
r21710 r21768 23 23 use Clone (); 24 24 25 our @EXPORT_FUNCS = qw/file copy camelize normalize my_var25 our @EXPORT_FUNCS = qw/file copy my_var dir_case subdir_case 26 26 template_option template_tags var default_var 27 download dl camelize_children27 download dl 28 28 /; 29 29 our %DATA = … … 43 43 default => 44 44 { 45 normalize=> undef,45 asis => undef, 46 46 my_vars => {}, 47 47 vars => {}, … … 120 120 sub root { $DATA{_ROOT_}; } 121 121 122 sub _parent {123 my ($self) = @_;124 125 my $root_class = $self->root_class;126 my $pkg = ref $self || $self;127 $pkg =~ s/::\w+$//;128 $pkg = $root_class if $pkg !~/^${root_class}::/;129 130 return $self->pkg($pkg);131 }132 133 122 sub root_dir { 134 123 my ($class, $dir) = @_; … … 145 134 } 146 135 147 sub camelize { 148 my ($self) = _here(@_); 149 $self->{normalize} = 0; 150 return ((! $self->_normalize) || 0); 151 } 152 153 sub _camelize { 154 my ($self) = @_; 155 return ((! $self->_normalize) || 0); 156 } 157 158 sub normalize { 159 my ($self, $v) = _here(@_); 160 $self->{normalize} = defined $v ? $v : 1; 161 return $self->_normalize; 162 } 163 164 sub _normalize { 136 sub dir_case { 165 137 my ($self, $v) = _here(@_); 166 138 if (defined $v) { 167 return $self->{normalize} = $v; 139 if ($v eq 'lc') { 140 $self->normalize; 141 } elsif ($v eq 'asis') { 142 $self->asis; 143 } else { 144 Carp::croak("dircase lc or asis") 145 } 146 } else { 147 return $self->_normalize ? 'lc' : 'asis'; 148 } 149 } 150 151 sub subdir_case { 152 my ($self, $v) = _here(@_); 153 if (defined $v) { 154 if ($v eq 'lc') { 155 $self->asis_children(0); 156 } elsif ($v eq 'asis') { 157 $self->asis_children(1); 158 } else { 159 Carp::croak("dircase lc or asis") 160 } 161 } else { 162 return $self->_asis_children ? 'lc' : 'asis'; 163 } 164 } 165 166 sub normalize { 167 my ($self, $v) = @_; 168 $self->{asis} = defined $v ? (! $v) || 0 : 0; 169 return ((! $self->_asis) || 0); 170 } 171 172 sub _normalize { 173 my ($self) = @_; 174 return ((! $self->_asis) || 0); 175 } 176 177 sub asis { 178 my ($self, $v) = @_; 179 $self->{asis} = defined $v ? $v : 1; 180 return $self->_asis; 181 } 182 183 sub _asis { 184 my ($self, $v) = @_; 185 if (defined $v) { 186 return $self->{asis} = $v; 168 187 } else { 169 188 my $v; … … 172 191 sub { 173 192 my ($o, $pkg, $v) = @_; 174 if (defined $o->{ normalize}) {175 $$v = $o->{ normalize};193 if (defined $o->{asis}) { 194 $$v = $o->{asis}; 176 195 } 177 196 }, \$v 178 197 ); 198 179 199 return defined $v ? $v : 1; 180 200 } 181 201 } 182 202 183 sub camelize_children { 184 my ($self) = _here(@_); 185 $self->_camelize_children(1); 186 } 187 188 sub _camelize_children { 203 sub asis_children { 189 204 my ($self, $v) = @_; 190 191 if (defined $v) { 192 return $self->{camelize_children} = $v; 193 } else { 194 my $v; 195 $self->_inherit_resolver 196 ( 197 sub { 198 my ($o, $pkg, $v) = @_; 199 if (defined $o->{camelize_children}) { 200 $$v = $o->{camelize_children}; 201 } 202 }, \$v 203 ); 204 return defined $v ? $v : 0; 205 } 205 return $self->{asis_children} = defined $v ? $v : 1; 206 206 } 207 207 … … 481 481 if (my $name = ref $proto) { 482 482 my $path = ""; 483 my $camelize = 0; 483 my $asis = 1; 484 my $asis_children = 0; 484 485 $proto->_inherit_resolver 485 486 ( … … 488 489 my $dir_name = $pkg_name; 489 490 if (blessed $o) { 490 if (blessed $o->_parent) { 491 $camelize ||= $o->_parent->_camelize_children; 491 $asis = $o->{asis} if defined $o->{asis}; 492 493 if (! defined $o->{asis}) { 494 $asis = $asis_children; 492 495 } 493 if ($o->{normalize}) { 494 $camelize = 0; 495 $o->_camelize_children(0); 496 if (defined $o->{asis_children}) { 497 $asis_children = $o->{asis_children}; 498 } else { 499 $asis_children = $asis; 496 500 } 497 501 } 498 if (! $ camelize and (! ref $o or (ref $o and $o->_normalize))) {502 if (! $asis) { 499 503 $dir_name = $proto->_normalization($pkg_name); 500 504 } … … 512 516 sub _normalization { 513 517 my ($self, $name) = @_; 514 if ($self->_normalize == 2) {515 $name =~ s/([A-Z][^A-Z])/_$1/g;516 $name =~ s/^_//;517 }518 518 return lc $name; 519 519 } … … 808 808 like this, you don't need to call 'use Helper::Simple' except your helper root module. 809 809 810 =head2 camelize811 812 camelize;813 814 This is shortcut of the following. see C<normalize>.815 816 normalize 0;817 818 =head2 normalize819 820 normalize 0;821 normalize 1; # default822 normalize 2;823 824 This change behavior to change pakcage name to directory name.825 826 This is inheritable setting. Namespaces under the namespace which this function is used,827 same setting is applied.828 829 Example;830 831 When normalize is 1 (default behavior)832 833 NormaLize -> normalize834 835 When normalize is 2836 837 NormaLize -> norma_lize838 839 When normalize is 0840 841 NormaLize -> NormaLize842 843 844 =head2 camelize_children845 846 camelize_children;847 848 This camelize effects sub directories.849 850 For example;851 852 package MyApp::Lib; # this directory is lib853 854 camelize_children;855 856 package MyApp::Lib::Hoge; # this directory is lib/Hoge857 858 file { X.pm => "package X;\n1;"};859 860 810 =head2 file 861 811 … … 969 919 If you change this, the change effects only the namespaces. 970 920 921 =head2 dir_case 922 923 dir_case 'asis'; # default 924 dir_case 'lc'; 925 926 This changes behavior to change pakcage name to directory name. 927 In dfault, Helper::Simple doesn't change package name. 928 So if you want lower case directory name, you'd beter use lower case to package name. 929 930 For example (base module name is YourApp::Helper); 931 932 package YourApp::Helper::lib; 933 # ... 934 1; 935 936 package YourApp::Helper::lib::YourApp; 937 # ... 938 1; 939 940 These directories are; 941 942 lib/ 943 lib/YourApp/ 944 945 If you don't like lower case in package name, you can use this function. 946 947 package YourApp::Helper::Lib; 948 949 dir_case 'lc'; 950 subdir_case 'asis'; 951 # ... 952 1; 953 954 package YourApp::Helper::Lib::YourApp; 955 # ... 956 1; 957 958 These directories are; 959 960 lib/ 961 lib/YourApp/ 962 963 In YourApp::Hlper::Lib, C<dir_case 'lc'> is used, 964 so package name is changed to lower case. 965 In YourApp::Hlper::Lib, C<subdir_case 'asis'> is used, 966 this effects sub modules of the module calling C<subdir_case 'asis'>. 967 968 This is inheritable setting. Namespaces under the namespace which this function is used, 969 same setting is applied. 970 971 =head2 subdir_case 972 973 subdir_case 'lc'; 974 subdir_case 'asis'; 975 976 This effects sub directories. 977 978 For example; 979 980 package MyApp; 981 982 dir_case 'lc'; 983 984 package MyApp::Lib; # this directory is lib 985 986 sub_dircase 'asis'; 987 988 package MyApp::Lib::Hoge; # this directory is lib/Hoge 989 990 This is inheritable setting. Namespaces under the namespace which this function is used, 991 same setting is applied. 992 993 See also C<dir_case>. 994 971 995 =head1 SPECIAL FUNCTION 972 996 … … 978 1002 It is not recommended to use. 979 1003 980 package YourHelper::L ib::Hoge;1004 package YourHelper::Llib::Hoge; 981 1005 982 here->dir; # returns "lib/ hoge/"1006 here->dir; # returns "lib/Hoge/" 983 1007 984 1008 =head1 AUTHOR 985 1009 986 Ktat, C<< < KTATat cpan.org> >>1010 Ktat, C<< <ktat at cpan.org> >> 987 1011 988 1012 =head1 BUGS -
lang/perl/Helper-Simple/trunk/t/01-helper-separate-files.t
r21710 r21768 53 53 admin => 1, 54 54 } 55 === camelizedefault55 === asis default 56 56 --- i 57 57 package MyHelper; 58 $_ = here->_ camelize58 $_ = here->_asis 59 59 --- o 60 60 0 … … 65 65 --- o 66 66 1 67 === camelizespecified67 === asis specified 68 68 --- i 69 69 package MyHelper::Doc::CameLize; 70 $_ = here->_ camelize70 $_ = here->_asis 71 71 --- o 72 72 1 … … 80 80 --- i 81 81 package MyHelper::Doc::CameLize::CaMeLiZe; 82 $_ = here->_ camelize82 $_ = here->_asis 83 83 --- o 84 84 1 … … 165 165 --- i 166 166 package MyHelper::Doc::CameLize; 167 here->dir =~ m{.+(doc/.+$)} ;167 here->dir =~ m{.+(doc/.+$)}i; 168 168 $1; 169 169 --- o … … 172 172 --- i 173 173 package MyHelper::Doc::CameLize::CaMeLiZe; 174 here->dir =~ m{.+(doc/.+$)} ;174 here->dir =~ m{.+(doc/.+$)}i; 175 175 $1; 176 176 --- o … … 179 179 --- i 180 180 package MyHelper::DocCamel; 181 here->dir =~ m{.+(doc_?camel.+)} ;181 here->dir =~ m{.+(doc_?camel.+)}i; 182 182 $1 183 183 --- o … … 186 186 --- i 187 187 package MyHelper::Doc; 188 here->dir =~ m{.+(doc/$)} ;188 here->dir =~ m{.+(doc/$)}i; 189 189 $1; 190 190 --- o -
lang/perl/Helper-Simple/trunk/t/04-check_created_files2.t
r21710 r21768 39 39 --- i : -e './t/tmp2/lib/two/Y/Z/AbCde/AbCde.pm' 40 40 --- o : 1 41 === t/tmp2/lib/two/Y/Z/ xyz/aaa/aaa.pm42 --- i : -e './t/tmp2/lib/two/Y/Z/ xyz/aaa/aaa.pm'41 === t/tmp2/lib/two/Y/Z/Xyz/aaa/aaa.pm 42 --- i : -e './t/tmp2/lib/two/Y/Z/Xyz/aaa/aaa.pm' 43 43 --- o : 1 44 44 === t/tmp2/lib/two/Y.pm -
lang/perl/Helper-Simple/trunk/t/lib/MyHelper.pm
r21710 r21768 8 8 var => 'in MyHelper', 9 9 }; 10 11 dir_case 'lc'; 10 12 11 13 file <<_FILES; -
lang/perl/Helper-Simple/trunk/t/lib/MyHelper/Doc/CameLize.pm
r21702 r21768 3 3 use strict; 4 4 5 normalize 0;5 dir_case 'asis'; 6 6 copy ['./t/data/test.zip', {zip => 1, omit => 'test'}]; 7 7 -
lang/perl/Helper-Simple/trunk/t/lib/MyHelper2/Test.pm
r21710 r21768 2 2 3 3 use Helper::Simple; 4 5 dir_case 'lc'; 4 6 5 7 copy 't/lib/'; … … 43 45 package MyHelper2::Test::Lib::One; 44 46 45 camelize;47 dir_case 'asis'; 46 48 47 49 file <<_FILES; … … 54 56 package MyHelper2::Test::Lib::X::Y; 55 57 56 camelize;58 dir_case 'asis'; 57 59 58 60 file <<_FILES; … … 65 67 package MyHelper2::Test::Lib::Two; 66 68 67 camelize_children;69 subdir_case 'asis'; 68 70 69 71 var { … … 109 111 package MyHelper2::Test::Lib::Two::Y::Z::Xyz; 110 112 111 normalize;113 subdir_case 'lc'; 112 114 113 115 package MyHelper2::Test::Lib::Two::Y::Z::Xyz::AAA; -
lang/perl/Helper-Simple/trunk/t/pod-coverage.t
r21688 r21768 5 5 plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@; 6 6 all_pod_coverage_ok( 7 {also_private => [qw/appname dir mk_dir pkg root root_class root_dir default_var /],}7 {also_private => [qw/appname dir mk_dir pkg root root_class root_dir default_var asis asis_children normalize/],} 8 8 ); 9 9
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)