Guest User

Untitled

a guest
May 24th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. from pyparsing import *
  2. from string import printable
  3.  
  4. data = "${foo} ${${bar}} whee ${ bar ${baz ${meh} moo}}"
  5. datastore = {
  6. "foo": "fooval",
  7. "bar": "barval",
  8. "barval": "barvalval",
  9. "meh": "MEH",
  10. "baz MEH moo": "heh.",
  11. " bar heh.": "dance!",
  12. }
  13. expanded_data = "fooval barvalval whee dance!"
  14.  
  15. def getVar(tokens):
  16. var = tokens[0]
  17. val = "".join(var.asList())
  18. if val in datastore:
  19. tokens[0] = datastore[val]
  20.  
  21. content = Combine(OneOrMore(~Literal("${") + ~Literal("}") +
  22. Word(printable, exact=1)))
  23. content.leaveWhitespace()
  24. var = nestedExpr("${", "}", ignoreExpr=None, content=content)
  25. var.setParseAction(getVar)
  26.  
  27. newdata = var.transformString(data)
  28. assert(newdata == expanded_data)
Add Comment
Please, Sign In to add comment