Commit Graph

264 Commits

Author SHA1 Message Date
Tom Alexander
d6ad7c28f3 Move MathNumber into the library.
While this will be used for the OwnedLiterals since they must always exhibit the original DustJS behavior, I am going to keep exposing separate math functions for ContextElement instead of simply requiring them to implement Into<MathNumber> since people might want to implement math in unusual ways with unusual types.
2020-06-13 19:13:02 -04:00
Tom Alexander
df0ae05648 Start of implementation for serde_json but I'm going to change my approach.
The permutations are pretty intense, so I think I'm going to do the same design I did for comparison where I have a JsonNumber (but I'll call this one MathNumber and rename JsonNumber to ComparisonNumber), convert the types to that, and then do the math.
2020-06-13 18:34:13 -04:00
Tom Alexander
db11677b22 Implement addition for OwnedLiterals. 2020-06-13 17:50:22 -04:00
Tom Alexander
d99aa44d8e Add support for negative integers. 2020-06-13 16:06:31 -04:00
Tom Alexander
978bbe6eb3 Implemented float literals for OwnedLiterals, not yet for serde_json. 2020-06-13 13:37:26 -04:00
Tom Alexander
8daa746da6 Initial structure for the perform_math_operation function. 2020-06-13 13:16:25 -04:00
Tom Alexander
6877e3d393 Add parser support for the math helper. 2020-06-13 12:03:55 -04:00
Tom Alexander
a937a12db6 Cleanup. 2020-06-07 19:11:21 -04:00
Tom Alexander
88887bff0f Implemented early termination. 2020-06-07 19:10:25 -04:00
Tom Alexander
0fac063c8d Implemented none and any, but I need to implement early termination. 2020-06-07 18:52:09 -04:00
Tom Alexander
f1b868ce33 I think I have the code for the select tag finished, but I haven't yet implemented any or none. 2020-06-07 18:44:27 -04:00
Tom Alexander
576d94780a Implement a SelectContext for passing the select parameters and whether or not any comparison passed down exactly 1 level in the renderer. 2020-06-07 18:33:34 -04:00
Tom Alexander
b0b857147d Implemented code to find out if any comparison checks inside a select are true. 2020-06-07 18:27:11 -04:00
Tom Alexander
ed38ce6a38 Unified the renderers for all the comparison helpers by moving their implementation to perform_comparison_check. 2020-06-07 18:17:28 -04:00
Tom Alexander
85d36fc516 Implemented perform_comparison_check to separate the comparison logic from the render code so that it can be used pre-rendering by the select helper. 2020-06-07 18:11:14 -04:00
Tom Alexander
f2740987ec Add a parent to ParametersContext so we can chain parameters contexts for use with the select helper. 2020-06-07 17:56:51 -04:00
Tom Alexander
a61807d84c Add parser support for select/any/none. 2020-06-07 17:06:14 -04:00
Tom Alexander
a749f91e8e Ported over the comparison helpers to using the new tap function. 2020-06-07 16:49:15 -04:00
Tom Alexander
78dad3273a Remove $len from first helper since its not needed. 2020-06-07 15:18:03 -04:00
Tom Alexander
417466d17d Implement the first and last helpers. 2020-06-07 15:16:39 -04:00
Tom Alexander
fdecdcb53b Implemented the sep helper. 2020-06-07 15:09:37 -04:00
Tom Alexander
3fb91566bb Implement get and tap functions. 2020-06-07 14:45:32 -04:00
Tom Alexander
d06fbea288 Remove unused code and clean up warnings. 2020-06-07 13:27:57 -04:00
Tom Alexander
4e1259f1c7 All tests working. 2020-06-07 01:35:58 -04:00
Tom Alexander
b1a85165b0 All tests passing! 2020-06-07 01:04:00 -04:00
Tom Alexander
4789a7d931 Fix the same issue in the renderer. 2020-06-07 00:37:47 -04:00
Tom Alexander
09d015346c Fixed a bug where I was failing to filter out pseudo elements during walking. 2020-06-07 00:29:51 -04:00
Tom Alexander
422479bcf2 port over the remaining helpers. 2020-06-07 00:12:01 -04:00
Tom Alexander
8cbb31251c port over the equals/not equals helpers. 2020-06-07 00:03:51 -04:00
Tom Alexander
c8de395038 Inline partials and blocks worked as-is. 2020-06-06 23:18:28 -04:00
Tom Alexander
250d428464 Updated Partial for the new architecture. 2020-06-06 23:17:50 -04:00
Tom Alexander
b396765488 Updated Exists/NotExists for the new architecture. 2020-06-06 23:15:12 -04:00
Tom Alexander
e28ebaf26a Update IterationContext to be an IntoContextElement and finish implementing section. 2020-06-06 23:08:21 -04:00
Tom Alexander
00699b84ba Finished converting back to Vec. 2020-06-06 22:45:58 -04:00
Tom Alexander
b0efe50410 Fixed new_breadcrumbs_section for the Vec based breadcrumbs. 2020-06-06 22:37:29 -04:00
Tom Alexander
256dcd03c5 Fixed tree_walking for the new breadcrumbs. 2020-06-06 22:29:39 -04:00
Tom Alexander
71592a9a32 Switching back to a Vec because inserting multiple elements into the linked list structure while maintaining ownership of each node proved to be difficult. 2020-06-06 22:24:27 -04:00
Tom Alexander
78bffb5f04 I think I need to switch back to a vec.
But with all I've built with IntoContextElement and BreadcrumbTreeElement I think the Vec will end up working in the end.
2020-06-06 21:46:02 -04:00
Tom Alexander
77b842f8de Implement IntoContextElement for ParametersContext. 2020-06-06 20:48:29 -04:00
Tom Alexander
02259b9bd6 Create from_borrowed and from_owned constructors for IceResult and BreadcrumbTreeElement.
In an effort to keep track of how often memory is getting heap allocated, I am implementing constructors for IceResult and BreadcrumbTreeElement. This should limit the places that I call Rc::new and allow me to place tracing code into it later to ensure all code paths doing heap allocation make sense.
2020-06-06 20:24:01 -04:00
Tom Alexander
3c15e35b67 Finished constructor for ParametersContext. 2020-06-06 20:02:50 -04:00
Tom Alexander
ed7d80de6c Handling RVPath for ParametersContext constructor. 2020-06-06 19:57:33 -04:00
Tom Alexander
f9dea70d23 Implement conversion from IceResult into BreadcrumbTreeNode.
I believe this change will remove an extra heap allocation I was doing in the new_breadcrumbs_* functions for the explicit context by adding support for converting from Rc<dyn ContextElement> to Rc<dyn IntoContextElement> without copying the underlying data. This should allow conversion of the IceResult::Owned variant to the BreadcrumbTreeElement::Owned variant without extra copying.
2020-06-06 19:39:44 -04:00
Tom Alexander
7253c7d99e Implement function to convert IceResult into a BreadcrumbTreeElement. 2020-06-06 18:37:35 -04:00
Tom Alexander
18c1687064 Starting the constructor for ParametersContext. 2020-06-06 18:15:11 -04:00
Tom Alexander
f4f309caad Working implementation of into_context_element for RValue. 2020-06-06 18:10:30 -04:00
Tom Alexander
c5b927ca11 Fix bug in use of breadcrumbs in new_breadcrumbs_partial. 2020-06-06 17:56:54 -04:00
Tom Alexander
e725728a65 I think I have solved the lifetime issue.
OwnedBreadcrumbTreeElement's needed a lifetime associated with them because IntoContextElement had lifetimes associated with it.
2020-06-06 17:52:46 -04:00
Tom Alexander
adbc236836 Broke the problem area down into parts to make it easier to debug. 2020-06-06 16:03:02 -04:00
Tom Alexander
842f39e178 Minor syntax fix. 2020-06-06 15:20:43 -04:00