X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=TODO;h=7e66a5176c2edda35ad78cb0bcbcf67026b21441;hb=52a919fe29bc15daa7322f91d7def6db913d66ad;hp=e5bc34ff5ecc2503ce07117973a56f7d650e4bac;hpb=687e52bbbeea9c3096697e66aa88c2f022ed7478;p=gitmo%2FMoose.git diff --git a/TODO b/TODO index e5bc34f..7e66a51 100644 --- a/TODO +++ b/TODO @@ -1,12 +1,27 @@ ------------------------------------------------------------------------------- + BUGS +------------------------------------------------------------------------------- + +------------------------------------------------------------------------------- TODO ------------------------------------------------------------------------------- -- make way to iterate over all Moose classes +- DDuncan's Str types + +subtype 'Str' + => as 'Value' + => where { Encode::is_utf8( $_[0] ) or $_[0] !~ m/[^0x00-0x7F]/x } + => optimize_as { defined($_[0]) && !ref($_[0]) }; + +subtype 'Blob' + => as 'Value' + => where { !Encode::is_utf8( $_[0] ) } + => optimize_as { defined($_[0]) && !ref($_[0]) }; -- roles -Need to figure out the details of composite roles +- should handle some moose-specific options in &Moose::Meta::Class::create + things like roles, and method modifiers (although those can probably be + ignored if i want to) - type unions @@ -19,49 +34,79 @@ Mostly just for Roles - inherited slot specs -[10:49] stevan does can be added to,.. but not changed - -- triggers - -[18:18] mst what I'd really like is just to say trigger => 'some_method' - -- attribute delgates - -Introduce capability to control the generated wrapper. Useful for when you have -a wrapper that should implement the interface of it's child, but decorate with -more metadata. +'does' can be added to,.. but not changed +(need type unions for this) - proxy attributes -[15:49] stevan you want a proxied attribute -[15:49] stevan which looks like an attribute, - talks like an attribute, smells - like an attribute,.. but if you - look behind the curtain,.. its - over there.. in that other object - -- compile time extends - -[00:39] sri but maybe a better syntax for compile time extends -[00:39] stevan I have been pondering that actually -[00:39] sri use Moose extends => Foo::Bar -[00:40] stevan I think now that we have the Sub::Exporter stuff - in, that kinda thing should be pretty easy - -nothingmuch notes that all the constructs should be supported in the entirety of the use clause: - - use Moose ( - has => foo ( - .... - ), - ); - -and that if this usage style is used nothing is exported to the namespace. - -- default should dclone() - -- auto_deref => 1 for auto-de-refing ARRAY and HASH attrs - +a proxied attribute is an attribute +which looks like an attribute, +talks like an attribute, smells +like an attribute,.. but if you +look behind the curtain,.. its +over there.. in that other object + +(... probably be a custom metaclass) + +- subtype $anon_subtype => where { ... } + +[22:56] stevan sub mst_doesnt_like_to_type { (shift)->meta->attr->type_contstraint } +[22:57] mst err +[22:57] stevan :P +[22:57] stevan are you wanting to reuse it or something? +[22:57] stevan my $subtype = subtype 'Something' => where { ... }; +[22:58] stevan then you can do isa => $subtype +[22:58] mst but I can't subtype it again +[22:59] stevan mst: ahhh... +[22:59] mst well, I can. but it suddenly gets very "long way round" ish +[23:00] stevan my $constraint = Moose::Meta::TypeConstraint->new( +[23:00] stevan name => $name || '__ANON__', +[23:00] stevan parent => $parent, +[23:00] stevan constraint => $check, +[23:00] stevan message => $message, +[23:00] stevan ); +[23:00] stevan yeah thats kinda the long way +[23:00] stevan mst: what would you like it to be? +[23:00] mst $parent = find_type_constraint($parent) if defined $parent; +[23:00] mst if $parent is already a type constraint +[23:00] mst skip that bit +[23:00] stevan hmm +[23:00] mst should be all you need to change +[23:00] stevan yeah +[23:01] stevan so you can then say +[23:01] stevan subtype $anon => where { ... }; +[23:01] mst right +[23:01] stevan ok + +- local coerce + +[13:16] mst stevan: slight problem with coerce +[13:16] mst I only get to declare it once +[13:17] mst so if I'm trying to declare it cast-style per-source-class rather than per-target-class +[13:17] mst I am extremely screwed +[13:17] stevan yes +[13:17] stevan they are not class specific +[13:18] stevan they are attached to the type constraint itself +[13:18] * stevan ponders anon-coercion-metaobjects +[13:18] mst yes, that's fine +[13:19] mst but when I declare a class +[13:19] mst I want to be able to say "this class coerces to X type via " +[13:19] stevan yeah something like that +[13:19] stevan oh,.. hmm +[13:20] stevan sort of like inflate/deflate? +[13:20] stevan around the accessors? +[13:25] * bluefeet has quit (Remote host closed the connection) +[13:27] mst no +[13:27] mst nothing like that +[13:27] mst like a cast +[13:31] mst stevan: $obj->foo($bar); where 'foo' expects a 'Foo' object +[13:31] mst stevan: is effectively $bar, right? +[13:32] mst stevan: I want to be able to say in package Bar +[13:32] mst stevan: coerce_to 'Foo' via { ... }; +[13:32] mst etc. +[13:53] stevan hmm + + ------------------------------------------------------------------------------- TO PONDER -------------------------------------------------------------------------------