Guest User

Untitled

a guest
Nov 18th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. from pathlib import Path
  2. from typing import NewType
  3.  
  4. UnsanitizedText = NewType('UnsanitizedText', str)
  5. CleanHtml = NewType('CleanHtml', str)
  6. HtmlTemplate = NewType('HtmlTemplate', str)
  7.  
  8. def get_user_input() -> UnsanitizedText:
  9. # code omitted
  10.  
  11. def escape_to_html(raw: UnsanitizedText) -> CleanHtml:
  12. # perform checks on 'raw', do escaping logic, etc
  13. return CleanHtml(cleaned_string)
  14.  
  15. def load_template(path: Path) -> HtmlTemplate:
  16. return HtmlTemplate(path.read_text())
  17.  
  18. def render_template(template: HtmlTemplate, *kwargs: CleanHtml) -> CleanHtml:
  19. # code omitted
  20.  
  21. t = load_template(Path("foo/bar.html"))
  22. dirty = get_user_input()
  23. clean = escape_to_html(dirty)
  24.  
  25. print(render_template(t, arg=dirty)) # Does not typecheck
  26. print(render_template(t, arg=clean)) # Typechecks
Add Comment
Please, Sign In to add comment