[Wheat-cvs] r1/root/library render.ws,1.36,1.37
Status: Pre-Alpha
Brought to you by:
mark_lentczner
From: Jim K. <ki...@us...> - 2005-04-29 21:10:02
|
Update of /cvsroot/wheat/r1/root/library In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6258/root/library Modified Files: render.ws Log Message: Fix xmlencoding bug in renderlibrary. Traces now know about errors. A few renames and cleanups. Index: render.ws =================================================================== RCS file: /cvsroot/wheat/r1/root/library/render.ws,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- render.ws 23 Apr 2005 00:50:55 -0000 1.36 +++ render.ws 29 Apr 2005 21:09:53 -0000 1.37 @@ -4,13 +4,14 @@ Render Library ``) -expand(subject: s, expander: e, request: r, template: t, part: p, trace: tr): { +expand(subject: s, expander: e, request: r, template: template, + ... part: p, trace: trace): { c := #expander.context-for(subject: \\s, expander: \\e, request: \\r) - if (~t?) { - t := s.template(part: p, request: \\r) + if (~template?) { + template := s.template(part: p, request: \\r) } - r := #expand-prim(context: c, template: \\t, part: p, trace: tr) - if (tr) { return #expand-trace.from-raw(r) } + r := #expand-prim(context: c, template: \\template, part: p, trace: trace) + if (trace) { return #expand-trace.from-raw(r) } return r } @@ -174,11 +175,13 @@ expand-trace: { -- instance -- map: ??? + errors: "" -- public -- action-type: { :'/library/base/enum': values: ["unknown", "unexpanded", "kept", "skipped", "replaced", - "repeated", "ambiguous" + "repeated", "ambiguous", + "errors" ] } @@ -204,12 +207,20 @@ new(array): { return {:self: array: \\array; index: 0 } } next(): { v := #array[#index]; #index += 1; return v } more(): { return #index < #array.size } - done(): { return ~#done } } from-raw(raw-trace): { raw-stream := #array-stream.new(\\raw-trace) - return #build-from-raw(\raw-stream) + trace := #build-from-raw(\raw-stream) + if (raw-stream.more()) { + name := raw-stream.next() + action := raw-stream.next() + if (~ "errors" == action) { + return !!!("expected errors got " + action) + } + trace.errors := raw-stream.next() + } + return trace; } build-from-raw(raw-stream): { @@ -628,7 +639,7 @@ template := "<x tt:name='prefix' href='' />"; out := $/library/render.expand(template: template, expander: \e); #assert-contains(#errstr, out); - #assert-contains("bad prefix", out); + #assert-contains("<bad prefix>", out); template := "<x tt:name='replace' href='' />"; out := $/library/render.expand(template: template, expander: \e); @@ -636,15 +647,15 @@ #assert-contains( ""( While expanding tag replace (fetching value) -bad replace +<bad replace> ""), out); - #assert-contains("bad replace", out); + #assert-contains("<bad replace>", out); } error-attribute-expander: {:'/library/render/expander': - tt-prefix(): { #attribute("href", prefix: !!!("bad prefix")); } - tt-replace(): { #attribute("href", !!!("bad replace")); } + tt-prefix(): { #attribute("href", prefix: !!!("<bad prefix>")); } + tt-replace(): { #attribute("href", !!!("<bad replace>")); } } -- public -- @@ -1000,6 +1011,25 @@ } #assert-equals("unknown", trace.action("count").value) + + #assert-equals("", trace.errors()) + } + + test-error-with-trace(): { + renderlib := \$/library/render + trace := renderlib.expand( + template: "<body tt:name='prefix' href=''/>", + expander: \#error-attribute-expander, + trace: true) + #assert-equals(renderlib.absolute-path + "expand-trace", + trace.prototype().as-string) + + #assert-contains( +""( +While expanding tag prefix (fetching value) +<bad prefix> +"") + ..., trace.errors()) } } |