--- trunk/lib/Frey/Introspect.pm 2008/07/02 22:30:19 50 +++ trunk/lib/Frey/Introspect.pm 2008/07/03 19:51:18 51 @@ -8,6 +8,7 @@ use Scalar::Util qw/blessed/; use Data::Dump qw/dump/; use File::Slurp; +use List::Util; extends 'Frey'; @@ -17,6 +18,21 @@ required => 1, ); +has 'renderHTML' => ( + is => 'rw', + isa => 'Str', +); + +has 'path' => ( + is => 'rw', +); + +=head2 examine + + my $js = $o->examine( 'Some::Package' ); + +=cut + sub examine { my ($self) = @_; @@ -55,7 +71,7 @@ my $out; my ( $m, $c ) = split(/::/, $class->name, 2); - my $filename = "$m.$c.js"; + my $filename = $m . '.' . ( $c ? "$c." : '' ) . 'js'; $out .= "Module(\"$m\", function (m) {\n\tClass(\"$c\", {\n\t\thas: {\n"; @@ -84,6 +100,12 @@ } + $out .= "\t\t},\n\t\tmeta: Frey.HTML, + classMethods: { + renderHTML: function () { + return new Joose.SimpleRequest().getText(\"json?class=$c\") + },\n"; + $out .= "\t\t},\n"; $out .= "\t}),\n"; @@ -95,15 +117,21 @@ warn $class->dump(2); - warn "get_attribute_list = ",dump( $class->get_attribute_list ); -# warn dump( map{ $class->get_attribute($_) } sort $class->get_attribute_list ); + my $attr; + $attr->{$_}++ foreach $class->get_attribute_list; + my @methods = grep { ! defined($attr->{$_}) } $class->get_method_list; + warn "methods = ",dump( @methods ); - warn dump( $class->get_method_list ); + warn "method_list = ",dump( $class->get_method_list ); + warn dump( map{ $class->get_method($_)->name } sort $class->get_method_list ); - print $out; +# print $out; my $path = "static/blib/$filename"; write_file( $path, $out ); warn "# created $path\n"; + $self->path( $path ); + + return $out; } =head1 SEE ALSO