From 3562eda3478e56a5756c357142dd2fc7ae234b8b Mon Sep 17 00:00:00 2001 From: miker Date: Fri, 4 Mar 2005 23:09:41 +0000 Subject: [PATCH] generating a JSON object for finding positions in objects git-svn-id: svn://svn.open-ils.org/ILS/trunk@235 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../src/perlmods/OpenILS/Utils/Fieldmapper.pm | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm b/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm index a576ddc42c..8daff3e764 100644 --- a/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm +++ b/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm @@ -91,24 +91,11 @@ sub new { sub javascript { my $class = shift; - $class = $class->class; - my $js_class = $class->json_hint; - - my $output = <<" JS"; - -function $js_class (thing) { var new_thing = thing; if (!new_thing) { new_thing = []; } return new_thing; } - $js_class.prototype.class_name = function () { return "$js_class"; } - JS - - for my $field ( sort keys %{$$fieldmap{$class}{fields}} ) { - my $pos = $$fieldmap{$class}{fields}{$field}{position}; - $output .= <<" JS"; - $js_class.prototype.$field = function (arg) { if (arg) { this[$pos] = arg; } return this[$pos]; } - JS - } - return $output; + return 'var fieldmap = ' . JSON->perl2JSON($fieldmap) . ';' } +sub DESTROY {} + sub AUTOLOAD { my $obj = shift; my $value = shift; @@ -138,7 +125,7 @@ sub class { } sub real_fields { - my $class = shift; + my $self = shift; my @f = grep { !$$fieldmap{$self->class}{fields}{$_}{virtual} } keys %{$$fieldmap{$self->class}{fields}}; @@ -174,7 +161,7 @@ for my $pkg ( keys %$fieldmap ) { type => 'array', ); - print $pkg->javascript if ($ENV{GEN_JS}); } +print Fieldmapper->javascript() if ($ENV{GEN_JS}); 1; -- 2.43.2