Commit Graph
316 Commits
Author SHA1 Message Date
Peter Ullrich a0e1604fe6 In EEX Compiler, flatten expr list only once, not on every iteration (#15331) 2026-05-01 18:13:52 +02:00
Łukasz Samson 81dc36568b Enrich EEx.SyntaxError with error metadata (#15297)
Fixes #15296
2026-04-22 16:58:24 +02:00
Michał Łępicki 6d5f43318c Allow specifying SEED when running tests (#15111)
this is helpful when reproducing flaky test failures
2026-02-25 09:12:15 +01:00
Michał Łępicki 31ec8cc703 Fix dialyzer warnings on EEx.eval_string (#14971) 2025-11-29 12:10:30 +01:00
Daniil Kulchenko 53fb96c808 Fix EEx.compile_string passing invalid options to tokenize (#14835)
EEx.compile_string/2 was passing all options to tokenize/2, but
tokenize/2 only accepts tokenize_opt (:file, :line, :column,
:indentation, :trim). This caused dialyzer to correctly flag calls
with :engine or :parser_options as type errors in Elixir 1.19+.

The fix filters options before passing to tokenize/2, keeping only
the valid tokenize_opt keys, while still passing the full options
list to EEx.Compiler.compile/3 which needs :engine, :parser_options,
and custom engine options.

Fixes #14834
2025-10-16 23:48:33 +02:00
José Valim 6fccf34e6b Engines may return any AST which may return any value, closes #14770 2025-09-15 16:18:25 +02:00
José Valim 2474303f93 Do not use private APIs in EEx 2025-09-14 10:27:03 +02:00
José Valim cf8689e498 Remove specs which are pass through and from private modules 2025-07-01 10:44:03 +02:00
Łukasz Samson e3f7759fde Replace keyword with concrete keyword lists in specs (#14611) 2025-06-30 17:24:28 +02:00
Jonatan Männchen f3e8ceb5aa Implement Test Coverage Reporting (#14343) 2025-04-07 22:37:01 +02:00
José Valim 468228a236 Add :indentation to Code.string_to_quoted/2 (#14406) 2025-04-07 16:02:01 +02:00
Jonatan Männchen 980500551c Inline Licence Info & Copyright for non-test files (#14256) 2025-02-07 21:11:09 +01:00
Jonatan Männchen f7bbe81ea7 Inline licence info & copyright for test files (#14257) 2025-02-07 20:54:14 +01:00
José Valim a39f469a76 Do not warn for assignment with blocks in EEx 2024-06-15 11:04:53 +02:00
José Valim a64f28c8dd Only emit deprecation warning for EEx if handle_text/3 is missing 2024-05-28 21:12:09 +02:00
José Valim 25e6ce4271 Add pending deprecations 2024-05-24 13:11:29 +02:00
José Valim d7ea2fa2e4 Handle cursor completion inside fn/rescue/catch/else/after 2024-05-14 17:04:57 +02:00
José Valim 43e029cbb4 Do not reset column state in tests 2023-12-21 16:17:05 +01:00
José Valim 14f3a1e372 Deprecate single quotes as charlists 2023-10-29 13:30:03 +01:00
José Valim c7bd0fe7e7 Do not emit duplicate warnings from tokenizer, closes #12961 2023-09-25 12:55:23 +02:00
José Valim c8c4ec5155 Properly print warnings from tokenizer in EEx, closes #12926 2023-09-13 09:17:36 +02:00
José Valim c365eac5dc Return relative file in EEx, closes #12927 2023-09-13 09:02:42 +02:00
Benjamin Milde afb2c8c1f0 Document default EEx Engine (#12302) 2022-12-16 10:08:38 +01:00
José Valim cb90301c4c Store and consider indentation in code snippets 2022-12-05 11:17:09 +01:00
Felipe Renan 524d917222 Fix line number padding for code snippet on EEx errors (#12283) 2022-12-04 17:07:52 +01:00
José Valim 5cf8811033 Align pointers to beginning of expression except for blocks 2022-12-04 16:50:27 +01:00
Felipe Renan bb08692c96 Add snippet when <%-- is not closed (#12218) 2022-10-28 15:32:29 +02:00
José Valim 20d603653e mix format 2022-10-27 23:29:46 +02:00
José Valim ef5916bb67 Refactor and normalize format 2022-10-27 23:29:09 +02:00
Felipe Renan 17d34d06fe Include snippets in EEx errors (#12170) 2022-10-27 23:17:39 +02:00
sabiwara 8908334041 Inspect charlists as ~c sigils (#12074) 2022-08-13 09:08:17 +02:00
sabiwara 29bf449f3f Evaluate formating charlists as ~c sigils (#12064) 2022-08-10 06:47:00 +02:00
José Valim 1b60acbe9e Allow LINE to be set for tests 2022-07-18 09:58:14 +02:00
José Valim 9b312ac046 Mention module docs for EEx options 2022-05-09 10:28:32 +02:00
Kurtis Rainbolt-GreeneandAndrea Leopardi 5d4e357418 Add docs for the "options" argument in EEx.eval_string/3 (#11805)
Co-authored-by: Andrea Leopardi <an.leopardi@gmail.com>
2022-05-09 09:56:49 +02:00
Wojtek Mach 55c8776071 Fix EEx.tokenize/2 docs (#11694) 2022-03-10 13:23:54 +01:00
Aaron Tinio 5f7176450d Fix EEx.tokenize/2 CaseClauseError (#11677) 2022-03-02 07:57:55 +01:00
Aaron Tinio f5b8ce197d Update EEx.token() type (#11678) 2022-03-02 07:57:24 +01:00
Felipe Renan 2f21080243 Expose EEx comments as tokens in EEx.tokenize/2 (#11674) 2022-03-01 21:55:11 +01:00
Michał Łępicki 187d09e672 Fix spec for EEx.tokenize/2 and EEx.Compiler.compile/2 (#11670) 2022-02-28 09:59:15 +01:00
Wojtek MachandJosé Valim 0d621f6309 Add doc since to EEx.tokenize/2 (#11669)
Co-authored-by: José Valim <jose.valim@dashbit.co>
2022-02-27 10:35:09 +01:00
José Valim 55f6a78fb5 Use main EEx tokenize API 2022-02-27 10:23:21 +01:00
Felipe Renan f9d0e702c6 Add EEx.tokenize/2 (#11667) 2022-02-27 10:01:42 +01:00
José Valim f08646b85c Remove TODO 2022-02-25 20:34:24 +01:00
José Valim 9097a16bee Move some EEx syntax errors to tokenizer 2022-02-25 20:33:14 +01:00
Felipe Renan bb4440336f Refactor EEx tokenizer (#11666)
This commit moves the line and column to the last argument to be handled
as a metadata as you can see in the example below:

```elixir
    assert T.tokenize('foo', 1, 1, @opts) ==
             {:ok, [{:text, 'foo', %{line: 1, column: 1}}, {:eof, %{line: 1, column: 4}}]}
```
2022-02-25 20:24:25 +01:00
José Valim 9127a91cfb Introduce multi-line comments to EEx via <%!-- --%> (#11505) 2021-12-19 20:48:00 +01:00
José Valim 8fab08cb56 Revert introduction of ~E sigil to avoid conflict with other projects 2021-11-23 14:29:29 +01:00
Wojtek Mach 06ee72f5b6 Update ~E docs (#11394) 2021-11-16 14:09:44 +01:00
José Valim 80915e9d5f Add ~E sigil to EEx 2021-11-16 10:58:35 +01:00