Skip to content

Conversation

@frankdu
Copy link

@frankdu frankdu commented Apr 10, 2024

Problem:
Currently, the "data" tokens don't have the information about if the "data" is inside the raw/endraw block, or not. This limit the Extension object's ability to treat the "data" tokens differently. I'm developing a jinja extension which is limited by this.

Feature Request:

Allow Lexer to optionally choose to emit the raw_begin and raw_end tokens, v.s. ignore them (current behaviors)
Allow Environment to switch the lexer provider, so that you can inject your customized Lexer instances. For example, a customized one when an Extension is added, or when it's in testing.

Fixes

  1. Allow token_begin and token_end in stream to enable Extensions to treat "data" tokens differently
  2. Add the lexer_provider attrib to Environment, so to allow provide custom lexer in different use cases (e.g. testing)

Test Plan:

  1. Run pytest

Checklist:

  • Add tests that demonstrate the correct behavior of the change. Tests should fail without the change.
  • Add or update relevant docs, in the docs folder and in code.
  • Add an entry in CHANGES.rst summarizing the change and linking to the issue.
  • Add .. versionchanged:: entries in any relevant code docs.
  • Run pre-commit hooks and fix any issues.
  • Run pytest and tox, no tests failed.

frankdu added 2 commits April 10, 2024 14:41
…at "data" tokens differently

Add the lexer_provider attrib to Environment to allow provide custom lexer, e.g. for testing.

Test Plan:
- Run `pytest`
Test Plan:
- Run `tox run -e typing`
@frankdu frankdu changed the title Allow to customize some behaviors of Lexer, so that Extension instances get can the raw block begin and end info. Allow to customize some behaviors of Lexer, so that Extension instances can know raw block begin and end info. Apr 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow to customize some behaviors of Lexer, so that Extension instances get can the raw block begin and end info.

2 participants