From eb25dfb720b6cae0e806eb230c01e18ba7f0f1cb Mon Sep 17 00:00:00 2001 From: blob8108 Date: Tue, 7 Jan 2014 10:57:43 +0000 Subject: Make Snap! predicates actually return and Fixes #8 --- blockext/snap.py | 79 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 70 insertions(+), 9 deletions(-) diff --git a/blockext/snap.py b/blockext/snap.py index b18a9c0..ba4f56e 100644 --- a/blockext/snap.py +++ b/blockext/snap.py @@ -74,17 +74,78 @@ def generate_s2e(): encode = SubElement(list_, "block", s="reportTextFunction") l = SubElement(encode, "l") SubElement(l, "option").text = "encode URI component" - SubElement(encode, "block", var=name) + join = SubElement(encode, "block", s="reportJoinWords") + SubElement(join, "block", var=name) - script = SubElement(defn, "script") if block.shape == "command": - selector = "doRun" if block.is_blocking else "fork" - run = SubElement(script, "block", s=selector) - ring = SubElement(run, "block", s="reifyReporter") - lambda_ = SubElement(ring, "autolambda") - lambda_.append(http_block) - else: # reporter, predicate - SubElement(script, "block", s="doReport").append(http_block) + script_xml = """ + + """.format( + selector="doRun" if block.is_blocking else "fork", + http_block_xml="{http_block_xml}", + ) + elif block.shape == "predicate": + script_xml = """ + + + + + + false + + + + + + + + """ + elif block.shape == "reporter": + script_xml = """ + + """ + + script = ElementTree.fromstring(script_xml.format( + http_block_xml=ElementTree.tostring(http_block), + )) + defn.append(script) # It's useful to change this to "application/xml" while debugging. return ("application/octet-stream", ElementTree.tostring(root)) -- cgit v1.3.1