Laurenz
45812b7001
Merge pull request #35 from typst/wide-calls
...
Wide calls
2021-06-30 11:04:53 +02:00
Laurenz
1c43d8af12
Bump dependencies
2021-06-30 00:52:50 +02:00
Laurenz
32a6b673bc
Make use of wide calls
2021-06-29 13:49:50 +02:00
Laurenz
b89cd128ae
Wide calls
2021-06-29 13:49:50 +02:00
Martin Haug
21d919e2d2
Put incremental compilation behind feature
2021-06-29 12:33:24 +02:00
Laurenz
6d0911d7a8
Mutable visitor
2021-06-29 10:54:34 +02:00
Laurenz
8ea05739af
Make values smaller
...
Reduced from 48 bytes to 32 bytes on 64-bit architectures.
2021-06-28 21:57:18 +02:00
Martin Haug
e9960b8942
Code review: Reverse temperature
2021-06-27 18:58:31 +02:00
Martin
6f518c1728
Adjust comments
...
Co-authored-by: Laurenz <laurmaedje@gmail.com>
Update tests/typ/layout/stack.typ
Co-authored-by: Laurenz <laurmaedje@gmail.com>
2021-06-27 18:58:28 +02:00
Martin Haug
9bd8b7ddac
Code review, new stack test
2021-06-27 18:06:39 +02:00
Martin
57bd3e23c7
Apply suggestions from code review
...
Co-authored-by: Laurenz <laurmaedje@gmail.com>
2021-06-27 17:08:40 +02:00
Martin Haug
6b6cdae7ce
Testing for incremental
...
Also, constraint bugfixes.
2021-06-27 12:31:27 +02:00
Laurenz
f64c772b6d
Fix capturing bug
2021-06-27 12:05:36 +02:00
Laurenz
422b8e640f
With expressions
2021-06-26 18:07:05 +02:00
Laurenz
d53c933e4d
Add box and block functions
2021-06-26 15:47:37 +02:00
Laurenz
784018124d
Remove unused template name field
2021-06-26 15:35:37 +02:00
Laurenz
285c2f617b
Cleanse library
...
- Remove doc-comments for Typst functions from library
- Reduce number of library source files
2021-06-26 13:06:37 +02:00
Laurenz
63cf361496
Make font take everything as keyword arguments
2021-06-25 18:14:19 +02:00
Laurenz
62ecd31af2
Streamline template evaluation
2021-06-18 13:08:39 +02:00
Martin
80a9b300d1
Ref count the frames
2021-06-18 13:01:55 +02:00
Martin
7db78d83be
Levels
2021-06-18 13:00:36 +02:00
Laurenz
2a30c20f0e
Flip outdated expression names
2021-06-18 12:47:59 +02:00
Laurenz
bca035172c
Join semantics
2021-06-18 11:59:05 +02:00
Laurenz
8b6391040e
Remove eat_ prefix
2021-06-18 11:58:43 +02:00
Laurenz
6967c6c80a
Len function for strings, arrays and dictionaries
2021-06-18 10:50:08 +02:00
Laurenz
2e87808cdd
Setter method
2021-06-17 14:32:24 +02:00
Martin
e14e804789
Constraints ( #31 )
2021-06-17 14:18:43 +02:00
Laurenz
e2cdda67dc
Refactor grid row layout
2021-06-15 16:34:41 +02:00
Laurenz
a61ee46ed2
Refactor column resolving
2021-06-13 00:22:39 +02:00
Laurenz
4c37ebb936
Give up on not implementing Eq and Ord
2021-06-12 18:24:31 +02:00
Martin
fec1f41106
Allow grid cells to span multiple regions. ( #30 )
2021-06-12 18:19:18 +02:00
Laurenz
4017b5a9f6
Push some nodes directly into the stack
2021-06-11 14:42:20 +02:00
Laurenz
4dbd9285c9
Basic enums
2021-06-11 14:00:06 +02:00
Laurenz
3330767c20
Remove props in favor of using state for everything
2021-06-11 11:30:18 +02:00
Martin Haug
c28708aa19
Text decorations
2021-06-10 23:15:51 +02:00
Laurenz
bce553a991
Tidy up
2021-06-09 22:44:40 +02:00
Martin Haug
29cfef0a6d
Add a grid layouter
2021-06-09 22:44:40 +02:00
Martin Haug
73fa2eda2c
Introduce `fr`s
2021-06-09 22:44:40 +02:00
Laurenz
9983634cd5
Add note about quadratic running times
2021-06-09 10:56:11 +02:00
Laurenz
edff2ae680
Remove template pretty printing
...
Was buggy and pretty useless anyway since it couldn't peek into function templates.
2021-06-09 10:45:49 +02:00
Laurenz
5afb42ad89
Lists with indent-based parsing
...
- Unordered lists with indent-based parsing and basic layout using stacks
- Headings are now also indent based
- Removes syntax functions since they will be superseded by select & transform
2021-06-09 00:37:13 +02:00
Laurenz
d69dfa84ec
Move import parser to appropriate position in the file
2021-06-08 11:51:21 +02:00
Laurenz
f26526ba75
Switch back to hashtags for headings
2021-06-07 18:17:47 +02:00
Laurenz
7218892c72
Refactor path handling
2021-06-01 12:55:07 +02:00
Laurenz
9bdb0bdeff
Fix path hash bug on unix
2021-05-31 22:33:40 +02:00
Martin Haug
37e0846037
Test cases for include and import
2021-05-31 22:33:40 +02:00
Laurenz
00ac68b845
Fix and improve
...
- Set context location to resolved path during module evaluation.
- Dump module diagnostics on import
- Use same-file for more robustness than fs::canonicalize
2021-05-31 22:33:40 +02:00
Laurenz
e023bf2ac9
Module loading system
...
Detects cyclic imports and loads each module only once per compilation.
2021-05-31 22:33:40 +02:00
Martin Haug
9f77f09aac
Parse import and include expressions
...
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-05-31 22:33:40 +02:00
Laurenz
0bfee5b777
Refactored loading and cache architecture
2021-05-28 12:46:43 +02:00
Laurenz
eabf28f081
Remove hash() from AnyNode since caching is now fully transparent
2021-05-27 14:48:55 +02:00
Laurenz
b886ced408
Switch to N64 type alias
2021-05-27 14:48:45 +02:00
Laurenz
9e0a34c80f
Adapt to pdf-writer update
2021-05-27 14:11:08 +02:00
Martin Haug
8e700606bb
Add a cache for unchanged layouts
...
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-05-26 23:50:40 +02:00
Martin Haug
e27f6c1014
Add hash impls for all nodes
...
This prepares the incremental PR.
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-05-26 22:57:29 +02:00
Laurenz
14f093bfee
A few predefined colors for testing
2021-05-23 22:59:25 +02:00
Laurenz
cd25b40281
Stack function
2021-05-23 22:36:34 +02:00
Laurenz
5ced5a69c0
Adapt to pdf-writer update
2021-05-22 20:18:33 +02:00
Laurenz
a175d37ff2
Refactor parser a bit
2021-05-21 23:58:34 +02:00
Laurenz
6472c1e425
Rename areas to regions
2021-05-21 12:55:36 +02:00
Laurenz
1cb6328d20
Reword some doc comments
2021-05-19 00:33:50 +02:00
Laurenz
118fc1014b
Leaner argument parsing
2021-05-18 21:32:40 +02:00
Laurenz
7025590405
Rename _new to new and typify to value
2021-05-18 16:53:11 +02:00
Laurenz
72434f0695
Min and max functions
2021-05-18 16:31:22 +02:00
Laurenz
6b08862b83
Streamline value comparisons
2021-05-18 15:44:49 +02:00
Laurenz
8d67c0ca5e
Convert font units to lengths earlier
2021-05-17 23:06:31 +02:00
Laurenz
c975d0d5e9
Tidy up layouting code
2021-05-17 22:55:31 +02:00
Laurenz
24c4a746bc
Move aspect ratio into stack
2021-05-17 15:23:04 +02:00
Laurenz
1003d320d4
Rename expand to fixed and switch to bools
2021-05-17 15:00:29 +02:00
Laurenz
fbb823964f
Fix compilation on unix
2021-05-14 11:26:50 +02:00
Laurenz
e65c2b949c
Remove resource abstraction and handle images natively
2021-05-14 11:14:28 +02:00
Laurenz
33733fd1ef
Expose units_per_em and raw face id
2021-05-13 11:26:51 +02:00
Laurenz
3e03667c37
Make file system loader serializable 📚
2021-05-05 22:18:33 +02:00
Laurenz
6292d25afb
Reengineer font and resource loading 🏞
2021-04-23 17:46:14 +02:00
Laurenz
72478946c2
Make frames serializable 📚
...
This also makes serialization support non-optional since it's too much feature-management for too little benefit.
2021-04-21 21:17:25 +02:00
Laurenz
3d2ee54848
Refactor and comment ♻
2021-04-07 01:08:07 +02:00
Laurenz
076e767b0e
Do binary search and find the outermost glyph with the text index 🔍
...
Co-Authored-By: Martin <mhaug@live.de>
2021-04-07 00:24:42 +02:00
Laurenz
464a6ff75e
Deduplicate ttf-parser and rustybuzz face 🥞
2021-04-06 15:13:20 +02:00
Laurenz
de20a21a58
Reshaping with unsafe-to-break ⚡
...
Co-Authored-By: Martin <mhaug@live.de>
2021-04-05 22:32:09 +02:00
Laurenz
9014e83478
Fix multi-page paragraph bugs 🐞
2021-04-03 21:12:32 +02:00
Laurenz
d74c9378b8
New paragraph layout 🚀
...
The previous paragraph layout algorithm had a couple of flaws:
- It always produced line break opportunities between runs although on
the textual level there might have been none.
- It didn't handle trailing spacing correctly in some cases.
- It wouldn't have been easily adaptable to Knuth-Plass style optimal
line breaking because it was fundamentally structured first-fit
run-by-run.
The new paragraph layout algorithm fixes these flaws. It proceeds
roughly in the following stages:
1. Collect all text in the paragraph.
2. Compute BiDi embedding levels.
3. Shape all runs, layout all children and store the resulting items in
a reusable (possibly even cacheable) `ParLayout`.
3. Iterate over all line breaks in the concatenated text.
4. Construct lightweight `LineLayout` objects for full lines instead of
runs. These mostly borrow from the `ParLayout` and only reshape the
first and last run if necessary. The design allows to use Harfbuzz's
UNSAFE_TO_BREAK mechanism to make reshaping more efficient. The size
of a `LineLayout` can be measured without building the line's frame.
5. Build only the selected line's frames and stack them.
2021-04-03 21:09:17 +02:00
Laurenz
8245b7b736
Baseline alignment ⏏
2021-03-30 21:43:12 +02:00
Laurenz
c00cca3677
Refactor ♻
2021-03-30 16:19:16 +02:00
Laurenz
79948c0c5e
BiDi reordering 🔃
...
Co-Authored-By: Martin <mhaug@live.de>
2021-03-30 14:31:50 +02:00
Laurenz
c393eccd36
Fix space/newline trimming 🐞
...
Co-Authored-By: Martin <mhaug@live.de>
2021-03-30 14:31:46 +02:00
Laurenz
652986fd58
Fix double leading 🐞
2021-03-30 14:31:39 +02:00
Laurenz
88da325c7d
Fixed par layouter directions 🗜
2021-03-29 15:02:15 +02:00
Laurenz
309b8f20a8
Line break iterating run shaper 🌵
...
Co-Authored-By: Martin <mhaug@live.de>
2021-03-29 15:02:15 +02:00
Laurenz
8c27dc1010
Write spaces and linebreaks into text runs ✒
2021-03-29 15:02:15 +02:00
Laurenz
9c040a9d2b
Move around test cases 🚚
2021-03-29 14:51:54 +02:00
Laurenz
57ca9628c1
Better space coalescing logic 🌧
...
This creates a smaller state machine helper type for softness coalescing, which does not own the resulting nodes. While this creates a bit more duplication in stack and par builder, it makes it a lot easier to integrate additional logic into the paragraph builder.
Furthermore:
- Line breaks are now "hard", that is, not coalesced with each other.
- Text nodes with equal style are now merged allowing for example `f{}i` to form a ligature.
2021-03-27 21:52:39 +01:00
Laurenz
76fc4cca62
Refactor alignments & directions 📐
...
- Adds lang function
- Refactors execution context
- Adds StackChild and ParChild enums
2021-03-25 21:32:33 +01:00
Laurenz
e8057a5385
Make pdf module top-level 🧱
2021-03-24 21:48:25 +01:00
Laurenz
73615f7e3c
Text shaping 🚀
...
- Shapes text with rustybuzz
- Font fallback with family list
- Tofus are shown in the first font
Co-Authored-By: Martin <mhaug@live.de>
2021-03-24 17:12:34 +01:00
Laurenz
98336bfafb
Better font family definitions ✒
2021-03-22 14:08:50 +01:00
Laurenz
39f55481ed
More consistent documentation 📝
2021-03-22 10:48:29 +01:00
Laurenz
83fa2c075e
Fix bug with line spacing after headings ✅
2021-03-22 01:14:37 +01:00
Laurenz
5e08028fb3
Syntax functions 🚀
...
This adds overridable functions that markup desugars into. Specifically:
- \ desugars into linebreak
- Two newlines desugar into parbreak
- * desugars into strong
- _ desugars into emph
- = .. desugars into heading
- `..` desugars into raw
2021-03-21 17:50:56 +01:00
Laurenz
898728f260
Square, circle and ellipse 🔵
2021-03-20 20:19:30 +01:00
Martin
6cb9fe9064
Text colors 🦩 ( #18 )
2021-03-19 22:36:13 +01:00
Laurenz
898dc38ec1
Better debug representations 💻
2021-03-19 21:23:03 +01:00
Laurenz
264a7dedd4
Scheduled maintenance 🔨
...
- New naming scheme
- TextNode instead of NodeText
- CallExpr instead of ExprCall
- ...
- Less glob imports
- Removes Value::Args variant
- Removes prelude
- Renames Layouted to Fragment
- Moves font into env
- Moves shaping into layout
- Moves frame into separate module
2021-03-19 17:57:31 +01:00
Laurenz
ca3df70e2a
Add basic paragraph function 📑
...
Allows to change:
- (paragraph) spacing
- leading
- word-spacing
2021-03-19 13:32:12 +01:00
Laurenz
54a9ccb1a5
Configurable font edges ⚙
...
Adds top-edge and bottom-edge parameters to the font function. These define how
the box around a word is computed. The possible values are:
- ascender
- cap-height (default top edge)
- x-height
- baseline (default bottom edge)
- descender
The defaults are chosen so that it's easy to create good-looking designs with
vertical alignment. Since they are much tighter than what most other software
uses by default, the default leading had to be increased to 50% of the font size
and paragraph spacing to 100% of the font size.
The values cap-height and x-height fall back to ascender in case they are zero
because this value may occur in fonts that don't have glyphs with cap- or
x-height (like Twitter Color Emoji). Since cap-height is the default top edge,
doing no fallback would break things badly.
Removes softness in favor of a simple boolean for pages and a more finegread u8
for spacing. This is needed to make paragraph spacing consume line spacing
created by hard line breaks.
2021-03-19 13:20:58 +01:00
Martin Haug
bd12d135ca
Merge text and shape PDF loops 🎡
2021-03-19 11:05:23 +01:00
Laurenz
6bd1a494e0
Formatting and documentation ✨
2021-03-17 23:29:58 +01:00
Laurenz
49bb7f9a2b
Switch from name to ratio for font stretch parameter 📐
2021-03-17 23:14:19 +01:00
Laurenz
8cdfc7faaf
Rename box to rect and color to fill ✏
2021-03-17 22:08:44 +01:00
Laurenz
271b0f953b
Fixes in TextMate grammar ✅
2021-03-17 14:47:11 +01:00
Laurenz
ceb00a2e77
Factor out alignment deduplication into separate function ♻
2021-03-13 16:57:15 +01:00
Laurenz
1584b09708
Fix pagebreak-in-box bug ✔
2021-03-12 18:48:11 +01:00
Laurenz
c3acb491e3
Refactor execution context 🏗
...
- The execution context is a lot more structured: Instead of a magic stack of arbitrary objects there are static objects for pages, stacks and paragraphs
- Page softness/keeping mechanic is now a lot simpler than before
2021-03-12 14:16:59 +01:00
Laurenz
584a43277d
Rename ChildAlign to LayoutAligns ✏
2021-03-12 14:12:30 +01:00
Laurenz
c1b1dbcc09
Better expansion behaviour 🐪
...
This makes expansion behaviour inheritable by placing it into the area and passing it down during layouting instead of computing some approximation of what we want during execution.
2021-03-11 10:48:29 +01:00
Laurenz
4e5f85aa4a
Pad function 🔲
2021-03-10 17:42:47 +01:00
Laurenz
b0446cbdd1
Move around library types 🚚
2021-03-10 17:22:44 +01:00
Laurenz
bbb9ed07ff
Better line spacing calculations ↕
...
- Only add line spacing between lines. Previously, line spacing was added below
every line, making `#box[word]` higher than just `word`.
- Compute box height of text as `ascender - descender` so that the full word is
contained in the box.
2021-03-10 10:20:01 +01:00
Laurenz
b2b8d37ce0
Rename run to line and add some explanatory comments ✏
...
The name run was a relict of the time where a line consisted of a set of runs with same alignment. While these runs still exist conceptually, they are all stored flatly together in what was now renamed from `run` to `line`.
2021-03-09 17:25:25 +01:00
Laurenz
5157c1e276
Documentation fixes ✔
2021-03-03 23:32:29 +01:00
Laurenz
193734f453
Callee expressions 🍅
2021-03-03 22:33:00 +01:00
Laurenz
1cfc3c72b5
Show name of user-defined functions in representation 🦋
2021-03-03 18:15:33 +01:00
Laurenz
c94a18833f
Closures and function definitions 🚀
...
Supports:
- Closure syntax: `(x, y) => z`
- Shorthand for a single argument: `x => y`
- Function syntax: `let f(x) = y`
- Capturing of variables from the environment
- Error messages for too few / many passed arguments
Does not support:
- Named arguments
- Variadic arguments with `..`
2021-03-03 17:53:40 +01:00
Laurenz
4d90a066f1
Simplify collection parsing ♻
...
In preparation for closure expressions.
2021-03-02 23:20:28 +01:00
Laurenz
d5d187a8c2
Replace default fonts 🆕
2021-03-02 17:31:41 +01:00
Laurenz
45abcf6b2b
Remove dependencies on itoa and ryu ⬇️
2021-03-02 15:45:01 +01:00
Laurenz
742a28a57a
Cleaner control flow in for loop evaluation 🧼
2021-02-24 21:32:09 +01:00
Laurenz
f084165eab
While loops 🔁
2021-02-24 21:29:32 +01:00
Laurenz
dae3dad540
Index + value iteration for arrays 🦚
2021-02-24 18:54:06 +01:00
Laurenz
de37a056ed
Split pushed text at newlines ✂
2021-02-21 11:43:25 +01:00
Laurenz
4d42c79b16
Fix spacing after raw blocks ⬇️
2021-02-21 11:43:08 +01:00
Laurenz
927341d93a
Update coma example ⬆️
2021-02-18 15:19:29 +01:00
Laurenz
ed81049ddc
Show repr in monospace 📏
2021-02-18 15:06:13 +01:00
Laurenz
84cdc85ca7
Refresh parser 🌊
2021-02-18 15:06:00 +01:00
Laurenz
e143fd36ef
Refresh tokenizer 🌊
2021-02-18 15:05:49 +01:00
Laurenz
db1659a987
Rename any template to func template ✏
2021-02-12 23:14:29 +01:00
Laurenz
094462cbdd
Make templates and strings summable 🥪
2021-02-12 23:11:47 +01:00
Laurenz
58f799c41c
Early quit loop when body returns error 🛑
2021-02-12 23:06:04 +01:00
Laurenz
790dc9e667
Cleaning 🧹
2021-02-12 22:55:26 +01:00
Laurenz
a2fcc1bf28
Small fixes ♻
2021-02-11 22:24:42 +01:00
Laurenz
146eda102a
Move span directly into diagnostics 🚚
2021-02-11 19:26:47 +01:00
Laurenz
1711b67877
Move all pretty printing into one module and pretty print values 🦋
2021-02-11 17:33:13 +01:00
Laurenz
f9197dcfef
Add arguments value 🏓
2021-02-09 22:56:44 +01:00
Laurenz
06ca740d01
Split evaluation and execution 🔪
2021-02-09 19:46:57 +01:00
Laurenz
e35bbfffcb
Remove captured expression 🗑️
2021-02-07 13:39:05 +01:00
Laurenz
c80e13579f
Dry-clean visitor with a macro 🏜
2021-02-07 13:14:28 +01:00
Martin Haug
a6cae89b47
Generalize child of NodeBackground 🍼
2021-02-06 12:54:44 +01:00
Martin Haug
80e076814d
Merge `rect` and `box` 🦚
2021-02-06 12:30:44 +01:00
Martin Haug
8469bad748
Add rectangle function 🎛
2021-02-04 21:30:18 +01:00
Laurenz
8de1f8b770
Fix counting bug ✅
2021-02-04 00:38:30 +01:00
Laurenz
d86a5e8a1f
Tidy up raw blocks 🧹
...
- Better trimming (only trim at the end if necessary)
- Fixed block-level layouting
- Improved pretty printing
- Flip inline variable to block
- Flip inline variable to display for math formulas
2021-02-03 21:34:49 +01:00
Laurenz
6fcef9973b
Refresh tests 🔄
2021-01-31 22:43:11 +01:00
Laurenz
bcb2c46a10
Scoped for loop bindings 🏔️
...
Previously for loop bindings were leaked until after the loop.
2021-01-30 16:26:44 +01:00
Laurenz
5943f552e5
Capture variable by slot instead of value 🎣
2021-01-30 16:19:57 +01:00
Laurenz
67047047e8
Interpret two backticks as single-backtick block ✅
2021-01-30 15:24:11 +01:00
Laurenz
fe7ea53800
New display-math syntax 🧮
...
Changed to `$[x]$` instead of `$$x$$` because then `$$` simply is an empty formula that does not poison the whole document.
2021-01-30 12:36:41 +01:00
Laurenz
89eb8bae49
New syntax 💎
...
- Everything everywhere!
- Blocks with curly braces: {}
- Templates with brackets: []
- Function templates with hashtag: `#[f]`
- Headings with equals sign: `= Introduction`
2021-01-30 12:09:26 +01:00
Laurenz
ac24075469
Moves captures visitor into separate file 🚚
2021-01-30 10:24:51 +01:00
Laurenz
2036663ed2
Capture variables in templates 🔍
2021-01-27 15:05:18 +01:00
Laurenz
2641c2d20e
Always evaluate for loop to template 🔁
2021-01-27 13:55:04 +01:00
Laurenz
ce8138c685
Scope variables in blocks 🏔️
2021-01-27 11:50:51 +01:00
Laurenz
710f88ccb2
For loop patterns 🦚
2021-01-26 23:30:03 +01:00
Laurenz
010ddc4795
More straightforward pretty printing tests 🧹
2021-01-26 21:57:56 +01:00
Laurenz
f006636dd2
Update comments 🔄
2021-01-26 21:23:42 +01:00
Laurenz
ed929dd10c
For loops 🔁
...
(does not support key-value patterns yet)
2021-01-26 21:16:36 +01:00
Laurenz
e847082435
Multi-expression blocks 🛍️
2021-01-26 21:13:52 +01:00
Laurenz
aaa48403cd
Require hashtag for all keywords 💂♀️
2021-01-26 21:11:44 +01:00
Laurenz
16ac3f3ebc
Small improvements ♻
2021-01-26 13:49:04 +01:00
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
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
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
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
Laurenz
84f30fb735
Remove SpanlessEq 🎃
...
The new solution is slightly hacky, but way more flexible. All types that implement PartialEq can now be compared spanlessly in tests by manipulating a thread-local boolean that is read in Span's PartialEq implementation.
2020-08-15 15:01:55 +02:00
Laurenz
eb9c4b1a49
Add table expressions with arg-parsing functions 🪔
2020-08-15 13:25:31 +02:00
Laurenz
4b723add38
Take references in TryFromExpr 🔭
2020-08-15 11:58:01 +02:00
Laurenz
1a0608930c
Rename Value trait into TryFromExpr ✒
2020-08-15 11:44:18 +02:00
Laurenz
c8f6b5bd5c
Desugar body into last argument 🍩
2020-08-14 20:43:03 +02:00
Laurenz
650c712eab
Add a syntax tree expression kind 🎍
...
This allows bodies to be passed as regular arguments.
2020-08-14 20:19:50 +02:00
Laurenz
1fb2d5103d
Always parse bodies as syntax trees 🌳
...
Previously they were passed as strings to the function parser, now they are parsed and then passed as trees to the function. This allows making bodies sugar for a last content argument. While it removes some flexibility allowing function to parse arbitrary syntaxes in their bodies, these can be modelled as (raw) string arguments.
2020-08-14 20:13:50 +02:00
Laurenz
691423a40a
Basic table type 📔
...
- Keys are strings or integers
- Access with borrowed or owned keys
- `push` method for array-like pattern
- No iteration support yet
2020-08-14 11:40:34 +02:00
Laurenz
88151c546f
Use equals sign instead of colon for objects 📍
2020-08-13 20:10:29 +02:00
Laurenz
da2ade6542
Remove redundant `Expr` prefix from tokens 🧽
2020-08-13 20:02:07 +02:00
Laurenz
2467cd6272
Refactor function parsing ♻
2020-08-04 13:48:07 +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
5a8f2fb73d
Replace body! macro with functions 🧰
2020-08-02 22:21:58 +02:00
Laurenz
266d457292
Refactor model into tree 🛒
2020-08-02 22:05:49 +02:00
Laurenz
cbbc46215f
Layout elements and pure rust rendering 🥏
2020-08-02 21:17:42 +02:00
Laurenz
d5ff97f42e
Move binary into separate crate and tidy dependencies 🎭
2020-08-02 16:56:14 +02:00
Laurenz
533374db14
Refactor argument parsing 🔬
2020-08-02 16:31:34 +02:00
Laurenz
efb78831a7
Unify font and page functions 💕
...
- Removes font weight and width warnings for now, will be added again later
- Adds a bit hacky get_first function for tuples, will be refactored soon anyway
2020-08-02 11:06:45 +02:00
Laurenz
659248d52f
Raw lengths 🚲
...
Replace unitless length with raw f64 and introduce length type with unit.
2020-08-01 19:15:55 +02:00
Laurenz
04c05502be
Add some fonts 📜
2020-08-01 17:59:38 +02:00
Laurenz
06dbac6efd
Port font handling to fontdock and ttf-parser 🛳
...
- Use fontdock for indexing fonts and querying
- Typst binary now automatically indexes and uses system fonts in addition to a fixed font folder!
- Removes subsetting support for now (was half-finished anyways, plan is to use harfbuzz for subsetting in the future)
- Adds font width configuration support
2020-08-01 00:10:54 +02:00
Laurenz
8ca80fc7da
Include parens in expression's span ( fixes #4 ) ☘
2020-07-29 18:13:52 +02:00
Laurenz
bbcdeb128c
Move, rename and switch some things (boring) 🚚
...
- Problems -> Diagnostics
- Position -> Pos
- offset_spans -> Offset trait
- Size -> Length (and some more size types renamed)
- Paper into its own module
- scope::Parser -> parsing::CallParser
- Create `Decorations` alias
- Remove lots of double newlines
- Switch from f32 to f64
2020-07-29 18:09:51 +02:00
Laurenz
9672d43200
Improve argument naming and fix grammar in comment ♻
2020-07-29 17:38:14 +02:00
Laurenz
53ca5a7fc5
Refactor parser 🚇
2020-07-27 13:47:29 +02:00
Laurenz
9f400042cb
Streamline parser and tokenizer test code ✈
2020-07-26 19:14:23 +02:00
Laurenz
ea64ce9aeb
Better distinguish function names in tokenizer from parser ✂
2020-07-26 18:08:08 +02:00
Laurenz
e2ef4f64e7
Rename errors to problems and make error! macro more ergonomic 🧼
...
Also adds a `warning!` macro.
2020-07-26 17:28:43 +02:00
Laurenz
38a2424742
Remove duplicate spans for func args ❌
2020-07-18 18:02:38 +02:00
Laurenz
332f83ed2d
Some code and styling improvements 🎨
2020-07-18 17:52:12 +02:00
Martin Haug
e9a9581252
Spanned object pairs and refactoring 🧵
2020-07-18 16:57:58 +02:00
Martin Haug
bb1350cff5
Parsing mathematical expressions ➕
2020-07-18 14:07:53 +02:00
Laurenz
6f1319e91f
Derive copy for RgbaColor and change debug representation 🐞
2020-07-16 16:27:18 +02:00
Laurenz
e96f3830f1
Use FromStr trait and formatting ✨
2020-07-15 23:49:10 +02:00
Martin Haug
1683ca87f7
Healed field for RgbaColors, CodeRev feedback 🤝
2020-07-15 20:57:26 +02:00
Martin Haug
28c3a797ec
Add named tuples and hex color tokens
2020-07-14 19:09:58 +02:00
Laurenz
1658b00282
New syntax features 👔
...
- Forced line breaks with backslash followed by whitespace
- (Multline) raw text in backticks
- Set font class fallbacks with [font.family] (e.g. [font.family: monospace=("CMU Typewriter Text")])
- More sophisticated procedure to find end of function, which accounts for comments, strings, raw text and nested functions (this is a mix of a feature and a bug fix)
2020-02-13 21:58:49 +01:00
Laurenz
60099aed50
Parse tuples and objects 🍒
...
Generalizes the parsing of tuples, objects and function arguments into generic comma-separated collections.
2020-02-11 21:30:39 +01:00
Laurenz
5badb4e8ff
Write lots of parser tests 🌪
2020-02-09 14:14:32 +01:00
Laurenz
4e8359385f
Improve syntax testing framework ♻
...
... and finally expand a few escape sequences in strings.
2020-02-07 22:29:16 +01:00
Laurenz
02dc29d18a
Highlight bold / italic / monospace 🎨
2020-02-06 11:15:48 +01:00
Laurenz
751812f451
Serialize layouts with serde 🔠
2020-02-04 21:36:29 +01:00
Laurenz
e63ce52ae0
Merge `Parsed` and `Layouted` types into `Pass` with `Feedback` 🌝 🎢 🌚
2020-02-04 19:22:23 +01:00
Laurenz
5c11aa7223
Adapt for tonty and fix a few bugs 🚧
2020-02-04 11:22:00 +01:00
Laurenz
f655656fb8
Streamline Key + Value traits 🌊
2020-02-04 09:35:29 +01:00
Laurenz
ec60795575
Port tests 🚁
2020-02-03 15:05:34 +01:00
Laurenz
3150fd5643
Better Debug/Display and Derives 🧽
2020-02-03 12:22:02 +01:00
Laurenz
40ea35cbe7
Upgrade to new toddle interface 🐳
2020-02-03 10:37:50 +01:00
Laurenz
20fb4e7c37
Document everything 📜
2020-01-26 15:51:13 +01:00
Laurenz
0a087cd28b
Reorganize modules 🧱
2020-01-24 16:23:57 +01:00
Laurenz
03fddaf3ae
Non-fatal argument parsing 🌋
2020-01-24 12:44:04 +01:00
Laurenz
78da2bdd5d
Decoupled function parser 🔗 [WIP]
2020-01-21 17:09:31 +01:00
Martin Haug
1c1c994c46
Merge branch 'master' into syntax-model
2020-01-20 22:42:00 +01:00
Martin Haug
1eaa2d418b
Page margin classes! 🐿
2020-01-20 22:38:33 +01: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
277f2d2176
ColorToken serialization + function fix 🚧
2020-01-18 15:58:36 +01:00
Laurenz
70878885f5
Do argument parsing ☑
2020-01-16 23:00:39 +01:00
Laurenz
08b91a265f
Powerful parser testing 🐱 👤
2020-01-16 17:51:04 +01:00
Laurenz
15ad30555b
Parser testing prototype 🥥
2020-01-14 20:17:50 +01:00
Laurenz
dde69276d4
Refactor expressions and create tuples and objects 🧮
2020-01-13 14:36:40 +01:00
Laurenz
6527d31dfb
Merge Characters struct into tokenizer 🔀
2020-01-13 13:02:33 +01:00
Laurenz
a8f711d49a
Checkpoint 🏁
2020-01-13 11:26:42 +01:00
Laurenz
bd702c2029
Span tests ↔
2020-01-11 11:47:07 +01:00
Laurenz
b1e956419d
Re-engineer tokenization 🚿
2020-01-11 10:11:14 +01:00
Laurenz
a75ddd2c93
Convert spans to line/column format 📑
2020-01-10 13:03:43 +01:00
Laurenz
5dbc7dc5aa
Introduce color tokens 🎨
2020-01-09 18:44:29 +01:00
Laurenz
bc22d1fbc1
Fix font weight bug 🚧
2020-01-08 14:28:14 +01:00
Laurenz
c9fd39f37e
Define base fallback list ♾
2020-01-06 13:06:17 +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
5dfaffc5bd
Add basic font family function ✏
2020-01-01 19:37:55 +01:00
Laurenz
7de9219321
Add word|line|par.spacing functions 💶
2020-01-01 17:15:21 +01:00
Laurenz
63b8ccba95
Fix looping bug 🚧
2019-12-30 23:39:10 +01:00
Laurenz
269f069a4d
Simple line layouter 🧾
2019-12-30 22:28:56 +01:00
Laurenz
b8620121a6
Fix nasty string boundary bug 🏗
2019-12-15 15:43:22 +01:00
Laurenz
a87937d0c4
Merge branch 'dev' of https://github.com/laurmaedje/typstc into dev
2019-12-15 15:10:31 +01:00
Laurenz
f3e461b27c
Paper styles and scalable+default margins 📜
2019-12-15 15:09:09 +01:00
Martin Haug
3cef3fa2e0
Merged changes 🔀
2019-12-15 15:04:26 +01:00
Laurenz
3677e4a97d
Fix padding-top bug 🏗
2019-12-15 00:30:00 +01:00
Laurenz
895507146f
Reformat paper styles ♻
2019-12-15 00:18:41 +01:00
Martin Haug
359d9e523a
Added shitload of page dimension definitions 📘
2019-12-14 14:09:01 +01:00
Laurenz
665b4d2aca
More consistent library code and functions 🎄
2019-12-13 23:59:01 +01:00
Laurenz
971ff3a2dc
Implement expression kind for Spanned<T> 👩💻
2019-12-13 14:58:14 +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
3c0496bb61
Refactor size module ♻
2019-12-12 20:17:35 +01:00
Laurenz
e7277fec23
Add font size function 🌱
2019-12-12 11:41:04 +01:00
Laurenz
a791ef1628
Pretty good stack layouter ✈
2019-12-11 22:06:54 +01:00
Laurenz
d34707a6ae
Not too shabby stack layouter 🚆
2019-12-11 17:34:25 +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
64f938b449
Improve testers ♻
2019-12-08 11:36:18 +01:00
Laurenz
f364395e1d
Create parsing test harness ⚡
2019-12-07 14:42:25 +01:00
Laurenz
1099330988
Finish consistent map and add two further convenience maps 🗺
2019-12-06 13:26:44 +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
b4efae0883
Remove bad tests and tweak numbers for better debugging 🧪
2019-11-28 20:38:21 +01:00
Laurenz
833166c3bf
Fix bugs 🚧
2019-11-23 00:09:46 +01:00
Laurenz
6ff60bc368
Fix secondary non-origin alignment 🚧
2019-11-22 20:15:00 +01:00
Laurenz
4ab7ec6a9a
Specify both axis with align function ➕
2019-11-22 15:54:39 +01:00
Laurenz
ebff8eb038
Fix spacing bugs 🚧
2019-11-21 17:50:51 +01:00
Laurenz
131e81baaf
Fix flex primary expansion 🚧
2019-11-21 16:14:26 +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
6afc84cb9d
Small improvements to stack layouter 🍁
2019-11-19 22:46:06 +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
4d0bdc4ca4
Axes updating for flex layouter 📐
2019-11-17 14:51:31 +01:00
Laurenz
1f009b5b95
Allow multiple subsequent spaces 📅
2019-11-17 12:09:18 +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
271af7ed03
Parse keyword arguments 📋
2019-11-06 23:18:48 +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
b5d8b8f4a5
Token spans 🔜 🔙
2019-10-30 21:13:12 +01:00
Laurenz
ccc4639c7d
Improve documentation comments 📜
2019-10-30 20:13:28 +01:00
Laurenz
b4be25e43b
Prettify peeking and rearrange syntax/parsing modules 🧶
2019-10-24 19:10:03 +02:00
Laurenz
ecf0ff4d05
Introduce a set of macros for writing functions more concisely 🎁
2019-10-23 00:21:40 +02: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
Laurenz
9a1d57a11a
Implement context-modifying align 🧩
2019-10-17 09:28:06 +02:00
Laurenz
e87a34a4d0
Rearrange layouting contexts ♻
2019-10-16 22:32:40 +02:00
Laurenz
58693486f9
Allow center alignment 📐
2019-10-16 21:58:22 +02:00
Laurenz
f2f05e07b0
Implement space extension (multipage) ➕
2019-10-16 21:31:14 +02:00
Laurenz
a3c667895e
Refactor the main layouter ♻
2019-10-15 18:15:36 +02:00
Laurenz
0727713424
Fix double-spaces bug 🚧
2019-10-15 09:07:03 +02:00
Laurenz
5473e3903a
Refactor the text layouting ♻
2019-10-14 23:33:29 +02:00
Laurenz
c768b8b61f
Refactor stack and flex layouter ♻
2019-10-14 21:04:12 +02:00
Laurenz
5e41672a91
Refactor and refine PDF exporter ♻
2019-10-14 18:07:18 +02:00
Laurenz
7c0899b537
Run rustfmt 🚿
2019-10-13 13:10:21 +02:00
Laurenz
5c04185892
Reformat some things 🧺
2019-10-13 13:09:39 +02:00
Laurenz
e2d17aa9d9
Move functions to command-based architecture ✈
2019-10-13 12:36:45 +02:00
Laurenz
463e4ebd82
Refactor layout types 🚧
2019-10-13 12:08:07 +02:00
Laurenz
6f22e4f13c
Render debug boxes 🧭
2019-10-11 20:28:22 +02:00
Laurenz
c0e4fd55e6
Create test runner which renders layouts to images 🗺
2019-10-11 17:53:28 +02:00
Laurenz
8f788f9a4f
Add standard `align` function and support right-alignment ➡️
2019-10-10 23:38:03 +02:00
Laurenz
61470fba68
Basic positional argument parsing 🗃
...
Supported types are identifiers, strings, numbers, sizes and booleans.
2019-10-10 23:35:16 +02:00
Laurenz
f22a307000
Extract into separate repository 🧱
2019-10-09 19:46:42 +02:00
Laurenz Mädje
b96a7e0cf3
Reuse font loader across compilations 🔋
2019-07-28 22:27:09 +02:00
Laurenz Mädje
51faad45ad
Reformat where clauses 🎈
2019-07-28 21:42:18 +02:00
Laurenz Mädje
19be053cc3
Create some benchmarks 📊
2019-07-28 21:03:33 +02:00
Laurenz Mädje
6c8b5caa9f
Improve subsetter testing ✔
2019-07-27 21:15:10 +02:00
Laurenz
7eec0b8dd7
Add more tests for table parsers 🔋
2019-06-25 21:07:06 +02:00
Laurenz
030d301f0c
Refactor subsetter 🧰
2019-06-23 13:32:47 +02:00
Laurenz
7b2a4aa040
Split font module into submodules 🧱
2019-06-22 20:41:04 +02:00
Laurenz
864ae9f604
Parse loca table 🔨
2019-06-22 19:43:06 +02:00