Martin
c44ecbfbd2
Move to exclusively oneshot benchmarks with Iai fork ( #41 )
2021-08-18 18:12:26 +02:00
Laurenz
011865ab5c
Memory loader
2021-08-18 14:25:49 +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
c53d98a22f
More logical ordering and naming
2021-08-17 12:49:48 +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
9462fb17b3
Convert single-field structs to tuple structs
2021-08-16 19:15:03 +02:00
Laurenz
cb0aab3cfa
Change how functions are called
2021-08-16 18:14:58 +02:00
Laurenz
ba6b91e2ee
Editable source files
2021-08-16 14:40:02 +02:00
Laurenz
7e6e7e928c
Adjust macros to new version
2021-08-14 23:53:57 +02:00
Laurenz
6ae6d86b9c
Separate type for string values
2021-08-14 15:55:39 +02:00
Laurenz
fcb4e45118
Fix bug on unix again
2021-08-13 19:37:51 +02:00
Laurenz
f6814b7732
Optimize memory sizes
2021-08-13 18:17:24 +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
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
42a27b48df
Change derive order
2021-07-29 22:27:10 +02:00
Laurenz
2c6127dea6
Refactor state
2021-07-29 13:28:19 +02:00
Laurenz
7d15dc634b
Move font family and refactor alignment
2021-07-29 12:28:54 +02:00
Laurenz
853361338b
Better addition and iteration for array, dict and template
2021-07-29 12:01:06 +02:00
Laurenz
312dcd070c
Move EcoString and OptionExt into util
2021-07-29 11:35:49 +02:00
Laurenz
6ebe621834
Use last instead of next_back
2021-07-27 18:53:09 +02:00
Laurenz
39a561f2bb
Slightly more expressive method name
2021-07-26 00:29:41 +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
88d3be2581
Remove PageState::new
2021-07-25 23:41:04 +02:00
Laurenz
c97b3078eb
Merge font and par state into text state
2021-07-25 12:10:44 +02:00
Laurenz
ec5384c97f
State-based monospace handling
2021-07-25 01:16:38 +02:00
Laurenz
dcfbf95220
Fix comment
2021-07-25 01:03:38 +02:00
Laurenz
adb71ee040
Move and refactor
2021-07-25 01:03:38 +02:00
Laurenz
927f1154fa
More efficient function representation
2021-07-21 16:55:32 +02:00
Laurenz
929f4d64fe
Switch Loader from Option to io::Result
2021-07-21 12:27:40 +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
5edbd3a5b5
Use array's IntoIterator impl and nested or patterns
...
*yay*
2021-07-16 12:07:15 +02:00
Laurenz
81f2f8f4c3
Optimize scanner and tokenizer
2021-07-13 15:24:26 +02:00
Laurenz
9fe9b95b7f
Simpler casting
2021-07-11 13:20:53 +02:00
Laurenz
891e0c5fa6
Remove warnings from parsing and casting
2021-07-10 23:14:46 +02:00
Laurenz
982ce85976
Move comparisons into standard traits
2021-07-10 23:10:35 +02:00
Laurenz
6a4823461f
Reference-count complex values
...
Rename some nodes types
2021-07-10 23:10:17 +02:00
Laurenz
36b3067c19
Eco string 🌱
2021-07-10 13:07:39 +02:00
Laurenz
4fb58acafd
Fix bound
2021-07-09 10:27:45 +02:00
Laurenz
0c74290519
Compare functions and templates by identity
2021-07-08 23:36:20 +02:00
Laurenz
02b586cc36
Add lots of Eq impls
2021-07-08 23:16:02 +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
911b581834
Optimize scanner performance
2021-06-30 16:43:11 +02:00
Laurenz
65c0c5607e
Make clippy a bit happier
2021-06-30 11:48:51 +02:00
Laurenz
470f8001a1
No more collisions between syntax::Tree and layout::Tree
2021-06-30 11:40:27 +02:00
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