/[Frey]/trunk/lib/Frey.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/Frey.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 58 by dpavlin, Tue Jul 8 12:18:33 2008 UTC revision 575 by dpavlin, Fri Nov 28 00:05:55 2008 UTC
# Line 1  Line 1 
1  package Frey;  package Frey;
2  use Moose;  use Moose;
3    
4    our $VERSION = "0.22";
5    
6    use Data::Dump qw//;
7    sub dump { Data::Dump::dump ( @_ ) }
8    
9  has 'debug' => (  has 'debug' => (
10          is => 'rw',          is => 'rw',
11          isa => 'Bool',          isa => 'Int',
12          default => 0,          default => 0,
13  );  );
14    
# Line 18  n. Mythology. Line 23  n. Mythology.
23  The Norse god who dispenses peace, good weather, prosperity, and bountiful  The Norse god who dispenses peace, good weather, prosperity, and bountiful
24  crops; the brother of Freya.  crops; the brother of Freya.
25    
26  =cut  Basically you write L<Moose> classes which become deirectly callable from
27    the web using REST API
28    
29  use Data::Dump qw/dump/;  =head1 INTROSPECTION
 use File::Find;  
30    
31  has 'classes' => (  Secondary goal is to have introspection.
32          is => 'ro',  
33  #       isa => 'HashRef[Str]',  =head2 Moose classes
34          default => sub {  
35                  my $self = shift;  All Moose classes have simple introspection API which use
36                  # FIXME there must be better way to do this in Moose style  L<Frey::Introspect> to show class and it's pod (using L<Frey::Pod>).
37                  my $classes;  
38                  finddepth({ no_chdir => 1, wanted => sub {  Example of valid REST URL is
39                          return unless s/\.pm$//;  
40                          my @a = split(m!/!,$_);    http://localhost:16001/Frey
41                          warn ">> $_ ",dump( @a ) if $self->debug;  
42                          my $package = join('::', @a[ 1 .. $#a ]);  which will show L<Frey> class introspection.
43                          warn "## $package\n";  
44                          push @$classes, { $package => "$_.pm" };  You can also add method invocation and optonal parametars to C<new>
45                  } }, 'lib');  constructor like this:
46                  warn "## classes = ",dump( $classes ) if $self->debug;  
47                  $classes;    http://localhost:16001/Frey::Pod/as_markup?class=Frey
48          },  
49          lazy => 1,  this is same using L<Frey::Pod> from perl as
50  );  
51      Frey::Pod->new( class => 'Frey' )->as_markup;
52    
53    if you leave out parametars, L<Frey::Run> will ask for required ones.
54    
55    =head2 Database
56    
57    For database objects we support L<Fey> and when your objects are created
58    C<< with 'Frey::Collection' >> they will have basic CRUD functionality
59    implemented by L<Frey::ObjectBrowser>.
60    
61    =cut
62    
63  1;  1;

Legend:
Removed from v.58  
changed lines
  Added in v.575

  ViewVC Help
Powered by ViewVC 1.1.26