Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from pathlib import Path
- from typing import NewType
- UnsanitizedText = NewType('UnsanitizedText', str)
- CleanHtml = NewType('CleanHtml', str)
- HtmlTemplate = NewType('HtmlTemplate', str)
- def get_user_input() -> UnsanitizedText:
- # code omitted
- def escape_to_html(raw: UnsanitizedText) -> CleanHtml:
- # perform checks on 'raw', do escaping logic, etc
- return CleanHtml(cleaned_string)
- def load_template(path: Path) -> HtmlTemplate:
- return HtmlTemplate(path.read_text())
- def render_template(template: HtmlTemplate, *kwargs: CleanHtml) -> CleanHtml:
- # code omitted
- t = load_template(Path("foo/bar.html"))
- dirty = get_user_input()
- clean = escape_to_html(dirty)
- print(render_template(t, arg=dirty)) # Does not typecheck
- print(render_template(t, arg=clean)) # Typechecks
Add Comment
Please, Sign In to add comment