Commit Graph

96 Commits

Author SHA1 Message Date
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
Tom Alexander
15c8ee57a7 Successfully rendering my first template. 2020-04-11 19:19:40 -04:00
Tom Alexander
e26b158ab4 Initial implementation of custom Renderable trait. 2020-04-11 19:11:14 -04:00
Tom Alexander
af5122ab9f Figured out how to get a value using to_string()
Figured out how to get a value using `to_string()` but serde_json's `to_string()` is wrapping a string in quotes. I think I want to implement my own trait to support custom logic for rendering values.
2020-04-11 19:05:50 -04:00
Tom Alexander
265afe7eeb I think I figured out how to get the Index trait back into the generic type. 2020-04-11 19:05:50 -04:00
Tom Alexander
f65a144b3c Beginning of the render_tag function.
Beginning of the render_tag function. At this point I need to figure out how to access elements in the context.
2020-04-11 19:05:40 -04:00