Commit Graph

1679 Commits

Author SHA1 Message Date
Laurenz 4bb6240b40 Make `Relative` generic 2022-04-07 18:04:29 +02:00
Laurenz 1192132dc0 Rename length-related types
`Fractional` => `Fraction`
`Relative` => `Ratio`
`Linear` => `Relative`
2022-04-07 16:19:51 +02:00
Laurenz eb22eed31b Make chinese justification less bad 2022-04-07 12:51:03 +02:00
Laurenz 3d52387eea Rework style chains 2022-04-07 11:07:00 +02:00
Laurenz 20b4d590b3 Fix wrong `search_range` computation 2022-04-05 17:03:24 +02:00
Laurenz b8233a9e01 Don't allow empty lists and enums 2022-04-05 15:10:15 +02:00
Laurenz b865accae6 Don't allow headings to span multiple lines 2022-04-05 15:04:31 +02:00
Laurenz 23d108c8e0 Font fallback 2022-04-03 13:55:58 +02:00
Laurenz beca01c826 Methods 2022-03-18 23:43:58 +01:00
Laurenz 77d153d315 Add `in` and `not in` operators 2022-03-15 15:27:36 +01:00
Laurenz ae0a56cdff Non-returning error macro 2022-03-15 11:30:13 +01:00
Martin Haug 6f5b721fe5 CR: I'm gonna make him a refactor he can't refuse 2022-03-17 10:50:51 +01:00
Martin Haug 4d617bcd67 `LineNode` 2022-03-16 12:36:50 +01:00
Laurenz 288a926fea Knuth-Plass and MicroType 2022-03-14 20:52:32 +01:00
Laurenz 2890a156d2 Remove classes and improve naming 2022-03-12 14:24:24 +01:00
Laurenz 5ac7eb3860 Rename template to content 2022-03-11 23:36:06 +01:00
Laurenz e6b532391d More restructuring 2022-03-11 11:58:56 +01:00
Laurenz b71113d37a Hyphenation 2022-03-08 19:49:26 +01:00
Laurenz 3ca5b23823 Reorganize library 2022-02-28 23:54:34 +01:00
Martin Haug 4f09233bda Enable join collection for control flow constructs 2022-02-28 15:41:38 +01:00
Martin Haug 8e0f5993f1 Make loops and functions react to control flow 2022-02-28 13:41:15 +01:00
Laurenz b0f4b13f6d Basic justification 2022-02-25 20:48:38 +01:00
Laurenz efde5cac88 Lower and upper on templates 2022-02-24 19:56:01 +01:00
Laurenz ecd2bca606 List above & below 2022-02-24 19:15:49 +01:00
Laurenz 49c0bac44d First-line indents
Co-Authored-By: Martin Haug <mhaug@live.de>
2022-02-24 19:15:11 +01:00
Laurenz e1f29d6cb9 Rework the core context 2022-02-23 14:53:55 +01:00
Laurenz 2bf32c51bc Remove layout cache 2022-02-22 12:42:02 +01:00
Laurenz c7e52f2048 Refactor paragraph layout 2022-02-21 16:47:06 +01:00
Laurenz 61d1e1a683 Remove layout-cache feature 2022-02-18 17:33:13 +01:00
Laurenz e01970b20a Basic show rules 2022-02-18 16:57:53 +01:00
Laurenz 05ec0f993b Headers and footers 2022-02-18 01:07:50 +01:00
Laurenz acae6e2a54 List label styling 2022-02-18 01:06:20 +01:00
Laurenz 980f898d55 Automatic list numbering 2022-02-17 23:00:30 +01:00
Laurenz 261f387535 Accept closures for heading styling 2022-02-17 18:12:13 +01:00
Laurenz 35610a8c6a Fallible layout 2022-02-17 17:41:45 +01:00
Laurenz c5e67af22b Merge eval and layout contexts into `Vm` 2022-02-17 17:32:56 +01:00
Laurenz c7a9bac992 Better debug implementations for numeric types 2022-02-17 12:14:50 +01:00
Laurenz 5965515a1e Allow escaping of `-` and `.` 2022-02-10 13:19:03 +01:00
Laurenz e089b6ea40 Set rules for everything 2022-02-09 12:34:19 +01:00
Laurenz 68503b9a07 Redesigned template layout 2022-02-07 20:00:21 +01:00
Laurenz 5d05c3f68a Refactor and fix style folding 2022-02-05 12:41:42 +01:00
Laurenz 20a1fd8bc7 Remove root node 2022-02-02 20:33:19 +01:00
Laurenz d3ccd55d4b Split up styled and sequence template 2022-02-02 16:18:10 +01:00
Laurenz bdb1c008f2 Allow set & show only directly in markup 2022-02-02 11:28:31 +01:00
Martin Haug fe70db1f4c New color stuff
- CMYK function
- More default colors
- Interpret RGB values as sRGB
2022-02-08 21:12:09 +01:00
Martin Haug 9a9c6f22c4 Add evasion of glyph shape for under- and overlines 2022-02-04 00:30:23 +01:00
Martin Haug bd0d0e10d8 Harmonize non-negative int arguments 2022-02-03 11:32:16 +01:00
Martin Haug 3f76aadb1a Add modulo 2022-02-03 11:32:16 +01:00
Martin Haug e6a0447f9d Add roman numeral and footnote formatting 2022-02-03 11:32:15 +01:00
Laurenz 20b1a38414 Switch from `Rc` to `Arc` 2022-01-31 16:47:00 +01:00
Laurenz fa57d86ed9 Fix another parser bug 2022-01-31 13:57:15 +01:00
Laurenz 8f37189d6f Fix incremental parsing bugs 2022-01-31 13:26:52 +01:00
Laurenz 8d1ce390e2 Rework strong and emph
- Star and underscore not parsed as strong/emph inside of words
- Stars/underscores must be balanced and they cannot go over paragraph break
- New `strong` and `emph` classes
2022-01-30 22:46:59 +01:00
Laurenz d7072f378f Also debug print syntax tree 2022-01-30 11:16:57 +01:00
Laurenz aeb036f4dc Fix that templates don't create a scope 2022-01-29 22:32:57 +01:00
Laurenz 44ebefbec2 Add `hide` class 2022-01-29 22:32:01 +01:00
Laurenz 24d513d891 Enable for loop over captured args 2022-01-29 21:36:25 +01:00
Laurenz 5c53b9ff60 Support for `wrap` 2022-01-28 22:32:53 +01:00
Laurenz 9c906f92c5 Parse `break`, `continue` and `return` expression 2022-01-28 21:01:36 +01:00
Laurenz 3a07603b66 Remove unnecessary group 2022-01-28 20:17:30 +01:00
Laurenz 76b1d4a93f Parse `show` and `wrap` expressions 2022-01-28 20:02:42 +01:00
Martin Haug 4f66907d08 Add Code Block syntax highlighting 2022-01-27 22:04:45 +01:00
Laurenz 3739ab7720 Export into rendered images 2022-01-24 17:39:49 +01:00
Laurenz db158719d6 Simplify CLI 2022-01-24 16:44:52 +01:00
Laurenz 36cae88799 Fix table panic 2022-01-18 13:46:56 +01:00
Laurenz 0c5243fa80 Basic tables 2022-01-17 16:01:01 +01:00
Laurenz b3062ee880 Make use of new Rust 1.58 formatting feature 2022-01-13 18:43:18 +01:00
Laurenz c7f52ed048 Add `even` and `odd` functions 2022-01-13 14:14:00 +01:00
Laurenz e74ae6ce70 Make all nodes into classes 2022-01-08 00:20:48 +01:00
Laurenz 0b62439090 Scoped styles 2022-01-07 13:26:51 +01:00
Laurenz af014cfe5e Tidy up styling 2022-01-07 10:46:55 +01:00
Laurenz f7e8624b4c Refactor 2022-01-05 15:06:42 +01:00
Martin Haug c994cfa7d8 Code Review: Your parsers were so preoccupied with whether they could 2022-01-04 00:21:33 +01:00
Martin Haug 98c96ba1cb Fix parser / space / error bug 2022-01-02 14:46:08 +01:00
Martin Haug 5f114e18eb Added a test framework for incremental parsing
Fix several errors:

