Commit Graph

1032 Commits

Author SHA1 Message Date
Laurenz d3ccd55d4b Split up styled and sequence template 2022-02-02 16:18:10 +01:00
Laurenz a7b403fd74 Rename `Node` to `Template` 2022-02-02 16:02:23 +01:00
Laurenz 0a1916c1e4 Remove width from backlog and last region 2022-02-02 15:25:43 +01:00
Laurenz bdb1c008f2 Allow set & show only directly in markup 2022-02-02 11:28:31 +01:00
Laurenz 7c33c1e691 Make `Add` for `Node` a bit more efficient 2022-02-02 10:40:33 +01:00
Laurenz a3f151df82 Fix filename 2022-02-02 10:40:26 +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 144c2957e1 Le Rêfectéur 2022-02-04 11:28:39 +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
Martin Haug e32e9faa53 Fix incremental group bug 2022-02-03 11:31:53 +01:00
Laurenz 6a6753cb69 Better function representation 2022-02-01 12:26:13 +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 b1a82ae22d Remove `markup_while` 2022-01-31 11:16:31 +01:00
Laurenz 490819a3d0 Reorder succession rules 2022-01-31 11:05:59 +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 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 3cad6bf607 Allow to add `none` and node 2022-01-29 18:14:51 +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
Laurenz c183ed3c15 Mutex comes from tex and we don't want any 2022-01-27 23:07:10 +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 cd7630415f Don't do font fallback for unshapable newlines 2022-01-17 16:48:16 +01:00
Laurenz 0c5243fa80 Basic tables 2022-01-17 16:01:01 +01:00
Laurenz 4abdafcd15 Faster byte/utf-16 offset conversions 2022-01-13 19:55:32 +01:00
Laurenz b3062ee880 Make use of new Rust 1.58 formatting feature 2022-01-13 18:43:18 +01:00
Laurenz 8013a0d0e6 More heading configuration 2022-01-13 14:14:34 +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 5fd9c0b0d7 Lift styles out of individual nodes 2022-01-05 23:55:06 +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
Martin Haug 289122e83c Deal with offside rule and remove RightWhitespace 2021-11-29 12:06:41 +01:00
Laurenz 12f7335ac3 Clarity and bugfix
Fixes a bug where validation would wrongly reject an atomic primary reparse due to trailing whitespace.

