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
20a1fd8bc7
Remove root node
2022-02-02 20:33:19 +01:00
Laurenz
c5e05ac0ea
Rename `into_block` to `pack`
2022-02-02 17:17:41 +01:00
Laurenz
88e50a55af
Pass arguments to call and construct directly by value
2022-02-02 16:32:30 +01:00
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
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
Laurenz
6a6753cb69
Better function representation
2022-02-01 12:26:13 +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
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
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
e74ae6ce70
Make all nodes into classes
2022-01-08 00:20:48 +01:00
Laurenz
5fd9c0b0d7
Lift styles out of individual nodes
2022-01-05 23:55:06 +01:00
Laurenz
f174134aa2
Style chains
2021-12-30 12:12:19 +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
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
Laurenz
3a15922d2f
X/Y abstractions
2021-11-26 16:32:06 +01:00
Laurenz
4f9e5819bb
2d alignments with plus operator
2021-11-23 12:45:20 +01:00
Laurenz
63c274e7f6
Make clippy happier and remove `Str`
2021-11-15 17:06:43 +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
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
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
3968181622
Replace `..` syntax with `range` function
2021-10-25 13:38:32 +02:00
Laurenz
9ac125dea8
Rename `State` to `Style` and move it into its own module
2021-10-10 21:04:10 +02:00
Laurenz
f4ed775df0
Make `none` spreadable
2021-10-10 12:16:28 +02:00
Laurenz
ea921aca5d
Blocks directly in template also scope
2021-09-15 13:12:07 +02:00
Laurenz
5de791d9e6
Rename `SyntaxTree` to `Markup`
...
Also `SyntaxNode` -> `MarkupNode`.
2021-09-15 13:05:01 +02:00
Laurenz
f592662aa0
Rename `Arguments` to `Args`
2021-09-10 12:27:33 +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
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
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
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
6ae6d86b9c
Separate type for string values
2021-08-14 15:55:39 +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
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
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
312dcd070c
Move EcoString and OptionExt into util
2021-07-29 11:35:49 +02:00
Laurenz
adb71ee040
Move and refactor
2021-07-25 01:03:38 +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
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
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
0c74290519
Compare functions and templates by identity
2021-07-08 23:36:20 +02:00
Laurenz
5a500fb8a7
Range operator
2021-07-08 19:12:07 +02:00
Laurenz
17e8946884
Remove color literals ( #39 )
2021-06-30 22:32:24 +02:00
Laurenz
470f8001a1
No more collisions between syntax::Tree and layout::Tree
2021-06-30 11:40:27 +02:00
Laurenz
422b8e640f
With expressions
2021-06-26 18:07:05 +02:00
Laurenz
62ecd31af2
Streamline template evaluation
2021-06-18 13:08:39 +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
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
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
7218892c72
Refactor path handling
2021-06-01 12:55:07 +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
118fc1014b
Leaner argument parsing
2021-05-18 21:32:40 +02: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
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
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
5157c1e276
Documentation fixes ✔
2021-03-03 23:32:29 +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
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
58f799c41c
Early quit loop when body returns error 🛑
2021-02-12 23:06:04 +01:00
Laurenz
a2fcc1bf28
Small fixes ♻
2021-02-11 22:24:42 +01:00