Tom Alexander
7d4cb14530
Add that check to the not-equals helper and update the json value implementation to mark all non-scalars as not-equals.
2020-05-16 15:30:17 -04:00
Tom Alexander
41e4874d75
Add a check to the equality helper to mark identical paths as equal.
2020-05-16 15:22:48 -04:00
Tom Alexander
6dbeb77a28
Add arrays to all helpers tests.
2020-05-16 14:19:56 -04:00
Tom Alexander
2b5bec05be
Implemented partial_compare for scalar json values.
2020-05-16 14:08:59 -04:00
Tom Alexander
563fd1f6db
Starting comparison of json value to json value.
2020-05-16 13:44:34 -04:00
Tom Alexander
9851a2556d
Ordering implementation for comparison between json and literals.
2020-05-16 13:40:56 -04:00
Tom Alexander
8748cb7063
Structure for ordering, need to implement for serde_json::Value.
2020-05-16 13:31:52 -04:00
Tom Alexander
f4a935224c
Implemented the not equals helper.
2020-05-16 12:26:28 -04:00
Tom Alexander
e04a0be5e7
Add the rest of the helpers to the recursive extract inline partials function.
2020-05-16 12:13:40 -04:00
Tom Alexander
1b63bc4083
Add a test for integer literals.
2020-05-10 23:42:56 -04:00
Tom Alexander
6e6560c742
Revived the tests.
2020-05-10 23:38:59 -04:00
Tom Alexander
c88cab8316
Hook in the integer parser.
2020-05-10 23:13:25 -04:00
Tom Alexander
9ee8f41022
Implement the render send of integer literals.
2020-05-10 23:11:16 -04:00
Tom Alexander
79099a8654
Parsing positive integers.
2020-05-10 23:02:21 -04:00
Tom Alexander
7dd824ab4f
cleaning up.
2020-05-10 22:40:47 -04:00
Tom Alexander
68639481f5
Implement a real clone for ParametersContext.
2020-05-10 22:35:17 -04:00
Tom Alexander
46bb5558ac
Going to a more generic equality comparison for json.
2020-05-10 22:26:47 -04:00
Tom Alexander
6297fa0189
Rename NewParametersContext to ParametersContext.
2020-05-10 22:21:18 -04:00
Tom Alexander
75ba35a422
Cleaning up.
2020-05-10 22:20:39 -04:00
Tom Alexander
6261f7881c
Manual equals is working!
2020-05-10 22:14:07 -04:00
Tom Alexander
2fb7ca9db7
Making CastToAny more generic.
2020-05-10 22:05:48 -04:00
Tom Alexander
9baa669dea
Separating out CastToAny.
2020-05-10 22:04:41 -04:00
Tom Alexander
d5e0c93205
Comparisons between json strings vs rvalue literals is not working as I had hoped.
2020-05-10 21:49:03 -04:00
Tom Alexander
798d84828e
Implemented owned_walk_path.
2020-05-10 21:38:37 -04:00
Tom Alexander
dade738f55
The structure is all there, just need to implement owned_walk_path and clone on NewParametersContext.
2020-05-10 21:34:18 -04:00
Tom Alexander
4e274b9ea5
Running into the walking issue again.
2020-05-10 21:28:47 -04:00
Tom Alexander
137e7887a0
Finish implementing DTHelperEquals.
2020-05-10 21:14:51 -04:00
Tom Alexander
32abe41e1a
Generic implementation of CompareContextElement.
2020-05-10 21:11:49 -04:00
Tom Alexander
256051220d
Generic implementation of CloneIntoBoxedContextElement.
2020-05-10 21:07:31 -04:00
Tom Alexander
ba79369b5a
PartialEq works with results too.
2020-05-10 21:00:52 -04:00
Tom Alexander
7f89685537
PartialEq implemented too.
2020-05-10 21:00:06 -04:00
Tom Alexander
e986a1ba7a
PartialEq compiling with double lifetimes.
2020-05-10 20:58:47 -04:00
Tom Alexander
8fd2a9cf39
tentatively seems to be working.
2020-05-10 19:16:55 -04:00
Tom Alexander
c96b2257d7
Compiling.
...
Need to see if I can do a generic implemented of IntoBoxedContextElement for all objects implementing Copy, and I need to implement the compare code to make sure this all works before I start integrating this more.
2020-05-10 19:07:41 -04:00
Tom Alexander
5c79b436a0
Commenting out the parameterscontext type.
2020-05-10 19:01:02 -04:00
Tom Alexander
6fb329388f
Not having much luck.
2020-05-10 18:45:54 -04:00
Tom Alexander
b9cfa56c2f
May have to use unsafe code.
2020-05-10 18:35:24 -04:00
Tom Alexander
9573480973
converting the parameters
2020-05-10 18:19:06 -04:00
Tom Alexander
876bced188
Converting RValues.
2020-05-10 18:10:17 -04:00
Tom Alexander
f386e5c31b
Adding trait to cast to Any.
2020-05-10 17:12:15 -04:00
Tom Alexander
c438653449
No luck.
2020-05-10 15:02:59 -04:00
Tom Alexander
7e0e776486
Running into lifetime issues.
2020-05-10 14:53:12 -04:00
Tom Alexander
7a8247f38a
Getting the left and right sides.
2020-05-10 14:22:59 -04:00
Tom Alexander
55f816b53f
Finished implementing Named blocks and inline partials.
2020-05-09 22:49:17 -04:00
Tom Alexander
403f9e6530
Implement a recursive get_block.
2020-05-09 22:40:32 -04:00
Tom Alexander
6837fba489
Passing the block tree through the render functions.
2020-05-09 22:29:58 -04:00
Tom Alexander
9a33195c42
Generating the new treeX
2020-05-09 22:05:43 -04:00
Tom Alexander
d2904913ad
I think I have the full extraction code.
2020-05-09 21:33:10 -04:00
Tom Alexander
ae74ce411a
Getting down to the extract_inline_partials_from_tag function.
2020-05-09 21:09:46 -04:00
Tom Alexander
97e806a968
Start of structure for extracting inline partials from a template.
2020-05-09 21:01:37 -04:00
Tom Alexander
2a9657e3d5
Turns out the issue was the trailing space on the parameters.
2020-05-09 15:15:43 -04:00
Tom Alexander
369fbaf579
works fine with one parameter.
2020-05-09 15:11:04 -04:00
Tom Alexander
710785139a
Works fine with the partial but without parameters.
2020-05-09 15:08:31 -04:00
Tom Alexander
569b4594be
works fine without the partial.
2020-05-09 15:05:29 -04:00
Tom Alexander
bb3449467a
Running into an error parsing one of the partial test templates.
2020-05-09 15:02:54 -04:00
Tom Alexander
bbb9b8d9d3
Partial simple is working.
2020-05-09 14:53:53 -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
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
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
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
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
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
Tom Alexander
2459d7b418
Rendering spans
2020-04-11 18:25:48 -04:00
Tom Alexander
13934e8699
Rename DustContext to DustRenderer
2020-04-10 20:58:55 -04:00
Tom Alexander
2842d0a14a
Loading the compiled templates into a context
2020-04-10 20:55:44 -04:00
Tom Alexander
743106684a
compiling templates in the same manner as the shim
2020-04-10 20:27:27 -04:00
Tom Alexander
7e0a617ba6
Add support for supplying multiple templates to the dustjs shim to support testing partials.
2020-04-10 19:07:02 -04:00
Tom Alexander
05d9e20a8f
Add all the helpers
2020-04-07 21:49:28 -04:00
Tom Alexander
15c732b3a3
Also stealing the ParameterizedBlock struct
2020-04-07 20:37:15 -04:00
Tom Alexander
b7120a34de
Forking the partial code for reuse as helper code
2020-04-07 20:21:26 -04:00
Tom Alexander
2ebe4798d5
Add test for quoted partial
2020-04-07 19:53:57 -04:00
Tom Alexander
e2f03de297
Integrated the partial parser into the rest of the grammar
2020-04-07 19:51:06 -04:00