--- trunk/lib/Frey/Web.pm 2008/07/11 19:19:42 100 +++ trunk/lib/Frey/Web.pm 2008/07/16 14:14:18 142 @@ -1,30 +1,70 @@ package Frey::Web; use Moose::Role; +use MooseX::AttributeHelpers; use Continuity::Widget::DomNode; use Data::Dump qw/dump/; +use Carp qw/confess/; + +has 'javascript' => ( + metaclass => 'Collection::Array', + is => 'rw', + isa => 'ArrayRef[Str]', + default => sub { [] }, + provides => { + 'push' => 'add_javascript', + }, +); + +has 'css' => ( + metaclass => 'Collection::Array', + is => 'rw', + isa => 'ArrayRef[Str]', + default => sub { [ 'static/app.css' ] }, + provides => { + 'push' => 'add_css', + }, +); sub dom2html { - warn "## dom2html ",dump( @_ ); +# warn "## dom2html ",dump( @_ ); return Continuity::Widget::DomNode->create( @_ )->to_string; } -our @javascript = ( qw' -../lib/Joose.js -'); +sub _unroll_markup { +# warn "## _unroll_markup ",dump( @_ ); + my ( $markup, $array ) = @_; + my $out = ''; + foreach my $path ( @$array ) { + $path =~ s!^/!!; + confess "can't find $path" unless -e $path; + $out .= sprintf( $markup, $path ); + } + return $out; +} + +our $reload_counter = 0; -sub head_javascript { +sub page { my $self = shift; + my $a = {@_}; + + $reload_counter++; - my $js = Continuity::Widget::DomNode->create( - map { - ( script => { type => 'text/javascript', src => $_ } ) - } @javascript - )->to_string; + my $html = qq|| + . _unroll_markup( qq||, $self->javascript ) + . _unroll_markup( qq||, $self->css ) + . '' . ( $a->{title} || ref($self) ) . '' + . ( $a->{head} || '' ) + . '' + . ( $a->{body} || '' ) + . qq|
Frey $Frey::VERSION reload
| + . '' + ; - warn "# >>> js\n$js\n" if $self->debug; + warn "## >>> page ",length($html), " bytes\n" if $self->debug; - return $js; + return $html; } 1;