]> git.vpit.fr Git - perl/modules/Lexical-Types.git/blobdiff - lib/Lexical/Types.pm
This is 0.03
[perl/modules/Lexical-Types.git] / lib / Lexical / Types.pm
index d97761b42b32272846695f77293d15cb5c95f4d2..841c3aad3393d64ab2117ba0b1e606479c4a1761 100644 (file)
@@ -13,30 +13,44 @@ Lexical::Types - Extend the semantics of typed lexicals.
 
 =head1 VERSION
 
-Version 0.02
+Version 0.03
 
 =cut
 
 our $VERSION;
 BEGIN {
- $VERSION = '0.02';
+ $VERSION = '0.03';
 }
 
 =head1 SYNOPSIS
 
+    { package Str; }
+
+    {
+     package My::Types::Str;
+
+     sub new { bless { }, shift }
+    }
+
+    use Lexical::Types as => sub { 'My::Types::' . $_[0] => 'new' };
+
+    my Str $x; # $x is now a My::Types::Str object
+
     {
-     package Str;
+     package My::Types::Int;
 
-     sub TYPEDSCALAR { Some::String::Implementation->new }
+     sub TYPEDSCALAR { bless { }, shift }
     }
 
     use Lexical::Types;
 
-    my Str $x; # $x is now a Some::String::Implementation object
+    use constant Int => 'My::Types::Int';
+
+    my Int $y; # $y is now a My::Types::Int object
 
 =head1 DESCRIPTION
 
-This module allows you to hook the execution of typed lexicals declarations (C<my Str $x>).
+This pragma allows you to hook the execution of typed lexicals declarations (C<my Str $x>).
 In particular, it can be used to automatically tie or bless typed lexicals.
 
 It is B<not> implemented with a source filter.
@@ -82,9 +96,9 @@ If the value given is a code reference C<$mangler>, it will be called at compile
 
 either an empty list, in which case the current typed lexical definition will be skipped (thus it won't be altered to trigger a run-time hook) ;
 
-    use Lexical::Types as => sub { return $_[0] =~ /Str/ ? () : @_ };
-    my Str $x; # nothing special
-    my Int $y; # calls Int->TYPEDSCALAR
+    use Lexical::Types as => sub { return $_[0] =~ /Str/ ? @_ : () };
+    my Str $y; # calls Str->TYPEDSCALAR
+    my Int $x; # nothing special
 
 =item *
 
@@ -132,7 +146,7 @@ sub import {
 =head2 C<unimport>
 
 Magically called when writing C<no Lexical::Types>.
-Turns the module off.
+Turns the pragma off.
 
 =cut