--- trunk/lib/Frey/Web.pm 2008/07/13 12:22:14 106 +++ trunk/lib/Frey/Web.pm 2008/07/14 21:22:43 121 @@ -1,30 +1,66 @@ 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( @_ ); 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; +} -sub head_javascript { +sub page { my $self = shift; + my $a = {@_}; - 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
| + . '' + ; - warn "# >>> js\n$js\n" if $self->debug; + warn "## >>> page ",length($html), " bytes\n" if $self->debug; - return $js; + return $html; } 1;