├── .github └── FUNDING.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── docs ├── CNAME ├── _config.yml ├── index.md └── pypi.md ├── hypertag ├── pyproject.toml ├── setup.cfg ├── src └── hypertag │ ├── __init__.py │ ├── builtins.py │ ├── core │ ├── README_draft.md │ ├── __init__.py │ ├── ast.py │ ├── dom.py │ ├── errors.py │ ├── grammar.py │ ├── run_html.py │ ├── runtime.py │ ├── structs.py │ ├── tag.py │ └── xml_chars.py │ ├── django │ ├── __init__.py │ ├── backend.py │ └── filters.py │ ├── html.py │ ├── nifty │ ├── __init__.py │ ├── parsing.py │ └── util.py │ ├── std │ ├── __init__.py │ ├── builtins.py │ ├── html.py │ └── registry.py │ └── tests │ ├── __init__.py │ ├── package1 │ ├── __init__.py │ └── sample3.hy │ ├── sample1.py │ ├── sample2.hy │ ├── sample3.hy │ └── sample4.hy ├── tests ├── __init__.py ├── sample_usage.html ├── sample_usage.py ├── sandbox.py ├── sandbox_py2.py └── test_main.py └── tox.ini /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: mwojnars 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.py[cod] 3 | *.kate-swp 4 | *.npy 5 | 6 | # Drafts 7 | *.draft.* 8 | 9 | # C extensions 10 | *.so 11 | 12 | # Packages 13 | *.egg 14 | *.egg-info 15 | dist 16 | build 17 | eggs 18 | parts 19 | bin 20 | var 21 | sdist 22 | develop-eggs 23 | .installed.cfg 24 | lib 25 | lib64 26 | __pycache__ 27 | 28 | # Installer logs 29 | pip-log.txt 30 | 31 | # Unit test / coverage reports 32 | .coverage 33 | .tox 34 | nosetests.xml 35 | .pytest_cache 36 | 37 | # Translations 38 | *.mo 39 | 40 | .project 41 | .pydevproject 42 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## *upcoming* 4 | 5 | - Grammar fix: easier use of dictionaries in assignment blocks, no conflict with embedding syntax. 6 | - ... 7 | 8 | ## [1.2.0] - 2021-09-16 9 | 10 | - Non-standard operator `<>` can be used as an alternative for `!=` 11 | to avoid ambiguity with a verbatim block mark (`!`) inside `if` blocks. 12 | - Shortcut attributes `.CLS` and `#ID` no longer need spaces around, 13 | so `div#main.left.top` is now a correct tag occurrence. 14 | - The *if-else* operator returns "" (empty string) rather than None 15 | when the *else* branch is missing. 16 | - Grammar extended to support *expression blocks* (`$ EXPR`) without an assignment. 17 | Can be used for method calls, like in `$myList.append(3)`. 18 | - Fixed html-escaping of special symbols inside HTML attribute values. 19 | - Built-in tag/function `dedent` accepts now an optional argument `full`. 20 | - Built-in tag/function `inline` renamed to `merge`. 21 | - New built-in tag and function, `inline`, converts all newline characters 22 | to HTML entities ` ` for safe inclusion in indentation-sensitive blocks 23 | like `
` or `