Move some stuff from PLANS to TODO, and remove PLANS
Dave Rolsky [Mon, 11 Apr 2011 20:44:20 +0000 (15:44 -0500)]
PLANS [deleted file]
TODO

diff --git a/PLANS b/PLANS
deleted file mode 100644 (file)
index b4624ad..0000000
--- a/PLANS
+++ /dev/null
@@ -1,118 +0,0 @@
------------------------------------------------------------
--- Type Constraints refactor
------------------------------------------------------------
-
-- add support for locally scoped TC
-
-This would borrow from MooseX::TypeLibrary to prefix the TC with the name
-of the package. It would then be accesible from the outside as the fully
-scoped name, but the local attributes would use it first. (this would need support
-in the registry for this).
-
-- look into sugar extensions
-
-Use roles as sugar layer function providers (ala MooseX::AttributeHelpers). This
-would allow custom metaclasses to provide roles to extend the sugar syntax with.
-
-(NOTE: Talk to phaylon a bit more on this)
-
-- allow a switch of some kind to optionally turn TC checking off at runtime
-
-The type checks can get expensive and some people have suggested that allowing
-the checks to be turned off would be helpful for deploying into performance
-intensive systems. Perhaps this can actually be done as an option to make_immutable?
-
-- misc. minor bits
-
-* make the errors for TCs use ->message
-* look into localizing the messages too
-* make ANON TCs be lazy, so they can possibly be subsituted for the real thing later
-* make ANON TCs more introspectable
-* add this ...
-
-#
-#   Type Definition
-#
-subtype 'Username',
-   from 'Str',
-  where {     (/[a-z][a-z0-9]+/i or fail('Invalid character(s)'))
-          and (length($_) >= 5   or fail('Too short (less than 5 chars)'))
-        }
-on_fail { MyException->throw(value => $_[0], message => $_[1]) };
-
-# fail() will just return false unless the call is made via
-$tc->check_or_fail($value);
-
-* and then something like this:
-
-subtype Foo => as Bar => where { ... } => scoped => -global;
-subtype Foo => as Bar => where { ... } => scoped => -local;
-
-# or
-
-subtype Foo => as Bar => where { ... } => in __PACKAGE__ ;
-
-# or (not sure if it would be possible)
-
-my $Foo = subtype Bar => where { ... };
-
-# ----------
-
-[17:10]  <autarch> stevan: it should do it if I pass coerce => 1 as part of the attribute definition
-[17:12]  <stevan> autarch: what I am not 100% sure of is how to tell it to deep coerce and when to not
-[17:13]  <stevan> cause a basic coerce is from A to B
-[17:13]  <autarch> hmm
-[17:13]  <stevan> which is valid for collection types too
-[17:13]  <stevan> deep coercion is what you are asking for
-[17:13]  <autarch> yeah
-[17:13]  <stevan> so perhaps we add deep_coerce => 1
-[17:13]  <stevan> which will do it
-[17:13]  <autarch> that's fine for me
-[17:13]  <stevan> k
-
-coerce_deeply => 1 # reads better
-
------------------------------------------------------------
-- TC stuff DONE
------------------------------------------------------------
-
-- create an official TC registry API (DONE)
-
-Right now the registration of the TC is a by-product of creation in the sugar
-layer, this is bad and make extension of TCs difficult. I am not sure if this
-registry API should exist as part of Moose::Util::TypeConstraints, or of we
-should create a complete registry object itself.
-
-This registry should be a singleton, but M::U::TC should enforce that lifecycle
-choice so that you can use your own registry if you really want too.
-
-I mean parent of the registry. So that I can create my own registry
-object for a given class, and any retrieval of a type constraint from
-this object would automatically search parent registries as well.
-
-- refactor the various TC internals to make it more subclassing friendly (DONE)
-
-This also includes the coercion stuff as well. This should give you what you
-need to make your object/class bound stuff.
-
-- move the container TCs from MooseX::AttributeHelpers into Moose core (DONE)
-
-These have proven so useful for me in the latest $work project that I think
-they should really be core.
-
-- move the details of TC construction that are in Moose.pm and
-  Moose::Util::TypeConstraints into the Moose::Meta::TypeConstraint module
-  (DONE)
-
-This will make it much easier to generate TCs on their own, without
-having to use the sugar layer. This should also clean up their APIs
-as well, which will make it easier to subclass them.
-
------------------------------------------------------------
--- Roles refactor
------------------------------------------------------------
-
-
------------------------------------------------------------
--- Immutable refactor
------------------------------------------------------------
\ No newline at end of file
diff --git a/TODO b/TODO
index 242c278..5457600 100644 (file)
--- a/TODO
+++ b/TODO
@@ -105,6 +105,80 @@ over there.. in that other object
 [13:32]        mst     etc.
 [13:53]        stevan  hmm
 
+-----------------------------------------------------------
+-- Type Constraints refactor
+-----------------------------------------------------------
+
+- add support for locally scoped TC
+
+This would borrow from MooseX::TypeLibrary to prefix the TC with the name
+of the package. It would then be accesible from the outside as the fully
+scoped name, but the local attributes would use it first. (this would need support
+in the registry for this).
+
+- look into sugar extensions
+
+Use roles as sugar layer function providers (ala MooseX::AttributeHelpers). This
+would allow custom metaclasses to provide roles to extend the sugar syntax with.
+
+(NOTE: Talk to phaylon a bit more on this)
+
+- allow a switch of some kind to optionally turn TC checking off at runtime
+
+The type checks can get expensive and some people have suggested that allowing
+the checks to be turned off would be helpful for deploying into performance
+intensive systems. Perhaps this can actually be done as an option to make_immutable?
+
+- misc. minor bits
+
+* make the errors for TCs use ->message
+* look into localizing the messages too
+* make ANON TCs be lazy, so they can possibly be subsituted for the real thing later
+* make ANON TCs more introspectable
+* add this ...
+
+#
+#   Type Definition
+#
+subtype 'Username',
+   from 'Str',
+  where {     (/[a-z][a-z0-9]+/i or fail('Invalid character(s)'))
+          and (length($_) >= 5   or fail('Too short (less than 5 chars)'))
+        }
+on_fail { MyException->throw(value => $_[0], message => $_[1]) };
+
+# fail() will just return false unless the call is made via
+$tc->check_or_fail($value);
+
+* and then something like this:
+
+subtype Foo => as Bar => where { ... } => scoped => -global;
+subtype Foo => as Bar => where { ... } => scoped => -local;
+
+# or
+
+subtype Foo => as Bar => where { ... } => in __PACKAGE__ ;
+
+# or (not sure if it would be possible)
+
+my $Foo = subtype Bar => where { ... };
+
+# ----------
+
+[17:10]  <autarch> stevan: it should do it if I pass coerce => 1 as part of the attribute definition
+[17:12]  <stevan> autarch: what I am not 100% sure of is how to tell it to deep coerce and when to not
+[17:13]  <stevan> cause a basic coerce is from A to B
+[17:13]  <autarch> hmm
+[17:13]  <stevan> which is valid for collection types too
+[17:13]  <stevan> deep coercion is what you are asking for
+[17:13]  <autarch> yeah
+[17:13]  <stevan> so perhaps we add deep_coerce => 1
+[17:13]  <stevan> which will do it
+[17:13]  <autarch> that's fine for me
+[17:13]  <stevan> k
+
+coerce_deeply => 1 # reads better
+
 -------------------------------------------------------------------------------
 INTERNALS
 -------------------------------------------------------------------------------