[Jifty-commit] r5803 - in JiftyX-ModelHelpers/branches/JiftyX-ModelHelpers-trunk: lib lib/JiftyX

Jifty commits jifty-commit at lists.jifty.org
Mon Sep 8 09:32:23 EDT 2008


Author: gugod
Date: Mon Sep  8 09:32:23 2008
New Revision: 5803

Added:
   JiftyX-ModelHelpers/branches/JiftyX-ModelHelpers-trunk/lib/
   JiftyX-ModelHelpers/branches/JiftyX-ModelHelpers-trunk/lib/JiftyX/
   JiftyX-ModelHelpers/branches/JiftyX-ModelHelpers-trunk/lib/JiftyX/ModelHelpers.pm
Modified:
   JiftyX-ModelHelpers/branches/JiftyX-ModelHelpers-trunk/   (props changed)

Log:
 r23659 at yra:  gugod | 2008-09-02 23:09:04 +0800
 Import currently working code first.


Added: JiftyX-ModelHelpers/branches/JiftyX-ModelHelpers-trunk/lib/JiftyX/ModelHelpers.pm
==============================================================================
--- (empty file)
+++ JiftyX-ModelHelpers/branches/JiftyX-ModelHelpers-trunk/lib/JiftyX/ModelHelpers.pm	Mon Sep  8 09:32:23 2008
@@ -0,0 +1,48 @@
+package JiftyX::ModelHelpers;
+use strict;
+use Exporter;
+
+our @ISA = qw(Exporter);
+our @EXPORT;
+our $VERSION = "0.01";
+
+if (@EXPORT == 0) {
+    require Jifty::Schema;
+    my @models = map { s/.*::(.+)$/$1/;  $_; } Jifty::Schema->new->models;
+
+    no strict 'refs';
+    for my $model (@models) {
+        if ( index($model, "Collection") >= 0) {
+            *{"$model"} = sub {
+                my @args = @_;
+                my $obj = Jifty->app_class(Model => "$model")->new;
+                if (@args == 0) {
+                    $obj->unlimit;
+                }
+                elsif (@args % 2 == 0) {
+                    my %limits = @args;
+                    while( my ($col, $val) = each %limits) {
+                        $obj->limit(column => $col, value => $val);
+                    }
+                }
+                return $obj;
+            }
+        }
+        else {
+            *{"$model"} = sub {
+                my @args = @_;
+                my $obj = Jifty->app_class(Model => "$model")->new;
+                if (@args == 1) {
+                    $obj->load($args[0]);
+                }
+                elsif (@args && @args % 2 == 0) {
+                    $obj->load_by_cols(@args);
+                }
+                return $obj;
+            };
+        }
+        push @EXPORT, "&${model}";
+    }
+}
+
+1;


More information about the Jifty-commit mailing list