- Indented markup is now reparsed right
- All end group errors will now fail a reparse
- Rightmost errors will always fail a reparse
2022-01-02 00:46:19 +01:00
Laurenz f174134aa2 Style chains 2021-12-30 12:12:19 +01:00
Laurenz 5d5d8a21cf Bump and lock dependencies 2022-01-01 12:23:00 +01:00
Martin Haug 7f7e14d95f Minor changes to columns 2021-12-28 00:23:42 +01:00
Martin Haug 37328f11ed Adjust column size and expansion handling 2021-12-27 19:01:36 +01:00
Martin 7efdcdf247 Apply simple suggestions from code review
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-12-27 12:33:53 +01:00
Martin Haug b22ce6f8b8 Introduce equal-width columns 2021-12-26 15:59:24 +01:00
Laurenz 438255519e Review One: A Set Rules Story 2021-12-22 19:19:32 +01:00
Laurenz 11565a40b3 Set Rules Episode IX: The Rise of Testing 2021-12-21 00:20:24 +01:00
Laurenz 2a3d0f4b39 Set Rules Episode VII: The Set Awakens 2021-12-15 20:27:41 +01:00
Laurenz 244ad386ec Set Rules Episode VI: Return of the Refactor 2021-12-15 12:49:20 +01:00
Laurenz 57f5c0a1b1 Set Rules Episode V: The Tests Strike Back 2021-12-15 11:12:38 +01:00
Laurenz ae38be9097 Set Rules Episode IV: A New Fold 2021-12-15 11:11:57 +01:00
Laurenz 40b87d4066 Set Rules Episode II: Attack of the properties 2021-12-07 16:36:39 +01:00
Martin Haug 7c829c5c1b Bump pdf-writer, svg2pdf and error messages
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-12-07 00:06:54 +01:00
Martin Haug f15ee7efb6 Add SVG capabilities 2021-12-06 14:58:57 +01:00
Laurenz bfa9962632 Remove baseline weirdness 2021-12-02 14:48:12 +01:00
Laurenz e915cc4ef0 No more duplicate debug prints due to incremental tests 2021-11-29 23:22:53 +01:00
Laurenz e4e4c1876f Fix square and circle width & height 2021-11-29 16:13:53 +01:00
Laurenz cae60ea0cc Go back to wrapping inline nodes 2021-11-29 13:12:50 +01:00
Laurenz e36b8ed374 Layout bugfixes 2021-11-29 12:06:38 +01:00
Laurenz 3a15922d2f X/Y abstractions 2021-11-26 16:32:06 +01:00
Laurenz 393d74f9bb Layout improvements 2021-11-25 20:51:16 +01:00
Laurenz 8a88f71cb1 Transformations 2021-11-23 22:04:08 +01:00
Laurenz c77c5a0f0a Simpler alignment resolving 2021-11-23 14:25:50 +01:00
Laurenz 4f9e5819bb 2d alignments with plus operator 2021-11-23 12:45:20 +01:00
Laurenz d3f6040ced Horizon alignment 2021-11-23 11:58:16 +01:00
Laurenz 0a974d86ba Welcome to Tigerland 2021-11-22 15:26:56 +01:00
Laurenz ed50661378 Castable optional and smart values 2021-11-29 16:47:35 +01:00
Laurenz cef46e6c40 Strokes 2021-11-20 15:51:07 +01:00
Laurenz 70c0dd7674 Small fixes 2021-11-19 13:16:43 +01:00
Laurenz 5a59bb4821 Page fill 2021-11-18 12:50:28 +01:00
Laurenz b2e6a29789 Refactoring 2021-11-18 00:58:32 +01:00
Laurenz d9c529347d Configurable paragraph alignment 2021-11-17 23:54:43 +01:00
Laurenz 095fa52be5 Placed node 2021-11-17 23:09:23 +01:00
Laurenz 89f2e71852 Align node 2021-11-17 17:09:19 +01:00
Laurenz 9a800daa82 Image fit modes 2021-11-16 21:32:29 +01:00
Laurenz 79638d4bbd Don't wrap already layoutable nodes into flows/pars unnecessarily 2021-11-16 12:47:14 +01:00
Laurenz 0e0f340502 Revert page and inline levels 2021-11-16 10:41:30 +01:00
Laurenz 210c4d9373 Move `lang` functionality into `par` 2021-11-16 00:37:33 +01:00
Laurenz 0ad0fa5a05 RTL tracking test 2021-11-20 13:26:28 +01:00
Martin Haug c020707ebc Add tracking to font function 2021-11-20 12:36:03 +01:00
Laurenz 38c5c36241 Final touches 2021-11-08 13:06:11 +01:00
Laurenz 75fffc1f9b Fine-grained capturing 2021-11-08 11:52:09 +01:00
Laurenz 515fe89c5e Style changes
Co-Authored-By: Martin <mhaug@live.de>
2021-11-05 13:46:42 +01:00
Martin Haug cf2e527a02 Code Review: No Patrick, question marks are not an instrument 2021-11-05 13:46:41 +01:00
Martin Haug 5c952d56d0 New error handling 2021-11-05 13:46:41 +01:00
Laurenz 65fac0e57c Refactoring
Co-Authored-By: Martin <mhaug@live.de>
2021-11-05 13:46:41 +01:00
Martin Haug 1c0ac793d2 Slim `NodeKind` memory footprint 2021-11-05 13:44:49 +01:00
Martin Haug 4875633acf Change parser 2021-11-05 13:44:49 +01:00
Laurenz c4a87e5e7c Number style -> type 2021-11-02 10:39:45 +01:00
Laurenz 072e7c710c Reduce namespace pollution 2021-11-02 10:39:45 +01:00
Martin Haug 8ccb7d6f15 Smallcaps, sub- and superscript, ligature ctrls... 2021-11-02 10:39:45 +01:00
Laurenz 5b344b663a Reorganize modules
Instead of separating functionality into layout and library, everything lives in the library now. This way, related things live side by side and there are no duplicate file names in the two directories.
2021-10-31 15:52:35 +01:00
Laurenz 564cb7e989 Fix panic in pad node 2021-10-31 13:51:28 +01:00
Laurenz 1af194f383 Dedent code blocks 2021-10-29 16:26:47 +02:00
Laurenz de6786eb28 Allow multiple template bodies 2021-10-29 16:04:55 +02:00
Laurenz d1ecb7e52e Add `move` function 2021-10-28 16:51:57 +02:00
Laurenz fb0cd3df6e Fr in stack and par 2021-10-26 14:56:10 +02:00
Laurenz 1ca4ff69e2 Trim `mailto:` and `tel:` from links 2021-10-26 14:51:57 +02:00
Laurenz 3968181622 Replace `..` syntax with `range` function 2021-10-25 13:38:32 +02:00
Laurenz adf52a873f Drop `iso-` prefix for A papers 2021-10-23 22:52:40 +02:00
Laurenz 5becb32ba4 Introduce page / block / inline levels 2021-10-23 20:23:47 +02:00
Laurenz c627847cb3 Remove directions from grid 2021-10-23 20:22:47 +02:00
Laurenz 6690bc2354 Revise block node contract
Frames produced by block nodes are now always treated as exactly one per
given region and a frame must not be larger than its respective region.
Any overflow must be handled internally. This means that stack and grid
don't need to search for fitting regions anymore, since the child has
already does that for them. This commit further moves stack spacing into
a new `SpacingNode`.
2021-10-23 20:22:47 +02:00
Laurenz 1e74f7c407 New `ShapeNode`
Replaces `BackgroundNode` and `FixedNode`
2021-10-23 20:22:47 +02:00
Laurenz 5f4dde0a6b Remove inline alignment from stack
The current inline alignment is very broken and leads to lots of subtle weirdness. Getting rid of it simplifies the stack's interface a lot. At a later point either:
- inline alignment will be added back in a better way, or
- all nodes will be able to expand or align themselves, meaning that the stack's children take care of their alignment
2021-10-23 20:22:47 +02:00
Laurenz 9ac125dea8 Rename `State` to `Style` and move it into its own module 2021-10-10 21:04:10 +02:00
Laurenz d4cc8c775d Move paint and colors into `geom` 2021-10-10 20:26:58 +02:00
Laurenz f4ed775df0 Make `none` spreadable 2021-10-10 12:16:28 +02:00
Laurenz c0f5cd011f Slim down and organize paper sizes
Co-Authored-By: Martin <mhaug@live.de>
2021-10-07 14:11:56 +02:00
Laurenz b69c0355ec Don't fit images to remaining height
Makes them really small if there's only little space left ...
2021-10-05 20:05:15 +02:00
Laurenz 3d0dcbea18 Error on out-of-range values in `rgb` 2021-10-05 19:55:15 +02:00
Laurenz 25b053ed93 Rename `length` to `size` in `square()` 2021-10-05 19:55:00 +02:00
Laurenz ae05dc0876 Always use first positional argument in `expect()`
This changes `#h(100)` from "missing argument: spacing" to "expected linear, found integer".
2021-10-05 19:45:38 +02:00
Laurenz 0a23bfbc23 Add `assert` function 2021-10-05 19:37:38 +02:00
Laurenz 155673c15e Paper longhand for page function 2021-10-05 19:23:45 +02:00
Laurenz 4ff1519bea Fill shorthand for font function 2021-10-05 19:19:55 +02:00
Laurenz dcdcf53831 Rename insert/ to elements/ 2021-10-05 18:51:21 +02:00
Laurenz 5e06941c63 Iterate over grapheme clusters instead of chars 2021-10-05 17:57:30 +02:00
Laurenz 00be5d36c4 Change indent requirements to allow alignment
Previously the following wouldn't work correctly because "Fourth" would have been a child of "Third".
```
3. Third
⎵. Fourth
```
2021-10-05 17:25:58 +02:00
Laurenz c25c6a35b2 Simpler and more versatile row and column gutter arguments 2021-10-02 19:35:02 +02:00
Laurenz 2818ceee44 New default fonts 2021-09-30 22:50:14 +02:00
Laurenz 6d26e15fbe Support `else if` 2021-09-30 19:07:06 +02:00
Laurenz 9e95502622 No hashtag before else anymore 2021-09-30 18:28:25 +02:00
Laurenz 0e89facb53 Allow linear values for text edges 2021-09-28 10:53:54 +02:00
Laurenz ed0c804017 Add spacing capabilities to stack function
- Named argument `spacing` controls spacing between any two template arguments
- Arbitrary linears in the list can produce arbitrary spacing
2021-09-27 22:23:26 +02:00
Laurenz e10b3d838a Fix panic due to bad alignments in stack function 2021-09-27 13:45:18 +02:00
Laurenz ff37a2893d More useful incremental checks
Co-Authored-By: Martin <mhaug@live.de>
2021-09-27 11:40:28 +02:00
Laurenz 1982a0639e Expand all but last region for broken up auto rows 2021-09-27 11:39:31 +02:00
Laurenz 5594868f8b Prevent paragraph from overflowing due to trailing linebreak 2021-09-25 23:35:27 +02:00
Laurenz ea921aca5d Blocks directly in template also scope 2021-09-15 13:12:07 +02:00
Laurenz b0b4607725 Set the correct base for grid cells 2021-09-10 15:10:34 +02:00
Laurenz 7f48e8fe66 Make user-facing "debug" representation use Debug instead of Display 2021-08-31 16:25:12 +02:00
Laurenz 3481d8cc81 More utility functions
- join("a", "b", "c", sep: ", ")
- int("12")
- float("31.4e-1")
- str(10)
- sorted((3, 2, 1))
2021-08-31 12:59:53 +02:00
Laurenz ee84bf7408 Add abs() function 2021-08-30 16:59:09 +02:00
Laurenz ff25573224 Lower- and uppercase string conversion functions 2021-08-30 16:39:16 +02:00
Laurenz e4e79990da Allow body for font function once again 2021-08-29 15:09:54 +02:00
Laurenz fab8bedd29 Primitive raster glyph drawing 2021-08-27 14:08:32 +02:00
Laurenz 17ea0d4ba9 Make font fallback disableable 2021-08-27 14:08:31 +02:00
Laurenz 148a06c070 Switch from state to decorations for underline/strikethrough/overline 2021-08-24 00:41:15 +02:00
Martin d546453880
Links! (#43)
Co-authored-by: Laurenz <laurmaedje@gmail.com>
2021-08-23 23:56:33 +02:00
Laurenz 0806af4aec Kerned PDF output 2021-08-23 13:21:44 +02:00
Laurenz c0377de653 Shorter/clearer field name for geometry types
Size { width, height } => Size { w, h }
Spec { horizontal, vertical } => Spec { x, y }
Gen { cross, main } => Gen { inline, block }
2021-08-21 19:08:47 +02:00
Laurenz 0dd4ae0a7a Prune derives 2021-08-21 17:30:21 +02:00
Laurenz a6f260ca39 Refactor layouting a bit
Notably:
- Handle aspect ratio in fixed node
- Inline constraint inflation into pad node
2021-08-19 15:52:15 +02:00
Martin fdab7158c9
Pattern properties (#42)
Included in this package are:
* Code review I: The unnamed review.
* Code Review II: How I met your review.
* Code Review III: Code, the final frontier. These are the voyages of the USS Review ...
2021-08-19 15:07:11 +02:00
Laurenz 594809e35b Library functions behave more imperatively
- Templates scope state changes
- State-modifying function operate in place instead of returning a template
- Internal template representation contains actual owned nodes instead of a pointer to a syntax tree + an expression map
- No more wide calls
2021-08-17 22:20:37 +02:00
Laurenz 9a798ce6f6 Make percentages for h and v relative to area instead of font size 2021-08-17 00:17:28 +02:00
Laurenz 6ae6d86b9c Separate type for string values 2021-08-14 15:55:39 +02:00
Laurenz 6a3385e4e7 Argument collection and spreading 2021-08-13 16:55:45 +02:00
Laurenz 144f208821 Add file information to spans 2021-08-13 14:33:58 +02:00
Laurenz d002cdf451 Named arguments for user defined functions 2021-08-12 16:07:42 +02:00
Laurenz ccb4be4da4 Make range-end exclusive 2021-08-12 14:54:52 +02:00
Laurenz eaa3cbaa9c Array and dictionary indexing 2021-08-12 13:56:23 +02:00
Laurenz 8207c31aec Minor refactorings
- Reorder parser methods and use `Pos` everywhere
- Remove tab special handling for columns and adapt heading/list/enum indent handling
- Don't panic when a file has an empty path
2021-08-10 11:28:12 +02:00
Laurenz 3932bb2cb9 New source loading architecture 2021-08-09 11:26:41 +02:00
Laurenz 3c92bad9a7 Pretty-printed diagnostics with traceback 2021-08-01 00:00:36 +02:00
Laurenz fbd3d19113 Call args span now includes parens 2021-07-31 22:41:06 +02:00
Laurenz e35fca54a0 Change indent from 4 to 2 spaces 2021-07-30 18:49:20 +02:00
Laurenz 1ee1d078e2 Fatal errors
- Makes errors fatal, so that a phase is only reached when all previous phases were error-free
- Parsing still recovers and can produce multiple errors
- Evaluation fails fast and can thus produce only a single error (except for parse errors due to an import)
- The single error that could occur during execution is removed for now
- Removes Value::Error variant
2021-07-30 18:49:19 +02:00
Laurenz 2c6127dea6 Refactor state 2021-07-29 13:28:19 +02:00
Laurenz 7aa3d2c2d6 No more excessive region cloning 2021-07-26 00:29:37 +02:00
Laurenz 56cbf96fe2 Move incremental test into separate function 2021-07-26 00:08:08 +02:00
Laurenz ec5384c97f State-based monospace handling 2021-07-25 01:16:38 +02:00
Laurenz adb71ee040 Move and refactor 2021-07-25 01:03:38 +02:00
Laurenz b0e5212973 Fs builder methods + tidy up 2021-07-21 11:28:33 +02:00
Laurenz 9488b1b850 Main context struct 2021-07-21 11:28:29 +02:00
Laurenz 8000783f95 FileId instead of Path + FileHash 2021-07-20 18:35:05 +02:00
Laurenz 891e0c5fa6 Remove warnings from parsing and casting 2021-07-10 23:14:46 +02:00
Laurenz 36b3067c19 Eco string 🌱 2021-07-10 13:07:39 +02:00
Laurenz 9950627789 Even shorter error annotations
Error annotations are now relative to the first following non-comment line.
2021-07-09 10:50:25 +02:00
Laurenz 0c74290519 Compare functions and templates by identity 2021-07-08 23:36:20 +02:00
Laurenz fd0b89a1d8 Rename Fill to Paint 2021-07-08 22:33:44 +02:00
Laurenz 7e2c217cbc Rename some library arguments
- font
  - color -> fill
  - shorthands for families and size
- decoration functions
  - color -> stroke
  - strength -> thickness
  - position -> offset
  - invert offsets: now positive goes downwards just like the rest of typst
2021-07-08 21:42:36 +02:00
Laurenz 551e3af9d0 Replace using with from 2021-07-08 21:16:16 +02:00
Laurenz 5c327e249e Switch to = for headings once again 2021-07-08 20:03:13 +02:00
Laurenz f85e5aac64 URL special case for line comments 2021-07-08 19:37:38 +02:00
Laurenz 5a500fb8a7 Range operator 2021-07-08 19:12:07 +02:00
Laurenz c5635d8a3f Handle missing arguments to with expr 2021-07-08 18:56:52 +02:00
Laurenz 44d8028b49 Allow wide calls only directly in templates 2021-06-30 22:49:11 +02:00
Laurenz 17e8946884
Remove color literals (#39) 2021-06-30 22:32:24 +02:00
Laurenz 45812b7001
Merge pull request #35 from typst/wide-calls
Wide calls
2021-06-30 11:04:53 +02:00
Laurenz d5d2b80699
Merge pull request #34 from typst/cfg-conditional
Put incremental compilation behind feature
2021-06-30 00:43:53 +02:00
Laurenz 2f44d10aa4 Make test separators commentable 2021-06-29 16:05:05 +02:00
Laurenz b2fb42cc70 Make even more use of wide calls 2021-06-29 16:00:46 +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
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 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 63cf361496 Make font take everything as keyword arguments 2021-06-25 18:14:19 +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 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 e2cdda67dc Refactor grid row layout 2021-06-15 16:34:41 +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
Martin Haug c28708aa19 Text decorations 2021-06-10 23:15:51 +02:00
Laurenz 5611c26577 Restructure tests 2021-06-10 16:46:01 +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 c7416f18bd Move invalid syntax tests into appropriate places 2021-06-09 10:51:19 +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 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
Martin Haug 37e0846037 Test cases for include and import 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
Laurenz 0bfee5b777 Refactored loading and cache architecture 2021-05-28 12:46:43 +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
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 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 8b58171d7c Reorganize test cases 2021-05-18 00:36:11 +02:00
Laurenz c975d0d5e9 Tidy up layouting code 2021-05-17 22:55:31 +02:00
Laurenz e65c2b949c Remove resource abstraction and handle images natively 2021-05-14 11:14:28 +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 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 a86cf7bd8c Refresh all reference images 2021-04-03 21:12:32 +02:00
Laurenz bfbbe8dcf8 Better paragraph layout tests 2021-04-03 21:12:32 +02:00
Laurenz c00cca3677 Refactor ♻ 2021-03-30 16:19:16 +02:00
Laurenz 12a604fec8 BiDi tests 2021-03-30 14:31:50 +02:00
Laurenz 79948c0c5e BiDi reordering 🔃
Co-Authored-By: Martin <mhaug@live.de>
2021-03-30 14:31:50 +02:00
Laurenz 47b4dab7ed Line breaking tests
Co-Authored-By: Martin <mhaug@live.de>
2021-03-30 14:31:49 +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 6720520ec0 Render svg emoji 🐳 2021-03-23 15:32:36 +01:00
Laurenz 3fb1f59f1e Bump tiny-skia to 0.5 🔼 2021-03-23 13:17:00 +01:00
Laurenz 98336bfafb Better font family definitions ✒ 2021-03-22 14:08:50 +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 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
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 f190d33d0c Better tests for pad function 2021-03-13 14:35:51 +01:00
Laurenz 3c74e4566a Faster compile times and test execution
- Optimize only dependencies, not the main crate
- Don't generate debug info
- Don't generate PDFs for all tets by default
2021-03-13 14:18:31 +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 ffcb8cd97a Fix test false positive for empty output ✔ 2021-03-12 13:57:47 +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 34f839c717 Improve tests 🔨 2021-03-03 22:48:54 +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 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 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 7092c50447 VS Code language support extension 🛠 2021-02-23 20:27:23 +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 05727bfc3a Reorganize tests 🔀 2021-02-20 23:34:33 +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 cc964e32c9 Better function call tests ✔ 2021-02-18 15:06:06 +01:00
Laurenz 84cdc85ca7 Refresh parser 🌊 2021-02-18 15:06:00 +01:00
Laurenz 2f4dc99cec Refresh tests 🌊 2021-02-17 21:30:20 +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 062d99f70f Document how to run tests 📝 2021-02-07 13:27:03 +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 dacd7dadc0 Fix uncompressed test image 2021-02-04 15:45:36 +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 e3139ed3ee Allow shortening locations from 1:x-1:y to x-y 🩳 2021-01-30 16:46:16 +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 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 2036663ed2 Capture variables in templates 🔍 2021-01-27 15:05:18 +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 7ced99bcd7 Line information for assertion failures 📍 2021-01-26 20:58:19 +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 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 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 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 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
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 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 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 22697f0c0c Simple regression testing with file-based comparisons 2020-10-13 12:34:11 +02:00
Laurenz 1736bfc194 Rename typstc -> typst ✏ 2020-10-13 11:47:29 +02:00
Laurenz dd4a4545a6 Move main back into src/ 📨 2020-10-12 21:26:58 +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 d3bc4ec073 Refactor layouting base 🪁 2020-10-11 22:38:30 +02:00
Laurenz 92c01da360 Switch back to custom geometry types, unified with layout primitives 🏞 2020-10-10 22:19:36 +02:00
Laurenz d2e220245d Move deco, pass and feedback into diagnostics module ↩ 2020-10-07 18:24:47 +02:00
Laurenz ef8aa763fa Shorten some names ↔ 2020-10-04 20:22:11 +02:00
Laurenz c1dd872b34 Remove unncessary wrappers and typedefs 🛑 2020-10-04 19:57:39 +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 0fc25d732d Port to kurbo 🎋 2020-10-03 13:23:59 +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 7cc279f7ae Replace line/column with byte positions 🔢 2020-09-30 17:25:09 +02:00
Laurenz 7143e10afc Streamline font handling a bit 📜 2020-09-30 13:18:42 +02:00
Laurenz 280cd91474 Remove superfluous star 2020-09-01 13:17:12 +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
Laurenz 181f756a9e Format everything with rustfmt! 💚 2020-08-30 22:18:55 +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 8a80503188 Tidier error output in main and tests 🧹 2020-08-17 16:18:55 +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 d90d921a91 Remove output files which sneaked into the repository 2020-08-14 20:55:10 +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 cbbc46215f Layout elements and pure rust rendering 🥏 2020-08-02 21:17:42 +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 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 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 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 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 78da2bdd5d Decoupled function parser 🔗 [WIP] 2020-01-21 17:09:31 +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 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 2ee5810fec Asyncify font loading 🪐 2020-01-06 12:41:42 +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 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 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 e40b57498d Render point grid as background 🌐 2019-11-25 20:29:35 +01:00
Laurenz 833166c3bf Fix bugs 🚧 2019-11-23 00:09:46 +01:00
Laurenz ebff8eb038 Fix spacing bugs 🚧 2019-11-21 17:50:51 +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 f6cb4d725e Update standard library functions 🎁 2019-11-17 15:16:37 +01:00
Laurenz 40c879e3c0 Arrange rendered images in a grid 🏢 2019-11-13 14:09:35 +01:00
Laurenz 580655a3bf Update style example once again 🎈 2019-11-11 16:53:16 +01:00
Laurenz 7d853cbea1 Update examples due to new syntax highlighting 🌹 2019-11-08 18:33:32 +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 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 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 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