Commit Graph

503 Commits

Author SHA1 Message Date
Laurenz 1b53e27f27 Some minor improvements ♻ 2021-01-13 21:33:22 +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 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 b02ba84264 Test [rgb] 🎨 2020-12-17 12:17:34 +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
Laurenz 2336aeb4c3 Tweak parser error messages 🔮 2020-12-16 16:24:06 +01:00
Laurenz 6bbedeaa2c Better tokenization testing 🌋
- Better tokenization test coverage.
- Suffix testing: Each test case is tested with many different suffixes to ensure correct token ends.
- Improves expression parsing (fixes #3).
2020-12-16 15:42:02 +01:00
Laurenz 0cfce1de7e Switch to miniz_oxide 🔼 2020-12-11 12:37:20 +01:00
Laurenz 1cbd5f3051 Refine test infrastructure
- Tests diagnostics
- More and better separated image tests
2020-12-10 22:45:45 +01:00
Laurenz fdc1b378a3 Compress images in PDFs ⚙ 2020-11-30 22:07:08 +01:00
Laurenz 21857064db Export alpha channel into PDF 🧊 2020-11-28 00:04:40 +01:00
Laurenz 982e7671a6 Embed each image only once into the PDF 🥔 2020-11-27 23:17:25 +01:00
Laurenz 98f77e4d80 Fix headings that are separated by only one newline 🚧
Previously the following lead to only one line with both heading and body:
```
# Heading
Body
```
2020-11-27 23:13:59 +01:00
Laurenz 475ca7a62e Basic environment and resource loader 🏞 2020-11-27 22:35:42 +01:00
Laurenz bc997b7c33 Export images in PDF 🖼 2020-11-27 20:01:54 +01:00
Laurenz e30d896c7b Switch to tiny-skia 🎨 2020-11-25 18:46:47 +01:00
Laurenz 11e44516fa Merge some modules 🥞 2020-11-25 16:56:29 +01:00
Laurenz 761931405c Use newly stabilized intra doc links ↩ 2020-11-24 16:12:41 +01:00
Laurenz f105663037 Basic image support 🖼
- [image] function
- Image rendering in tests
- Supports JPEG and PNG
- No PDF export so far
2020-11-20 16:36:22 +01:00
Laurenz 2e6e6244cc Switch to pdf-writer ⬆️ 2020-11-19 23:46:51 +01:00
Laurenz 3a7bfd6bed Remove unused function `Spanned::value` 🗑 2020-11-16 11:08:36 +01:00
Laurenz 7ec7c49144 Don't panic 🌶 2020-11-05 13:07:13 +01:00
Laurenz e26b431bee Produce output file in current directory instead of source directory 📂 2020-11-05 12:30:46 +01:00
Laurenz ee38c6aa9a Allow configuration of directions in page and box ↗ 2020-10-19 13:05:54 +02:00
Laurenz 91e5120693 BoxAlign and Flow aliases ✏ 2020-10-13 13:51:58 +02:00
Laurenz 8680fcd490 Rename geometric eval and apply to resolve ✏ 2020-10-13 13:24:33 +02:00
Laurenz 1736bfc194 Rename typstc -> typst ✏ 2020-10-13 11:47:29 +02:00
Laurenz f29207d999 Strongly typed groups 👔 2020-10-12 22:06:28 +02:00
Laurenz dd4a4545a6 Move main back into src/ 📨 2020-10-12 21:26:58 +02:00
Laurenz 1a70cb6a33 Naming and grammar ✔ 2020-10-12 18:01:22 +02:00
Laurenz 5243878d81 Less vecs in layouting 2020-10-12 17:29:01 +02:00
Laurenz 38157b0e0c Synchronous layout 🪀 2020-10-12 17:10:01 +02:00
Laurenz e94627721d Adapt to fontdock 🔼 2020-10-12 16:59:21 +02:00
Laurenz a2a68106c0 Evaluation benchmark 🔋 2020-10-11 23:18:00 +02:00
Laurenz 1b3eb42003 Refactor paragraph layout 📰 2020-10-11 22:41:21 +02:00
Laurenz 607f4395f9 Refactor stack layout again 🧣 2020-10-11 22:38:34 +02:00
Laurenz d3bc4ec073 Refactor layouting base 🪁 2020-10-11 22:38:30 +02:00
Laurenz f04ad0ffa5 Rename LayoutItem to Layouted ✏ 2020-10-11 13:08:27 +02:00
Laurenz c216a4fc26 Flatten ast module back into syntax module 🌪 2020-10-10 22:41:56 +02:00
Laurenz 51bf3268dd Refactor text state 🆎 2020-10-10 22:35:24 +02:00
Laurenz 92c01da360 Switch back to custom geometry types, unified with layout primitives 🏞 2020-10-10 22:19:36 +02:00
Laurenz 42500d5ed8 Refactor stack ♻ 2020-10-10 12:40:11 +02:00
Laurenz 13230db68c Fix some clippy warnings ✔ 2020-10-07 19:28:34 +02:00
Laurenz d2e220245d Move deco, pass and feedback into diagnostics module ↩ 2020-10-07 18:24:47 +02:00
Laurenz 537545e7f8 Evaluation and node-based layouting 🚀 2020-10-07 17:07:44 +02:00
Laurenz ca1256c924 Remove obsolete extra variable in stack layouter 2020-10-06 20:40:37 +02:00
Laurenz 7dd78af459 Rename ast/tree -> ast/node ✏ 2020-10-06 20:27:17 +02:00
Laurenz 4252f959f7 Typesafe conversions in stack & line layouters 🍮 2020-10-06 18:27:00 +02:00
Laurenz 985fe28166 Fix bug in line layouter ✔ 2020-10-06 14:44:58 +02:00
Laurenz ef410f6877 Move multi-dir support in stack layouter 🍁 2020-10-06 14:20:28 +02:00
Laurenz c6a6870978 Rename secondary/primary to main/cross ✏ 2020-10-06 13:13:18 +02:00
Laurenz 5a7a32a9ba Streamline generic layouting primitives 🛫 2020-10-05 16:44:35 +02:00
Laurenz 93eaafb236 Tidy up align function 🧺 2020-10-05 16:06:25 +02:00
Laurenz fa3e2920c0 Remove @ syntax in diagnostics macros 🗑 2020-10-05 15:45:45 +02:00
Laurenz 2df8b964d0 Simplify shaping 🌱 2020-10-05 15:35:55 +02:00
Laurenz d1c07260c0 Move align out of BoxLayout 🍫 2020-10-05 13:39:33 +02:00
Laurenz 335fa2d118 Small improvements 🍪 2020-10-04 23:31:35 +02:00
Laurenz 605ab104c5 Better argument parsing 🥙 2020-10-04 22:36:20 +02:00
Laurenz ef8aa763fa Shorten some names ↔ 2020-10-04 20:22:11 +02:00
Laurenz a41d7ab47d Expression evaluation with Eval trait 🧮 2020-10-04 20:07:01 +02:00
Laurenz c1dd872b34 Remove unncessary wrappers and typedefs 🛑 2020-10-04 19:57:39 +02:00
Laurenz 105f70867d Add none value 🧫 2020-10-04 19:26:27 +02:00
Laurenz f4460f8abd Style nits 🎈 2020-10-04 19:21:35 +02:00
Laurenz 0f7c70fd93 Separate state and constraints 🧶 2020-10-04 19:06:20 +02:00
Laurenz 6672f8f7df Remove Typesetter in favor of typeset function 🎯 2020-10-04 18:18:55 +02:00
Laurenz 262a8fa36a Refactor and move shaping out of the layout module 2020-10-04 18:01:56 +02:00
Laurenz 54e0da59e3 Small documentation fixes 🧾 2020-10-03 18:15:09 +02:00
Laurenz 91d14d2a22 Evaluate expressions 🧮 2020-10-03 17:56:56 +02:00
Laurenz 95bae5725c Int, Float, Relative and Linear values 🍉 2020-10-03 15:07:57 +02:00
Laurenz 0fc25d732d Port to kurbo 🎋 2020-10-03 13:23:59 +02:00
Laurenz 8dbc5b60cc Update font docs 📖 2020-10-03 11:32:24 +02:00
Laurenz 75e6dbfbe6 Rename bold/italic to strong/emph ✏ 2020-10-03 11:18:25 +02:00
Laurenz 730715c064 Rename text layouting to shaping ✏ 2020-10-03 11:09:32 +02:00
Laurenz dc8d5d2f1e Small improvements 🧺 2020-10-02 20:22:08 +02:00
Laurenz 904bc392ab Remove spans from token iterator 🧽 2020-10-02 19:17:47 +02:00
Laurenz 343982c56f Optimize parser by remembering peeked token 2020-10-02 16:52:01 +02:00
Laurenz 3533268b1f Refactor parser 🏞 2020-10-02 15:43:29 +02:00
Laurenz f8770d2b2a Generalize layouting primitives 🛤 2020-10-01 15:35:09 +02:00
Laurenz e676ab53dd Rename compute to eval ✏ 2020-10-01 15:13:04 +02:00
Laurenz 7c12f0c07f Flatten compute module 2020-10-01 15:10:35 +02:00
Laurenz 7fcad452b8 Reorganize ast types 🏕 2020-10-01 15:03:37 +02:00
Laurenz aafd3c95ca Rename table to dict ✏ 2020-10-01 13:15:10 +02:00
Laurenz 885bfec5d7 Make syntax not depend on parse 📩
This would make it possible to split them into two separate crates.
2020-10-01 11:32:48 +02:00
Laurenz 16f0bd430e Rename CharParser to Scanner ✏ 2020-10-01 11:08:53 +02:00
Laurenz c0998b4802 Simplify tokenizer a bit 🔄 2020-10-01 11:03:42 +02:00
Laurenz 4b9bc66028 Implement low-level char parser 🥜 2020-10-01 01:38:18 +02:00
Laurenz 01405902ba Restructure parser files 🍔 2020-09-30 19:13:55 +02:00
Laurenz 0ddab1c00d Flatten unescape_string a bit 🥞 2020-09-30 19:07:45 +02:00
Laurenz 4077a7c11e Refactor raw blocks 💱 2020-09-30 18:59:33 +02:00
Laurenz 7cc279f7ae Replace line/column with byte positions 🔢 2020-09-30 17:25:09 +02:00
Laurenz 3c3730425f SpanWith trait ↔ 2020-09-30 14:38:46 +02:00
Laurenz 7143e10afc Streamline font handling a bit 📜 2020-09-30 13:18:42 +02:00
Laurenz 3e791e3337 Move decoration into mod.rs 🔙 2020-09-30 12:49:30 +02:00
Laurenz bc1b4216a8 Reorganize syntax types into two modules 📦 2020-09-30 12:45:33 +02:00
Laurenz dcf1d09d39 Fix for updated fontdock ✔ 2020-09-27 14:26:50 +02:00
Laurenz 7f8f225cb3 Split up parser into multiple files 🧱
Splits up into:
- escaping: resolving of escape sequences
- parser: the parsing code
- tests: all integrated parsing tests

Also moves Ident from the root syntax module into the tree module.
2020-09-03 19:16:19 +02:00
Laurenz 7f575dc098 Rename `skip_white` to `skip_ws` ✒ 2020-09-02 16:54:22 +02:00
Laurenz b2f3730013 Deduplicate and flexibilize code token & node building 🧺 2020-09-01 14:57:25 +02:00
Laurenz 56acc9982c Formatting 🌿 2020-09-01 13:13:54 +02:00
Martin Haug d986bc4b0a Add section headings 👨‍🦲
Co-authored-by: Laurenz Mädje <laurmaedje@gmail.com>
2020-09-01 13:10:48 +02:00
Martin Haug 1942a25793 Move Nbsp logic to tokenizer 🚛 2020-08-31 14:47:52 +02:00
Martin Haug 08433ab79f Capability to escape the tilde symbol 💨 2020-08-31 12:20:45 +02:00
Martin Haug d0e252d116 Add non-breaking space 🔒 2020-08-31 12:11:34 +02:00
Laurenz 181f756a9e Format everything with rustfmt! 💚 2020-08-30 22:18:55 +02:00
Laurenz 0d44cf5321 Some alignment ⏭ 2020-08-30 22:15:36 +02:00
Laurenz 18c515cde5 Make some code easier for rustfmt 🍦 2020-08-30 22:09:33 +02:00
Laurenz fe51ad2e7c Fix different-fonts-in-text bug ✔ 2020-08-30 15:32:52 +02:00
Laurenz 9861a9583e Slight simplifications 🍃 2020-08-30 15:16:55 +02:00
Martin Haug c043692c96 Also provide escapes for strings 🗒 2020-08-30 13:39:21 +02:00
Martin Haug 7041e0938d Added Unicode Escaping for body text 👙 2020-08-30 13:21:07 +02:00
Martin Haug d68367f32a Newlines are complicated, y'all 😱
Co-authored-by: laurmaedje@outlook.de <laurmaedje@outlook.de>
2020-08-29 17:20:04 +02:00
Martin Haug 1eb584e256 Fixing the build by removing P macro usage 🚑
Kids, merge with caution!
2020-08-29 14:10:56 +02:00
Martin 5e1fd35926
Merge branch 'master' into code-blocks 2020-08-29 13:58:30 +02:00
Martin Haug c2b6f2dc35 Added code blocks 🚟 2020-08-29 13:53:59 +02:00
Laurenz 236750c35f Remove par nodes in favor of parbreaks 🔄
This basically reverts the earlier change from parbreaks to par nodes because:
- It is simpler and less nested
- It works way better with functions that layout their body inline like `font`, which where buggy before, previously

The original reasons for changing to par nodes were:
- the envisioned design of the layouter at that time (based on dynamic nodes etc.), which is not relevant anymore
- possibly existing benefits with regards to incremental compilation, which are unsure and outweighed by the immediate benefits of the parbreak-representation
2020-08-29 12:02:07 +02:00
Laurenz 6febc03273 Make align not behave box-like and smarter 📦
Doesn't layout contents into a box anymore, instead layouting inline in the parent context. Also makes axis inferring for center alignents smarter (just because I had fun doing it). It's unsure whether we want to keep it because it might be confusing.
2020-08-29 11:32:32 +02:00
Laurenz 8a45ec2875 Fix default values for rgb-clamping 🩹 2020-08-27 21:56:53 +02:00
Laurenz 2a92428ff6 Do as Dolores says 2020-08-27 21:47:26 +02:00
Laurenz 37835e4d8e Better error reporting for nameless function 💡 2020-08-27 21:34:48 +02:00
Martin Haug c099b8b9b4 Fixing the regression 🩹 2020-08-27 20:56:44 +02:00
Martin Haug 3abb9ec319 Code review-tastic changes 🦪 2020-08-27 20:42:09 +02:00
Martin Haug 3de20f8d38 Add Multi-Invokation 👨‍👩‍👧‍👧 2020-08-27 17:50:57 +02:00
Laurenz 141d69cb60 Remove some obsolete stuff 2020-08-19 21:12:34 +02:00