René Kijewski
a9e0132b28
book: add toc
2024-11-14 11:12:02 +01:00
René Kijewski
b76d1000b6
book: pin to mdbook v0.4.40 for now
2024-11-14 11:12:02 +01:00
René Kijewski
d3b9b6ea56
Raise MSRV to 1.80
2024-11-13 23:33:06 +01:00
René Kijewski
9b733d8887
parser: use built-in whitespace trimming
...
Our `is_ws()` implementation was the same since the earliest days of askama:
<4805acc8eb (diff-a9b78e3979c46af7f12ceef379a5a7a657fbe8d77900aa6b4e88b7519b415ca3R31-R34)
>.
It considers spaces ` `, horizontal tabs `\t`, carriage return `\r`, and
end of line `\n` characters as white spaces characters. Rust's
`u8::is_ascii_whitespace()` adds formfeed `\f` to the list.
This PR replaces `is_ws()` with the built-in
`char::is_ascii_whitespace()`. The parser is a tiny bit faster, and we
are a bit more standard conforming:
<details>
<summary>benchmark results</summary>
```text
Running benches/from_str.rs (/home/kijewski/git/rust/rinja/target/release/deps/from_str-fae58673a015eed7)
librustdoc/all time: [322.12 µs 323.71 µs 325.71 µs]
thrpt: [43.355 MiB/s 43.623 MiB/s 43.837 MiB/s]
change:
time: [-6.3192% -5.9056% -5.4469%] (p = 0.00 < 0.05)
thrpt: [+5.7607% +6.2763% +6.7454%]
Performance has improved.
librustdoc/item_info time: [5.6035 µs 5.6117 µs 5.6220 µs]
thrpt: [27.989 MiB/s 28.041 MiB/s 28.082 MiB/s]
change:
time: [-5.7565% -5.2861% -4.7532%] (p = 0.00 < 0.05)
thrpt: [+4.9904% +5.5811% +6.1081%]
Performance has improved.
librustdoc/item_union time: [32.750 µs 32.863 µs 32.984 µs]
thrpt: [29.926 MiB/s 30.036 MiB/s 30.139 MiB/s]
change:
time: [-8.0835% -7.2746% -6.3867%] (p = 0.00 < 0.05)
thrpt: [+6.8224% +7.8453% +8.7944%]
Performance has improved.
librustdoc/page time: [149.16 µs 149.45 µs 149.84 µs]
thrpt: [41.327 MiB/s 41.433 MiB/s 41.515 MiB/s]
change:
time: [-7.1007% -6.8131% -6.5353%] (p = 0.00 < 0.05)
thrpt: [+6.9922% +7.3113% +7.6435%]
Performance has improved.
librustdoc/print_item time: [18.142 µs 18.197 µs 18.253 µs]
thrpt: [51.726 MiB/s 51.883 MiB/s 52.040 MiB/s]
change:
time: [-5.4557% -5.0690% -4.6229%] (p = 0.00 < 0.05)
thrpt: [+4.8470% +5.3396% +5.7706%]
Performance has improved.
librustdoc/short_item_info
time: [17.533 µs 17.552 µs 17.576 µs]
thrpt: [51.547 MiB/s 51.618 MiB/s 51.674 MiB/s]
change:
time: [-6.0722% -5.6344% -5.2641%] (p = 0.00 < 0.05)
thrpt: [+5.5566% +5.9708% +6.4647%]
Performance has improved.
librustdoc/sidebar time: [35.947 µs 36.056 µs 36.176 µs]
thrpt: [34.113 MiB/s 34.226 MiB/s 34.330 MiB/s]
change:
time: [-7.6516% -7.0295% -6.4676%] (p = 0.00 < 0.05)
thrpt: [+6.9148% +7.5611% +8.2856%]
Performance has improved.
librustdoc/source time: [13.274 µs 13.318 µs 13.364 µs]
thrpt: [55.161 MiB/s 55.353 MiB/s 55.537 MiB/s]
change:
time: [-6.2263% -5.9307% -5.6552%] (p = 0.00 < 0.05)
thrpt: [+5.9941% +6.3047% +6.6397%]
Performance has improved.
librustdoc/type_layout_size
time: [8.1719 µs 8.2034 µs 8.2364 µs]
thrpt: [32.884 MiB/s 33.016 MiB/s 33.143 MiB/s]
change:
time: [-5.6332% -5.3531% -5.0853%] (p = 0.00 < 0.05)
thrpt: [+5.3578% +5.6559% +5.9695%]
Performance has improved.
librustdoc/type_layout time: [29.034 µs 29.101 µs 29.175 µs]
thrpt: [92.278 MiB/s 92.513 MiB/s 92.726 MiB/s]
change:
time: [-8.3192% -7.9370% -7.4312%] (p = 0.00 < 0.05)
thrpt: [+8.0278% +8.6212% +9.0741%]
Performance has improved.
```
</details>
I doubt that anyone is relying on the fact that the invisible character
`\f` won't be stripped by whitespace control. If you absolutely need
this character to be preserved, then you can always use `{{ '\u{b}' }}`.
Right now, `trim_ascii_start()` is manually implemented, because it is
only stable since rust 1.80.
2024-11-13 23:28:32 +01:00
Guillaume Gomez
e22ab4e0eb
Merge pull request #239 from Kijewski/pr-garbled-closing-blocks
...
parser: add better error messages for broken closing block tags
2024-11-14 06:11:33 +08:00
René Kijewski
c5ed6af5a3
parser: add better error messages for broken closing block tags
2024-11-13 20:14:42 +01:00
René Kijewski
e7f5de2697
Add garbled closing block test
2024-11-13 20:03:08 +01:00
Guillaume Gomez
ae4ab28fd4
Merge pull request #236 from Kijewski/pr-concat
...
Add concat operator `~`
2024-11-13 05:40:23 +08:00
René Kijewski
7f9c91de0b
Add concat operator ~
...
The string concatenation operator `~` is present in jinja and tera:
<https://jinja.palletsprojects.com/en/stable/templates/#other-operators >.
While it's not the most important operator, it can come in handy e.g.
with filters: `{{ a|upper }}{{ b|upper }}` → `{{ (a ~ b)|upper }}`.
2024-11-12 17:07:17 +01:00
René Kijewski
473a696638
Merge pull request #235 from Kijewski/pr-filter-as_str
...
filters: don't collect into intermediate `String` if we can help it
2024-11-11 22:43:04 +01:00
René Kijewski
b8a2614b27
filters: don't collect into intermediate String
if we can help it
2024-11-11 22:27:52 +01:00
René Kijewski
013ad4b11e
Merge pull request #234 from epage/winnow-04-cleanup
...
refactor(parser): Move off of deprecated re-export
2024-11-11 19:04:44 +01:00
René Kijewski
01707b1366
Merge pull request #233 from GuillaumeGomez/differences
...
Add link to blog post for differences between rinja and askama
2024-11-11 16:19:35 +01:00
Ed Page
8cc7256c3f
refactor(parser): Move off of deprecated re-export
...
The `sequence` mod is deprdcated.
2024-11-11 08:48:32 -06:00
Guillaume Gomez
c92285e24f
Add link to blog post for differences between rinja and askama
2024-11-11 15:22:21 +01:00
Guillaume Gomez
d00e638604
Merge pull request #231 from Kijewski/pr-no-unions
...
derive: reject `union`s as they require `unsafe` code
2024-11-11 18:26:03 +08:00
René Kijewski
3e07719ad9
derive: reject unions
as they require unsafe
code
2024-11-11 00:55:47 +01:00
René Kijewski
fe551596f3
union
s generate invalid code
2024-11-11 00:42:08 +01:00
Guillaume Gomez
428984af93
Merge pull request #230 from Kijewski/pr-fuzzed_excessive_syntax_lengths
...
parser: reject excessively long syntax delimiters
2024-11-11 05:37:54 +08:00
René Kijewski
fdee5cfaf6
parser: simplify fuzzed_excessive_syntax_lengths
2024-11-10 22:18:02 +01:00
René Kijewski
9c53dcf7ff
parser: reject excessively long syntax delimiters
2024-11-10 22:18:02 +01:00
René Kijewski
f8bb54bd96
Add failing test for excessively long syntax delimiters
2024-11-10 22:18:02 +01:00
Guillaume Gomez
c1be649d90
Merge pull request #229 from Kijewski/pr-cluster-fuzz
...
ci: add cluster-fuzz integration
2024-11-10 18:24:44 +08:00
René Kijewski
3abdf13f35
ci: add cluster-fuzz integration
2024-11-10 04:58:33 +01:00
René Kijewski
9718acaf48
Merge pull request #228 from GuillaumeGomez/move-templates-inside-test
...
Move types into their tests
2024-11-10 00:57:39 +01:00
Guillaume Gomez
6e13c81a5f
Move types into their tests
2024-11-09 22:22:42 +01:00
Guillaume Gomez
e98cfa9ce8
Merge pull request #207 from GuillaumeGomez/macro-default-value
...
Add support for default value in macros
2024-11-09 19:18:49 +08:00
René Kijewski
19db2765b7
parser: more strict macro argument parsing
2024-11-09 08:37:54 +01:00
René Kijewski
cd898dbd74
derive: no need to use a HashSet
2024-11-09 07:44:30 +01:00
René Kijewski
ba78e25973
derive: kill the Cows
2024-11-09 07:37:47 +01:00
René Kijewski
e0a611da01
derive: add helper function macro_call_ensure_arg_count
2024-11-09 07:37:18 +01:00
Ed Page
1ac0c35144
refactor(parser): Clean up prep for 0.5 ( #226 )
...
* refactor(parser): Rely on Parser trait rather than FnMut
* refactor(parser): Consistently use ParseResult
* refactor(parser): Accept Parser rather than FnMut
* refactor(parser): Chain the input through
* refactor(parser): Accept stateful Parser rather than stateless FnMut
* refactor(parser): Remove redundant closures
2024-11-07 20:54:48 +01:00
René Kijewski
80811b5094
Merge pull request #219 from Kijewski/pr-ref-HtmlSafe
...
Implement `HtmlSafe` for all reference wrappers
2024-11-03 13:19:49 +01:00
René Kijewski
84b76ac966
Add HtmlSafe
reference wrapper tests
2024-11-03 00:37:06 +01:00
René Kijewski
216836e08f
Implement HtmlSafe
for all reference wrappers
2024-11-03 00:21:55 +01:00
René Kijewski
34f18e6293
Merge pull request #221 from Kijewski/pr-more-AsIndent
...
Implement `AsIndent` for `NonZeroUsize` and `Wrapping<usize>`
2024-11-02 12:57:51 +01:00
René Kijewski
22b56ea163
Merge pull request #220 from Kijewski/pr-primitize_nz
...
Implement `PrimitiveType` for non-zero integers
2024-11-02 12:57:39 +01:00
René Kijewski
93a998298e
Merge pull request #218 from Kijewski/pr-faster-UrlencodeWriter
...
Omit `fmt::Formatter` machinery in URL encoding
2024-11-02 12:57:26 +01:00
René Kijewski
a4bd10a6f0
Merge pull request #217 from Kijewski/pr-FastWritable-prop-err
...
Let `FastWritable` propagate custom errors
2024-11-02 12:57:13 +01:00
René Kijewski
a3f264e4d8
Implement AsIndent
for NonZeroUsize
and Wrapping<usize>
2024-11-02 03:16:03 +01:00
René Kijewski
a4d6dbcee2
Implement PrimitiveType
for non-zero integers
2024-11-02 02:57:19 +01:00
René Kijewski
975c808656
Omit fmt::Formatter
machinery in URL encoding
2024-11-02 02:19:00 +01:00
René Kijewski
fa29e2ab61
Let FastWritable
propagate custom errors
2024-11-02 02:12:41 +01:00
Guillaume Gomez
a9bf11bb7d
Merge pull request #216 from GuillaumeGomez/improve-filesizeformat
...
Relax `filesizeformat` filter requirements
2024-11-02 06:06:27 +08:00
René Kijewski
2062ce4a34
filters: optimize FilesizeFormatFilter
2024-11-01 22:50:59 +01:00
Guillaume Gomez
09466d8847
Make PrimitiveType
trait public
2024-11-01 00:51:03 +01:00
Guillaume Gomez
c87be3ec36
Relax rules for filesizeformat
filter
...
Remove `humansize` dependency
2024-11-01 00:51:03 +01:00
Guillaume Gomez
a8e92225cf
Merge pull request #213 from epage/winnow-04-cleanup
...
refactor(parser): Clean up prep for 0.5
2024-10-29 00:08:03 +08:00
Ed Page
bafa30f2c4
refactor(parser): Switch 'impl FnMut' to 'impl Parser'
...
We did most of this in 88c702e but missed some spots
2024-10-28 10:10:36 -05:00
Ed Page
b08fbebf8f
refactor(parser): Rely on Parser trait rather than FnMut
...
We did most of this in 25067bd but missed some spots.
2024-10-28 10:10:36 -05:00