505 Commits

Author SHA1 Message Date
Laurenz
ac788f2082 Many more expressions 🥗
Boolean, equality, comparison and assignment expression parsing and evaluation.
2021-01-22 17:16:42 +01:00
Laurenz
0de4f3ed7b Reorder and fix docs ✔ 2021-01-20 21:50:51 +01:00
Laurenz
84ba547c7c If expressions 🔀 2021-01-20 21:33:13 +01:00
Laurenz
dd246e5bc9 Spans for group and block contents 📐 2021-01-17 16:18:36 +01:00
Laurenz
29be90bf95 Assertions with [eq] + better tests 🩺 2021-01-17 13:53:22 +01:00
Laurenz
cc5f14193c Flip test directory structure 🔃
Move full/lang/library to the top-level as that's more ergonomic to use.
2021-01-16 15:39:25 +01:00
Laurenz
51efb0f4d6 Port remaining parser tests 🚚 2021-01-16 15:08:03 +01:00
Laurenz
d763f0f5a6 Split state and scopes, less ref-counting 🔀 2021-01-15 16:53:02 +01:00
Laurenz
0f0416054f Move value tests + smarter number formatting 🔢 2021-01-15 15:43:59 +01:00
Laurenz
469d78d610 Move let-binding tests to integration 🚚 2021-01-14 17:41:13 +01:00
Laurenz
73b25bdad0 Move bracket function tests to integration 🚚 2021-01-14 17:30:22 +01:00
Laurenz
cfcb36b159 Move test files into category subfolders 🚚 2021-01-14 16:47:29 +01:00
Laurenz
272a4c2289 Unbounded pages 🌌 2021-01-13 23:19:44 +01:00
Laurenz
1b53e27f27 Some minor improvements ♻ 2021-01-13 21:33:22 +01:00
Laurenz
c36a136e6f Simpler diagnostic localization in tests ♻ 2021-01-13 17:22:33 +01:00
Laurenz
2aa4c5bfc6 Move array and dictionary tests to integration 🚚 2021-01-13 17:03:10 +01:00
Laurenz
6efa6c7891 Move basic markup tests to integration 🚚 2021-01-13 16:50:43 +01:00
Laurenz
1cd687b681 Move escaping tests to integration and extend them 🚚 2021-01-13 16:37:18 +01:00
Laurenz
274e008e2c Move heading tests to integration 🚚 2021-01-13 16:09:08 +01:00
Laurenz
1d01b93f67 Move comment tests to integration 🚚 2021-01-13 15:44:41 +01:00
Laurenz
60154474ba Enable multiple tests per file 🧱 2021-01-13 14:07:38 +01:00
Laurenz
539735e668 Basic let bindings 🎞 2021-01-13 11:54:50 +01:00
Laurenz
d2ba1b705e Group and block expressions, unary plus 🧩 2021-01-12 18:55:12 +01:00
Laurenz
105cda0e69 Braced content -> Bracketed templates ✏ 2021-01-10 21:38:58 +01:00
Laurenz
3c7d249ae4 Rename token modes ✏ 2021-01-10 20:48:32 +01:00
Laurenz
515905d78d Add angle value 📐 2021-01-10 18:22:06 +01:00
Laurenz
9eac62c31a Add lots of new tokens 🍪 2021-01-10 17:52:37 +01:00
Laurenz
3b2a28ca8e Add angle data type 📐 2021-01-09 21:35:36 +01:00
Laurenz
8275b186ba Remove star-slash token 2021-01-07 16:13:18 +01:00
Laurenz
59d811aeba Inline literal enum into expression enum 🔀 2021-01-06 21:06:48 +01:00
Laurenz
7b4d4d6002 Pretty printing 🦋
- Syntax tree and value pretty printing
- Better value evaluation (top-level strings and content are evaluated plainly, everything else is pretty printed)
2021-01-06 01:32:59 +01:00
Laurenz
2e77b1c836 Better value representations, type function 🌐 2021-01-04 21:29:15 +01:00
Laurenz
77c06ebc24 None literal 🕳 2021-01-04 17:23:52 +01:00
Laurenz
32af3095f8 Fix performance regression 2021-01-03 00:41:12 +01:00
Laurenz
aae67bd572 Move and rename many things 🚛 2021-01-03 00:12:09 +01:00
Laurenz
1c40dc42e7 Dynamic values, Types, Arrays, and Dictionaries 🚀
- Identifiers are now evaluated as variables instead of being plain values
- Constants like `left` or `bold` are stored as dynamic values containing the respective rust types
- We now distinguish between arrays and dictionaries to make things more intuitive (at the cost of a bit more complex parsing)
- Spans were removed from collections (arrays, dictionaries), function arguments still have spans for the top-level values to enable good diagnostics
2021-01-02 19:37:10 +01:00
Laurenz
8cad78481c A few small improvements ♻ 2021-01-01 17:54:31 +01:00
Laurenz
2b6ccd8248 Better parser testing 2021-01-01 16:43:58 +01:00
Laurenz
4069f0744d Parsing improvements 🧽
- Simplified scanner code
- Peek eagerly
- Skip whitespace and comments automatically in header mode
- Parse simple block expressions
- Move literal definitions into expression module
- Raw resolving tests
2020-12-31 17:48:56 +01:00
Laurenz
ba3d43f7b2 Refresh function call and dictionary syntax
- No colon between function name and arguments, just whitespace
- "Named" arguments (previously "keyword" arguments) use colon instead of equals sign
2020-12-27 20:45:20 +01:00
Laurenz
750d220bb0 Add color enum 🎨 2020-12-27 19:23:26 +01:00
Laurenz
c44ebf876f Add error cases for [font] 🧯 2020-12-21 00:47:47 +01:00
Laurenz
e59de77f96 Allow only a few predefined font classes in [font] 🚧 2020-12-21 00:40:09 +01:00
Laurenz
2b660968aa Restructure value conversions 🧱 2020-12-21 00:36:22 +01:00
Laurenz
6f111f9410 Test [font] 🧣 2020-12-17 15:43:30 +01:00
Laurenz
7e91c8dc87 Add func-prefix to library function tests ✏ 2020-12-17 13:31:34 +01:00
Laurenz
0f6c67219e Test [h] and [v] 🐈 2020-12-17 13:22:17 +01:00
Laurenz
b02ba84264 Test [rgb] 🎨 2020-12-17 12:17:34 +01:00
Laurenz
0adbfe894a Test [pagebreak] 🗞 2020-12-17 11:31:07 +01:00
Laurenz
81e80ecfba Test [page] function 📕
- Make page break behaviour more consistent
- Allow skipping reference image testing for single tests with `// compare-ref: false` (useful for tests which only check error messages)
2020-12-17 00:20:27 +01:00