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
Laurenz
77dac270a8
Make compute functions possible 💻
...
Ships with the amazing new `rgb` function!
2020-08-19 20:49:01 +02:00
Laurenz
6d7e7d945b
Tidy up library functions 🧺
2020-08-17 23:45:03 +02:00
Laurenz
3cbca56a71
Parse braced expressions and bracketed calls in headers 🗳
...
- Refactors the tokenizer to be lazy: It does not emit pre-parsed function tokens, but instead allows it's mode to be changed. The modes are tracked on a stack to allow nested compute/typesetting (pop/push).
- Introduces delimited groups into the parser, which make it easy to parse delimited expressions without handling the delimiters in the parsing code for the group's content. A group is started with `start_group`. When reaching the group's end (matching delimiter) the eat and peek methods will simply return `None` instead of the delimiter, stopping the content parser and bubbling up the call stack until `end_group` is called to clear up the situation.
2020-08-17 16:25:09 +02:00
Laurenz
30f16bbf64
Add Value type and replace dyn-nodes with call-exprs 🏗
...
- In addition to syntax trees there are now `Value`s, which syntax trees can be evaluated into (e.g. the tree is `5+5` and the value is `10`)
- Parsing is completely pure, function calls are not parsed into nodes, but into simple call expressions, which are resolved later
- Functions aren't dynamic nodes anymore, but simply functions which receive their arguments as a table and the layouting context
- Functions may return any `Value`
- Layouting is powered by functions which return the new `Commands` value, which informs the layouting engine what to do
- When a function returns a non-`Commands` value, the layouter simply dumps the value into the document in monospace
2020-08-16 22:39:21 +02:00
Laurenz
9f6137d8a8
Remove tuples and objects in favor of tables 🛢
...
This refactores the parser tests to make them more concise and flexible with regards to spans.
2020-08-16 14:38:30 +02:00