Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from pyparsing import *
- from string import printable
- data = "${foo} ${${bar}} whee ${ bar ${baz ${meh} moo}}"
- datastore = {
- "foo": "fooval",
- "bar": "barval",
- "barval": "barvalval",
- "meh": "MEH",
- "baz MEH moo": "heh.",
- " bar heh.": "dance!",
- }
- expanded_data = "fooval barvalval whee dance!"
- def getVar(tokens):
- var = tokens[0]
- val = "".join(var.asList())
- if val in datastore:
- tokens[0] = datastore[val]
- content = Combine(OneOrMore(~Literal("${") + ~Literal("}") +
- Word(printable, exact=1)))
- content.leaveWhitespace()
- var = nestedExpr("${", "}", ignoreExpr=None, content=content)
- var.setParseAction(getVar)
- newdata = var.transformString(data)
- assert(newdata == expanded_data)
Add Comment
Please, Sign In to add comment