added retrieve method to return the string value for a given path/key
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 6 Jan 2006 20:23:03 +0000 (20:23 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 6 Jan 2006 20:23:03 +0000 (20:23 +0000)
from the script env

git-svn-id: svn://svn.open-ils.org/ILS/trunk@2640 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Utils/ScriptRunner.pm
Open-ILS/src/perlmods/OpenILS/Utils/SpiderMonkey.pm

index f4a8639..edae2c4 100644 (file)
@@ -27,6 +27,9 @@ sub init {$logger->error("METHOD NOT DEFINED"); }
 # the script context
 sub context {$logger->error("METHOD NOT DEFINED"); }
 
+# Retrieves a value based on key
+sub retrieve {$logger->error("METHOD NOT DEFINED"); }
+
 # generic insertion method - should work on arrays, 
 # hashes, fieldmapper objects, and scalars
 sub insert {$logger->error("METHOD NOT DEFINED"); }
index b70b0e3..c926bdc 100644 (file)
@@ -51,7 +51,7 @@ sub run {
        }
 
        if( ! $js->eval(join("\n", <F>)) ) {
-               $logger->error("$file Eval failed: $@");  
+               $logger->error("Script ($file) eval failed in SpiderMonkey run: $@");  
                return 0;
        }
 
@@ -70,8 +70,14 @@ sub _js_prop_name {
        return $name;
 }
 
+sub retrieve {
+       my( $self, $key ) = @_;
+       return $self->context->property_get($key);
+}
+
 sub insert {
        my( $self, $key, $val ) = @_;
+       return unless defined($val);
 
        if (ref($val) =~ /^Fieldmapper/o) {
                $self->insert_fm($key, $val);
@@ -160,7 +166,7 @@ sub insert_array {
                        $self->insert('__tmp_arr_el', $v);
                        $ctx->array_set_element_as_object( $a, $ind, $elobj );
                } else {
-                       $ctx->array_set_element( $a, $ind, $v );
+                       $ctx->array_set_element( $a, $ind, $v ) if defined($v);
                }
                $ind++;
        }