From e22a4086ffb12abed2baa4f075825c5c85396b9a Mon Sep 17 00:00:00 2001 From: mfranz <mfranz> Date: Thu, 10 May 2007 17:33:28 +0000 Subject: [PATCH] "fixed" the "arg bug". (Wasn't really a bug, just old-style Nasal code that doesn't work with new nasal. :-) --- Nasal/xml.nas | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Nasal/xml.nas b/Nasal/xml.nas index 8e57154db..104074c68 100644 --- a/Nasal/xml.nas +++ b/Nasal/xml.nas @@ -91,7 +91,6 @@ # # and would be used as: xml.process_string("<foo>bar</foo>", do_nothing); -var printf = func { print(call(sprintf, arg)) } var isspace = func(c) { c == ` ` or c == `\t` or c == `\n` or c == `\r` } var isletter = func(c) { c >= `a` and c <= `z` or c >= `A` and c <= `Z` } @@ -262,8 +261,8 @@ var StringScanner = { # PARSER ========================================================================================== -var parse_document = func { - call(action.begin, caller(0)[0]["arg"]!=nil?arg:[], action); # FIXME work around nasal bug +var parse_document = func(arg...) { + call(action.begin, arg, action); parse_prolog(); if (!parse_element()) { var c = scan.get(); @@ -506,13 +505,13 @@ var dump = { var process = func { var err = []; - var ret = call(parse_document, caller(0)[0]["arg"]!=nil?arg:[], nil, nil, err); # FIXME work around nasal bug + var ret = call(parse_document, caller(0)[0]["arg"]!=nil?arg:[], err); # FIXME work around nasal bug if (!size(err)) return ret; - if (substr(err[0], 0, size(error_label)) == error_label) - print(err[0]); - else + if (substr(err[0], 0, size(error_label)) != error_label) die(err[0]); # rethrow + + print(err[0]); return nil; } @@ -523,18 +522,18 @@ var action = nil; # INTERFACE ======================================================================================= -var process_string = func(string, act) { +var process_string = func(string, act, arg...) { scan = StringScanner.new(string); action = act; - return call(process, caller(0)[0]["arg"]!=nil?arg:[]); # FIXME work around nasal bug + return call(process, arg); } -var process_file = func(file, act) { +var process_file = func(file, act, arg...) { scan = StringScanner.new(io.readfile(file)); scan.source = "\n in file " ~ file ~ ","; action = act; - return call(process, caller(0)[0]["arg"]!=nil?arg:[]); # FIXME work around nasal bug + return call(process, arg); }