Examples
Note
wast
codebase itself is one huge example of using wast
Please refer to files src/render.py
and src/mk_helpers.py
Defining a parametrised class
>>> from wast import _, w, unparse
>>> def mk_cls(name, parent_name, inner):
... return w.ClassDef(
... name=name,
... bases=[_.family._(parent_name)],
... body=[inner],
... )
>>> elephant = mk_cls('Elephant', 'Animal', w.Pass())
>>> boa = mk_cls('Snake', 'Reptile', elephant)
>>> print(unparse(boa)) # here is our hat!
class Snake(family.Reptile):
class Elephant(family.Animal):
pass
Using a transformer
>>> from wast import _, w, parse, unparse, mk_transformer
>>> @mk_transformer(type=w.Name, filter=lambda n, c: n.id.startswith('b'))
... def prefix_b_names(node, ctx):
... return _(f'my_{node.id}')
>>> tree = parse('a = 1; b = 2; c = 3')
>>> new_tree = prefix_b_names.transform(tree)
>>> print(unparse(new_tree))
a = 1
my_b = 2
c = 3