18 |
|
|
19 |
# tester: handle the tal: and metal: namespaces |
# tester: handle the tal: and metal: namespaces |
20 |
|
|
21 |
from tal_handler import tal_handler, tal_ns |
# ATTENTION: this script is NOT the best way to find out how to use |
22 |
from metal_handler import metal_handler, metal_ns, metal_compilefile, metal_getmacros |
# OpenTAL from Python, and it's not particularly useful either |
23 |
|
# (because its Context has no useful bindings). |
24 |
|
# A more useful tool is the Static subpackage. |
25 |
|
# This script is not guaranteed to be kept up-to-date either. |
26 |
|
|
27 |
|
from tal_handler import * |
28 |
|
from metal_handler import * |
29 |
|
|
30 |
if __name__ == '__main__': |
if __name__ == '__main__': |
31 |
import sys, pax, pax.paxtransform |
import sys, pax, pax.paxtransform |
32 |
zpt_tr_engine = pax.paxtransform.Engine() |
compile_engine = pax.paxtransform.Engine() |
33 |
zpt_tr_engine.add_handler(metal_ns, metal_handler) |
compile_engine.add_handler(metal_ns, metal_handler) |
34 |
zpt_tr_engine.add_handler(tal_ns, tal_handler) |
compile_engine.add_handler(tal_ns, tal_handler) |
35 |
import DummyEngine |
render_engine = pax.paxtransform.RenderingEngine() |
36 |
default = DummyEngine.Default |
render_engine.add_handler(metal_ns, metal_handler) |
37 |
class DumbContext: |
render_engine.add_handler(tal_ns, tal_handler) |
|
def __init__(self, tr_engine, macros=None): |
|
|
self.engine = DummyEngine.DummyEngine(macros) |
|
|
self.tr_engine = tr_engine |
|
|
self.engine.compilefile = metal_compilefile |
|
|
self.engine.getmacros = metal_getmacros |
|
38 |
if len(sys.argv) > 1: |
if len(sys.argv) > 1: |
39 |
srcfile = open(sys.argv[1]) |
srcfile = open(sys.argv[1]) |
40 |
else: |
else: |
41 |
srcfile = sys.stdin |
srcfile = sys.stdin |
42 |
sys.stderr.write('Reading source from stdin\n') |
sys.stderr.write('Reading source from stdin\n') |
43 |
source = pax.xml2pax(srcfile.read()) |
source = pax.text2pax(srcfile.read(), builtin_namespaces={'tal': tal_ns, 'metal': metal_ns}) |
44 |
macros = metal_getmacros(source) |
print source |
45 |
print pax.XML(zpt_tr_engine.transform(source, DumbContext(zpt_tr_engine, macros))) |
import Context, Expressions |
46 |
|
expr_engine = Expressions.Engine() |
47 |
|
context = Context.Context(expr_engine) |
48 |
|
compile_engine.initialize(context) |
49 |
|
compiled = compile_engine.transform(source, context) |
50 |
|
macros = getattr(context, 'metal_macros', None) |
51 |
|
context = Context.Context(expr_engine, names={'macros': macros}) |
52 |
|
context.encoding = sys.getdefaultencoding() |
53 |
|
context.root_xmlns_map = {} |
54 |
|
render_engine.initialize(context) |
55 |
|
print render_engine.transform(compiled, context).text |