Co-Authored-By: Martin <mhaug@live.de>
2021-11-28 22:32:20 +01:00
Martin Haug e05eb5fda5 Code Review: Parser, I can't let you do this 2021-11-28 18:18:45 +01:00
Martin Haug edc686d738 Make incremental parsing simpler and move it somewhere else 2021-11-27 16:10:22 +01:00
Martin Haug fdb9d0743d Refactoring and bugfixes 2021-11-18 16:21:45 +01:00
Martin Haug 3162c6a83a Comments and neighbors 2021-11-10 20:41:10 +01:00
Martin Haug 91f2f97572 Multiple replacements, escapes 2021-11-09 13:34:23 +01:00
Martin Haug 7a631d8b09 Simplify node mode management 2021-11-09 13:07:55 +01:00
Martin Haug 9141cba6a9 Deal with the effects of keywords 2021-11-08 12:01:35 +01:00
Martin Haug 0663758fbb Tests
- length updates
- dealing with keywords and comments
2021-11-07 19:43:01 +01:00
Martin Haug eba7fc34ef Incremental-safety based approach 2021-11-06 16:07:21 +01:00
Martin Haug 7016ab0d12 Make stuff more elegant 2021-11-03 11:03:00 +01:00
Martin Haug 1e4cab393e Introduce incremental parsing 2021-11-02 12:06:22 +01:00
Laurenz 179a9f4798 Clarifications and small improvements 2021-12-30 17:02:19 +01:00
Laurenz f174134aa2 Style chains 2021-12-30 12:12:19 +01:00
Laurenz f5dcb84e36 Make clippy a bit happier 2021-12-30 12:00:12 +01:00
Laurenz bd304b99e5 Tidying 2021-12-28 13:41:26 +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 Haug accf70949d Make column child frames expand horizontally 2021-12-27 14:04:25 +01:00
Martin Haug ee12bf6716 Iterate over target regions instead in columns loop 2021-12-27 13:41:57 +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 958f74f777 Set Rules Episode VIII: The First Macro 2021-12-16 14:43:02 +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 fe21c4d399 Set Rules Episode III: Revenge of the packer 2021-12-09 13:42:52 +01:00
Laurenz 40b87d4066 Set Rules Episode II: Attack of the properties 2021-12-07 16:36:39 +01:00
Laurenz 26bdc1f0f6 Set Rules Episode I: The Phantom Style 2021-12-05 12:54:03 +01:00
Martin Haug 738ff7e1f5 Reduce the size of the `FramesEntry` struct and bump edition 2021-12-13 15:56:14 +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 2982020480 Bump pdf-writer 2021-12-04 21:55:23 +01:00
Martin Haug d971ac9a8c Add a producer info for the PDF 2021-12-02 17:24:52 +01:00
Laurenz bfa9962632 Remove baseline weirdness 2021-12-02 14:48:12 +01:00
Laurenz f3bdc9d3da Syntax highlighting 2021-11-30 18:55:50 +01:00
Laurenz e4e4c1876f Fix square and circle width & height 2021-11-29 16:13:53 +01:00
Laurenz 67705e2038 Fix vertical image expansion 2021-11-29 15:09:29 +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 50bd863471 More independent placed node 2021-11-26 23:51:18 +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 304d9dd110 Small style changes 2021-11-24 17:00:10 +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 02f114d072 Remove decorum 2021-11-22 15:50:35 +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 e869c899bc More intuitive auto image sizing in grid 2021-11-17 22:29: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 0cdf17216f Abstraction for fr resolving 2021-11-16 18:15:47 +01:00
Laurenz 79638d4bbd Don't wrap already layoutable nodes into flows/pars unnecessarily 2021-11-16 12:47:14 +01:00
Laurenz 73c4701749 Introduce `SizedNode` 2021-11-16 11:40:42 +01:00
Laurenz 0e0f340502 Revert page and inline levels 2021-11-16 10:41:30 +01:00
Laurenz bc118634ac Remove alignment from stack 2021-11-16 10:22:46 +01:00
Laurenz 210c4d9373 Move `lang` functionality into `par` 2021-11-16 00:37:33 +01:00
Laurenz 370802de13 Simplify `FlowNode` a bit 2021-11-16 00:32:41 +01:00
Laurenz 972c940e07 Introduce `FlowNode` 2021-11-16 00:12:43 +01:00
Martin Haug bcde4a3e51 Fix a grid constraint 2021-11-27 15:05:26 +01:00
Martin Haug 5677766715 Fix some comments 2021-11-24 20:07:44 +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 63c274e7f6 Make clippy happier and remove `Str` 2021-11-15 17:06:43 +01:00
Laurenz 8a38899c98 Tidying 2021-11-14 15:06:34 +01:00
Laurenz 14048937b8 Search for fonts in the project directory 2021-11-14 13:13:27 +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 95866d5fc9 Tidy up AST 2021-11-08 01:37:49 +01:00
Laurenz 8117ca9950 Deduplicate trivia search 2021-11-06 15:49:39 +01:00
Laurenz 41bdafb578 Faster parser 2021-11-06 15:49:39 +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 f0c9635db5 Notes 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 42afb27cef Add documentation 2021-11-05 13:44:50 +01:00
Martin Haug 49fb3cd4e2 Code Review: Life is Like a Box of Iterators 2021-11-05 13:44:50 +01:00
Martin Haug 7d34a548cc Reorganize syntax module 2021-11-05 13:44:50 +01:00
Martin Haug 2e7d359e59 Unicode escape error moved to tokenizer 2021-11-05 13:44:49 +01:00
Martin Haug c569e14c07 Improve error handling 2021-11-05 13:44:49 +01:00
Martin Haug 1c0ac793d2 Slim `NodeKind` memory footprint 2021-11-05 13:44:49 +01:00
Martin Haug 84d35efee3 Less owning, more iterating 2021-11-05 13:44:49 +01:00
Martin Haug 4875633acf Change parser 2021-11-05 13:44:49 +01:00
Laurenz ea6ee3f667 Fix page breaks in lists and enums 2021-11-02 10:42:32 +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 feff013abb More useful `Spec` helpers 2021-10-31 14:40:15 +01:00
Laurenz 564cb7e989 Fix panic in pad node 2021-10-31 13:51:28 +01:00
Laurenz 4645d1a517 Switch to borrowed strings in `split_lines` 2021-10-29 16:36:09 +02: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 5c534fb428 Simplify node construction 2021-10-26 17:14:11 +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 b42ecbd6a6 Simplify decorations 2021-10-23 20:24:35 +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 61fdc85b13 Refactor a bit 2021-10-05 23:23:09 +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 58d1cc68d9 Let `h`, `v` and `pagebreak` return template 2021-10-05 19:30:12 +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 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 4b2c6334d0 Change precedence of range expression 2021-10-05 17:19:48 +02:00
Laurenz c25c6a35b2 Simpler and more versatile row and column gutter arguments 2021-10-02 19:35:02 +02:00
Laurenz 1d60525690 Fix panic in grid due to empty auto row 2021-10-02 18:41:03 +02:00
Laurenz 2818ceee44 New default fonts 2021-09-30 22:50:14 +02:00
Laurenz 30f302f7ff Treat lone hashtag as text 2021-09-30 19:41:28 +02:00
Laurenz 9e78dbe525 Better function and closure pretty printing 2021-09-30 19:07:17 +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 989d344d3d Implement `Display` for `Tracepoint` 2021-09-29 00:10:39 +02:00
Laurenz a0065eef86 Make file system loader serializable 2021-09-29 00:10:21 +02:00
Laurenz 0e89facb53 Allow linear values for text edges 2021-09-28 10:53:54 +02:00
Laurenz f1ab290572 Refactor line reordering from callback to iterator 2021-09-27 22:45:29 +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 6c478face4 Fix paragraph constraints
Co-Authored-By: Martin <mhaug@live.de>
2021-09-27 11:38:18 +02:00
Laurenz 19e17cc6ac Simplify decoration handling 2021-09-26 12:43:45 +02:00
Laurenz a493b9533a More useful `Debug` impls 2021-09-26 12:24:24 +02:00