Commit Graph

351 Commits

Author SHA1 Message Date
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
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
9a261aa870 Fixed lifetime issue 2020-05-02 16:08:39 -04:00
Tom Alexander
7b87e30ff9 Fixed returns but hitting lifetime issue 2020-05-02 16:04:10 -04:00
Tom Alexander
caa79d5ba2 Moving towards a generic trait wrapper to call between dynamic and static dispatch functions. 2020-05-02 15:55:38 -04:00
Tom Alexander
f0a69d12b9 First attempt at a section render function.
Running into an issue with generics vs dynamic references.
2020-04-28 20:46:29 -04:00
Tom Alexander
e5c4ba8c82 Add a Loopable trait for dust sections. 2020-04-28 19:34:52 -04:00
Tom Alexander
c961cf7ab8 Combine the render traits into a single context_element file. 2020-04-28 19:09:02 -04:00
Tom Alexander
41ad6179d1 Parse self-references and add a test for sections. 2020-04-28 19:02:43 -04:00
Tom Alexander
8e4f5e3229 Fixing warnings 2020-04-12 21:57:42 -04:00
Tom Alexander
883bda7a78 Added the signature for passing filters into the render function.
Added the signature for passing filters into the render function but I am not yet using the filters.
2020-04-12 21:54:15 -04:00
Tom Alexander
70cb107f86 Removing unused imports 2020-04-12 21:44:38 -04:00
Tom Alexander
7a28e6a9d4 Handle rendering json arrays and objects 2020-04-12 21:40:34 -04:00
Tom Alexander
24d2c1831c Handle missing references 2020-04-12 21:26:23 -04:00
Tom Alexander
0c4e97c556 typo 2020-04-12 21:14:21 -04:00
Tom Alexander
610adc8b72 Switch the Renderable trait over to the returning a RenderError 2020-04-12 21:09:03 -04:00
Tom Alexander
9c7883358a Better error handling added to walkable 2020-04-12 20:52:30 -04:00
Tom Alexander
a647ed6d43 fix tests 2020-04-12 18:31:27 -04:00
Tom Alexander
d51392fe8a Initial move to returning results from render calls. 2020-04-12 18:29:40 -04:00
Tom Alexander
d30749f709 Updated to the latest nom 2020-04-12 17:39:24 -04:00
Tom Alexander
28b5cf1d34 Fix handling of surrounding whitespace 2020-04-12 16:02:26 -04:00
Tom Alexander
db575d145e Initial attempt at docker compliance tests. 2020-04-12 14:37:54 -04:00
Tom Alexander
542c2c4536 Switching render_template to render_body.
The body element is re-used as a child element in blocks, so it makes more sense to make a function that renders that as opposed to a function that renders a top-level-only container that contains only a body.
2020-04-11 23:03:07 -04:00
Tom Alexander
869c32df21 Moving the custom types for the walk_path test inside the test function 2020-04-11 22:54:48 -04:00
Tom Alexander
273f6204d8 Rendering my first template with actually following paths.
Before I was hard-coding the path to the reference. Now I am following the full path programmatically using the new ContextElement and Walkable traits.
2020-04-11 22:52:20 -04:00
Tom Alexander
e5e1703fab Implement ContextElement for serde_json::Value 2020-04-11 22:47:31 -04:00
Tom Alexander
dbfa7ea4dc Cleaning up 2020-04-11 22:36:22 -04:00
Tom Alexander
47bb055b67 I think its working 2020-04-11 22:23:59 -04:00
Tom Alexander
5efa650b67 Switching to a combined ContextElement trait for Walkable and Renderable 2020-04-11 22:19:54 -04:00
Tom Alexander
07e5c9f0af turns out putting dyn everywhere fixes it 2020-04-11 22:04:44 -04:00
Tom Alexander
c094997032 Getting rid of some lifetimes 2020-04-11 21:59:21 -04:00
Tom Alexander
5098ee6338 Switching over to dyn Walkables 2020-04-11 21:57:24 -04:00
Tom Alexander
ec3276af79 Much cleaner with impl walkable but don't know if I can loop yet 2020-04-11 21:51:12 -04:00
Tom Alexander
110b03fc45 Going to try returning impl trait before resorting to boxing 2020-04-11 21:44:42 -04:00
Tom Alexander
43e57f4134 setup for moving into a multi-step walk function 2020-04-11 21:26:36 -04:00
Tom Alexander
f62d50df95 Taking 1 step in a deep context is working! 2020-04-11 21:20:45 -04:00
Tom Alexander
d89d3d9f3c Added another test proving do_the_walk is now generic 2020-04-11 21:13:21 -04:00
Tom Alexander
54e6613f14 do_the_walk may be generic now? 2020-04-11 21:12:42 -04:00
Tom Alexander
c647301662 removing unnecessary lifetime 2020-04-11 21:08:33 -04:00
Tom Alexander
9e1f102540 removing unnecessary static 2020-04-11 21:07:39 -04:00
Tom Alexander
63124bc6e3 Adding &str 2020-04-11 21:07:12 -04:00
Tom Alexander
d296ad6b56 Maybe have a generic implementation of walkable working 2020-04-11 21:03:21 -04:00
Tom Alexander
7ace4be3c7 working on two levels 2020-04-11 20:34:16 -04:00
Tom Alexander
d5c3985c29 initial walkable implementation 2020-04-11 20:31:44 -04:00