55 Commits

Author SHA1 Message Date
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
ed4fdcb0ad Par nodes 🧳 2020-08-04 11:46:04 +02:00
Laurenz
dbfb3d2ced Formatting, documentation and small improvements 🧽 2020-08-03 16:04:55 +02:00
Laurenz
266d457292 Refactor model into tree 🛒 2020-08-02 22:05:49 +02:00
Laurenz
95e6b078fe Move to non-fatal errors 🪂 [WIP]
- Dynamic models instead of SyntaxTrees
- No more ParseResult/LayoutResult
- Errors and Decorations which are propagated to parent contexts
- Models are finally clonable
2020-01-19 21:53:24 +01:00
Laurenz
a8f711d49a Checkpoint 🏁 2020-01-13 11:26:42 +01:00
Laurenz
a93b1ab003 Formatting 🛀 2020-01-06 12:50:20 +01:00
Laurenz
2ee5810fec Asyncify font loading 🪐 2020-01-06 12:41:42 +01:00
Laurenz
bd384a2a63 Re-enable *, _ and `. 2020-01-05 11:18:13 +01:00
Laurenz
7b84f3b553 Adopt new font loading engine ⚙ 2020-01-04 22:43:26 +01:00
Laurenz
269f069a4d Simple line layouter 🧾 2019-12-30 22:28:56 +01:00
Laurenz
f3e461b27c Paper styles and scalable+default margins 📜 2019-12-15 15:09:09 +01:00
Laurenz
665b4d2aca More consistent library code and functions 🎄 2019-12-13 23:59:01 +01:00
Laurenz
f549914ff8 Refine and rename layouting types 🛀 2019-12-12 23:33:26 +01:00
Laurenz
ff107cf3e7 Tidying up 🧹 2019-12-12 22:19:38 +01:00
Laurenz
a791ef1628 Pretty good stack layouter ✈ 2019-12-11 22:06:54 +01:00
Laurenz
92586d3e68 Progressing stack layouter 🚊 2019-12-10 11:37:12 +01:00
Laurenz
7e98022435 Bad stack layouter 🚑 2019-12-09 13:29:04 +01:00
Laurenz
f5b104d0da Rename crate typst -> typstc 2019-12-05 20:29:55 +01:00
Laurenz
72a9631b03 Move arg parser into FuncArgs and create (incomplete) consistent map 🧭 2019-12-05 19:48:37 +01:00
Laurenz
f72b1505be Unify error types ♾ 2019-12-04 20:20:02 +01:00
Laurenz
9fb31defd0 Expand functionality of function! macro 🛰 2019-12-04 19:35:28 +01:00
Laurenz
ace57c3420 First half of stack update 🌓 2019-12-01 19:18:38 +01:00
Laurenz
5782b82770 Refactor layouting base ♻ 2019-11-30 18:54:46 +01:00
Laurenz
b13ed627ff Better error reporting 🚨 2019-11-30 14:10:35 +01:00
Laurenz
6ff60bc368 Fix secondary non-origin alignment 🚧 2019-11-22 20:15:00 +01:00
Laurenz
ebff8eb038 Fix spacing bugs 🚧 2019-11-21 17:50:51 +01:00
Laurenz
863a1a7a00 Completed stack and flex refactoring 🔋 2019-11-21 16:03:15 +01:00
Laurenz
f24e9b44e0 Refined expansion model 🔛 2019-11-20 17:31:52 +01:00
Laurenz
1dafe2c2ea First half of flex refactoring 🥝 2019-11-19 23:27:56 +01:00
Laurenz
f8233a4cb1 Refactor stack layouter to layout eagerly 🛫 2019-11-18 19:36:50 +01:00
Laurenz
1a6fb48bc5 Page style modification functions 📜
- `page.size`
- `page.margins`
2019-11-18 15:10:11 +01:00
Laurenz
1eb25f86dd Double-try spaces for functions 🌑🌕 2019-11-18 12:57:14 +01:00
Laurenz
14259c7d09 Fix alignment bugs ✔ 2019-11-17 20:57:50 +01:00
Laurenz
f6cb4d725e Update standard library functions 🎁 2019-11-17 15:16:37 +01:00
Laurenz
467d7203ee Remove top-level stack layouter from tree layouter 🗑 2019-11-17 11:53:59 +01:00
Laurenz
bd66ebd683 Prepare axis setting for flex layouter ♟ 2019-11-17 11:11:53 +01:00
Laurenz
796c2486ce Axes updating for stack layouter 📐 2019-11-16 14:03:27 +01:00
Laurenz
ac4d501945 Move generalization/specialization methods 🚚 2019-11-16 11:10:53 +01:00
Laurenz
261ef9e33a Generalize tree layouter 🌲 2019-11-16 10:37:30 +01:00
Laurenz
0917d89bb8 Generalize flex layouter 🎯 2019-11-15 19:55:47 +01:00
Laurenz
9473ae61e9 Generalize stack layouter 🎲 2019-11-15 13:05:25 +01:00
Laurenz
1ece263579 Create easy-to-use argument parser 💎 2019-11-07 19:07:11 +01:00
Laurenz
110e4b9cb9 Spans for all parts of functions 2019-10-31 20:26:21 +01:00
Laurenz
65ec3764e5 Basic node spans 2019-10-30 22:52:25 +01:00
Laurenz
cff325b520 Add spacing functions 🔛 2019-10-22 21:40:37 +02:00
Laurenz
991e879e1d Extend stack layouts from vertical to horizontal flows ➡ 2019-10-17 19:21:47 +02:00
Laurenz
1987e5861c Create basic box and line-break functions 📦 2019-10-17 12:55:34 +02:00
Laurenz
f22f9513ae Add pagebreak function ⏭ 2019-10-17 10:12:34 +02:00