Commit Graph

407 Commits

Author SHA1 Message Date
Tom Alexander
bbb9b8d9d3
Partial simple is working. 2020-05-09 14:53:53 -04:00
Tom Alexander
ad498abb74
Merge branch 'rework_errors' into partial 2020-05-09 14:33:33 -04:00
Tom Alexander
98a0145760
Adding a comment. 2020-05-09 14:33:13 -04:00
Tom Alexander
5d7c991bf0
Simplified the RenderError class. 2020-05-09 14:27:42 -04:00
Tom Alexander
05b56e83a9
Finished creating WalkError. 2020-05-09 14:22:36 -04:00
Tom Alexander
f2f6404017
Compiles again. 2020-05-09 14:18:45 -04:00
Tom Alexander
d758a71fb4
Ported the get_loop_elements wrapper. 2020-05-09 14:14:22 -04:00
Tom Alexander
2712126b3c
Need to do loop elements. 2020-05-09 14:10:56 -04:00
Tom Alexander
fcb2f3fc4d
Going extreme: removing all fields and unifying all walk errors. 2020-05-09 14:00:19 -04:00
Tom Alexander
b20368c586
Starting to create a WalkError type for walking that will not bubble up. 2020-05-09 13:54:39 -04:00
Tom Alexander
7d63d6ef7b
Merge Cant and Wont Walk. 2020-05-09 13:51:02 -04:00
Tom Alexander
2108f5cace
Remove CantRender, it was unused. 2020-05-09 13:46:12 -04:00
Tom Alexander
efd103b84a
Running into a lifetime issue 2020-05-08 22:34:58 -04:00
Tom Alexander
2f515e068d
Implemented the renderer logic.
I should just need to implement ContextElement at this point.
2020-05-08 22:22:30 -04:00
Tom Alexander
b45448edbd
Moved ParametersContext to its own file. 2020-05-08 22:12:35 -04:00
Tom Alexander
1a6db195cb
Starting a context for partial parameters. 2020-05-08 20:58:32 -04:00
Tom Alexander
f240b877b8
Start of rendering partials. 2020-05-08 19:24:32 -04:00
Tom Alexander
ec321a17ca
Adding a v0 to partial_jump_around_one to prove that the partial parameters are inserted 1 level above the current context. 2020-05-08 18:48:33 -04:00
Tom Alexander
50c03b4f0f
Expanding the partial jump around tests. 2020-05-08 18:34:49 -04:00
Tom Alexander
f47b91f8e7
Starting a more complicated test for partials to investigate scoping. 2020-05-08 18:19:33 -04:00
Tom Alexander
7087157ed3
Add partial test for walking up context vs parameters 2020-05-07 19:28:22 -04:00
Tom Alexander
0fcb70927c
Add an initial test of partial parameters 2020-05-07 19:12:45 -04:00
Tom Alexander
467a810569
Merge branch 'exists' into render 2020-05-06 20:33:02 -04:00
Tom Alexander
dedfa79630
Do a truthiness check on references before printing them. 2020-05-06 20:30:03 -04:00
Tom Alexander
b45688351e
Rendering a reference appears to do a truthiness check because false renders an empty string despite rendering as "false" in an array element. 2020-05-06 20:13:33 -04:00
Tom Alexander
0f47000a9b
Add support for the exists tag. 2020-05-06 19:10:09 -04:00
Tom Alexander
35f1ba8447
Merge branch 'walk_up_context' into render 2020-05-05 20:47:58 -04:00
Tom Alexander
3cf47fa1a8
Rename the new functions to replace the old functions. 2020-05-05 20:46:31 -04:00
Tom Alexander
18f9fb7f57
Delete old render functions. 2020-05-05 20:43:53 -04:00
Tom Alexander
05527377c4
Finish porting over the walk test. 2020-05-05 20:38:42 -04:00
Tom Alexander
9c414d4d06
Fixed rendering else blocks. 2020-05-05 20:32:30 -04:00
Tom Alexander
5760566be0
Start of porting over the walk tests. 2020-05-05 20:22:25 -04:00
Tom Alexander
26fe996b0d
Implement the new render functions. 2020-05-05 19:51:07 -04:00
Tom Alexander
a3bb8e47c1
Implemented the backtracing logic for walking. 2020-05-04 23:45:21 -04:00
Tom Alexander
6bcc66dff5
Adding NotFound error type. 2020-05-04 23:36:13 -04:00
Tom Alexander
033fc9de6b
Implement walking for a single segment, 2020-05-04 23:10:35 -04:00
Tom Alexander
c3fe7b47af
Added a test for backtracking.
DustJS appears to not do any backtracking.
2020-05-03 16:49:34 -04:00
Tom Alexander
2b6c3990a9
Add test for a multi-step walk into a parent context.
This test proves that the dynamic scoping does not add the intermediate steps when doing a multi-step walk.
2020-05-03 16:32:29 -04:00
Tom Alexander
45facfed0d
Improve the walk up test to prove that DustJS is doing dynamic scoping, not lexical scoping. 2020-05-03 16:13:29 -04:00
Tom Alexander
9adb88d132
Added a test case for walking up the context 2020-05-03 15:47:21 -04:00
Tom Alexander
e957caf386
Render the else block in sections if the path does not exist or if the path can't be walked.
This fixes all existing compliance tests.
2020-05-03 15:29:02 -04:00
Tom Alexander
cc6dbefcdb
Implement specials in the renderer. 2020-05-03 14:52:08 -04:00
Tom Alexander
7f65e73229
Merge branch 'bug_tags_separated_by_whitespace' into render 2020-05-03 14:46:12 -04:00
Tom Alexander
bafff8e7a0
Finished transitioning to the new top-level ignored whitespace template element. 2020-05-03 14:44:09 -04:00
Tom Alexander
908ae078b0
Start of making ignored whitespace a top-level template element to handle it in a more generic fashion. 2020-05-03 13:43:49 -04:00
Tom Alexander
b8c59f012b
Expanded the test definition and fixed part of the problem. 2020-05-03 13:21:02 -04:00
Tom Alexander
7670db9259
Identified an issue where tags separated by only whitespace are breaking parsing. 2020-05-03 13:07:27 -04:00
Tom Alexander
f97bb25ca8
Integrated the new span class 2020-05-03 12:48:02 -04:00
Tom Alexander
b8e8f19724
Implemented a new span to trim leading whitespace.
Through my experiements I have concluded that DustJS trims whitespace at the front of a line. To handle this, I implement a new parser that matches a newline followed by any amount of whitespace. This should allow me to trim whitespace at the head of the line because spans start immediately after a tag is closed. So, for example:

```
{foo}
  bar
{/foo}
```

Would be:

```
{foo}\n  bar{/foo}
     ^     ^
     \____/
      span
```

So while there is no magical "start of line" detector like in regular expressions, the first start of a line in a span will always be preceded with a newline character except for the opening of the document. For handling the opening of the document I am already trimming the whitespace in the `template()` parser.
2020-05-03 12:28:55 -04:00
Tom Alexander
31029bf50b
Add a test for whitespace inside the template.
This is similar to the surrounding whitespace test but for whitespace inside of a tag as opposed to before/after the first element of the template.
2020-05-02 19:30:23 -04:00