Commit Graph

389 Commits

Author SHA1 Message Date
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
669a698575
Re-enable the ContextElement implementation for serde_json 2020-06-07 00:17:55 -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
Tom Alexander
303f092c30
Running into lifetime issues again. 2020-05-31 23:47:20 -04:00
Tom Alexander
da15439946
Start of IceResult to return owned values from into_context_element. 2020-05-31 23:29:12 -04:00
Tom Alexander
7789e6245d
I need to be able to returned owned data from into_context_element. 2020-05-31 22:35:46 -04:00
Tom Alexander
064027e77b
Worked around a lifetime issue with into_context_element. 2020-05-31 22:31:05 -04:00
Tom Alexander
b74dc394a8
Switched to returning an Option for into_context_element(). 2020-05-31 22:17:58 -04:00
Tom Alexander
3aaf7f9987
I think I need to make into_context_element return an Option.
The reason is, missing values for paths are not equal to null so I can't use an OwnedLiteral unless I create a special "walking failed" OwnedLiteral.
2020-05-31 22:06:12 -04:00
Tom Alexander
09e0b046a0
Copy over the implementation of ContextElement for OwnedLiteral which will be the result of calling IntoContextElement on RValues. 2020-05-31 21:59:24 -04:00
Tom Alexander
ff74d78fdb
Starting the new parameters context object. 2020-05-31 21:46:00 -04:00
Tom Alexander
7bf8012d6e
Need to mix back in parameterscontext. 2020-05-31 21:30:36 -04:00
Tom Alexander
bbc1a24631
Added back in reference. 2020-05-31 21:26:31 -04:00
Tom Alexander
da6655d4b6
General structure to the rendering code. 2020-05-31 21:18:54 -04:00
Tom Alexander
680fc167ea
Turns out it was just a lifetime issue. 2020-05-31 20:43:07 -04:00
Tom Alexander
2b8894f9c2
Most of new_breadcrumbs_partial, just need to get the return working. 2020-05-31 20:41:27 -04:00
Tom Alexander
6bde22b667
Re-enabled compiling templates from bin.rs. 2020-05-31 19:08:10 -04:00
Tom Alexander
f1ec0ffb9e
Got rid of most of the Clone traits on the parser types since some of the parser results now contain owned values rather than just references. 2020-05-31 19:01:51 -04:00
Tom Alexander
15c8e3bf28
Get rid of the CloneIntoBoxedContextElement trait for now because I don't know if its still going to be necessary with this overhaul. 2020-05-31 18:31:49 -04:00
Tom Alexander
b8b4759d45
Remove iteration_context, parameters_context, and most of bin.rs.
Since I'm changing a pretty core concept of the renderer, I'm going to be rebuilding it piece by piece. In the interest of being able to rapidly change things and check if they are valid through compilation, I need to eliminate most of the old code so I do not have that weighing me down.
2020-05-31 18:27:55 -04:00
Tom Alexander
acb8dfb58e
Replaced the old renderer file with a new renderer file. 2020-05-31 18:18:21 -04:00
Tom Alexander
283430a45b
Merge the breadcrumb tree trait and struct into just a struct. 2020-05-31 18:14:26 -04:00
Tom Alexander
439601bbb5
First I'll try to eliminate the duplication between the BreadcrumbTree and BreadcrumbTreeNode. 2020-05-31 18:05:49 -04:00
Tom Alexander
1111b48270
Due to traits I am going to have to start hard-replacing the old renderer file. 2020-05-31 18:02:02 -04:00
Tom Alexander
de5914417e
All but explicit context for new_breadcrumbs_section. 2020-05-31 17:56:07 -04:00
Tom Alexander
b381789422
Slight progress on new_breadcrumbs_section. 2020-05-31 17:32:06 -04:00
Tom Alexander
2b532e7eb4
Going to try switching to boxed owned values to remove the template. 2020-05-31 17:25:41 -04:00
Tom Alexander
92dca74505
Running into issue where I need to know the type to create new tree node elements. 2020-05-31 16:40:39 -04:00
Tom Alexander
ff27c2c85d
Basic structure for the new tree renderer. 2020-05-31 16:21:13 -04:00
Tom Alexander
65445cc8fc
Finished implementing the new tree walking. 2020-05-31 16:16:21 -04:00
Tom Alexander
863744c42d
Got rid of the IceTreeIterator by using map(). 2020-05-31 16:02:30 -04:00
Tom Alexander
781b8f645a
Switch IntoIter over to the breadcrumb iterator. 2020-05-31 15:58:29 -04:00
Tom Alexander
ff13d22ab6
Renamed BreadcrumbTreeIterator to IceTreeIterator. 2020-05-31 15:52:46 -04:00
Tom Alexander
89c751e849
I think I need to implement iterating on the tree nodes. 2020-05-31 15:51:18 -04:00
Tom Alexander
3f49519bea
Initial structure for new implementation of walking functions using the heterogeneous tree. 2020-05-31 15:44:09 -04:00
Tom Alexander
456da98bed
Added an iter function which I think will let me automatically make iterators without having to explicitly take a reference to the tree. 2020-05-31 14:29:59 -04:00
Tom Alexander
bebedf56e4
Implement IntoIterator for references to a BreadcrumbTreeNode. 2020-05-31 14:27:31 -04:00
Tom Alexander
1be60511ed
Implement an iterator over the tree. 2020-05-31 14:17:21 -04:00
Tom Alexander
645b251f13
Initial setup for a heterogenous tree of IntoContextElement. 2020-05-31 13:52:20 -04:00
Tom Alexander
a578b57f12
Switch the call for IntoContextElement back to a static integer so it compiles again. 2020-05-31 13:21:47 -04:00
Tom Alexander
21b9e9282b
Ran into issue: Can't returned owned data when its expecting a trait object. 2020-05-30 18:28:33 -04:00
Tom Alexander
737c98d8b7
Add the renderer to calls to convert to a context element. 2020-05-30 18:16:58 -04:00
Tom Alexander
917da5a073
Put IntoContextElement everywhere. It compiles again. 2020-05-30 17:50:27 -04:00
Tom Alexander
975ab278ef
Starting an IntoContextElement trait to allow for delayed evaluation. 2020-05-30 16:34:32 -04:00
Tom Alexander
581f9f7e97
Update parser to treat all string rvalues as templates. 2020-05-30 15:49:13 -04:00
Tom Alexander
3352b777ae
Factor out the parsing of partial template names into its own parser for reuse as an rvalue. 2020-05-30 15:45:44 -04:00
Tom Alexander
0236f882b7
Delete the old new_breadcrumbs function that is no longer used. 2020-05-30 14:45:48 -04:00
Tom Alexander
add77cf6a5
Get rid of the concept of NamedBlock and replace it with a ParameterizedBlock special case that does not support an else block. 2020-05-30 14:39:31 -04:00
Tom Alexander
a0e2ba2b82
Had to update the 1-behind insertion for partial parameters to account for pseudo elements. 2020-05-30 12:24:50 -04:00
Tom Alexander
3c9a369908
Skipping over pseudo contexts has fixed most of the tests. 2020-05-30 11:50:55 -04:00
Tom Alexander
f04e84dc31
Attempted to move section over to the section-specific new breadcrumbs function.
I think the problem is, the index context needs to be a higher priority than the new context element, but when referencing data with `{.}` the new context element needs to take priority. I could either combine entries in the context tree so that variables like $idx and $len live side-by-side with real context elements, or try to implement a way to skip over index context elements when walking up the tree.
2020-05-25 23:28:49 -04:00
Tom Alexander
79f52ecdee
Add test for priorities while looping and split the new_breadcrumbs function into two separate new_breadcrumbs functions because sections and partials have different orderings. 2020-05-25 22:50:10 -04:00
Tom Alexander
108cffb771
Fully replaced conditional's Container type with ParameterizedBlock. 2020-05-25 21:26:16 -04:00
Tom Alexander
dc92973313
Switch parameterized blocks to having a Path for a name and taking a parser for a name matcher in the goal of merging with the conditional blocks. 2020-05-25 21:17:58 -04:00
Tom Alexander
2527baeff4
Pull the calls for the DustTag constructor up out of parameterized_block. 2020-05-25 20:40:58 -04:00
Tom Alexander
c78695d08e
Remove a TODO. 2020-05-25 19:34:36 -04:00
Tom Alexander
25eb9b10a0
I did it backwards, I needed to use the explicit context from the block, not the inline partial. 2020-05-25 19:24:49 -04:00
Tom Alexander
6845df7f96
First attempt at an implementation of the new breadcrumbs for blocks/inline partials. 2020-05-25 19:11:14 -04:00
Tom Alexander
83623897af
Integrate new_breadcrumbs into the helpers. 2020-05-25 18:27:54 -04:00
Tom Alexander
400602124e
Added tests proving that the explicit context is evaluated using the global context of the partial containing the block (NOT the inline partial, which is where the explicit context is written). 2020-05-25 17:53:04 -04:00
Tom Alexander
d02c98cb94
Add a special case to new_breadcrumbs for when theres an injected context but no explicit context or new context element and finish the partial integration. 2020-05-25 16:30:15 -04:00
Tom Alexander
17121aa85b
Integrated new_breadcrumbs into exists and not exists, and partially integrated it into partials. 2020-05-25 16:03:00 -04:00
Tom Alexander
32c047a9b9
Integrate the new_breadcrumbs function into sections. 2020-05-25 15:55:52 -04:00
Tom Alexander
d79447e602
Update the new_breadcrumbs function to return an Option to prevent needlessly cloning the breadcrumbs when no new contexts are to be added. 2020-05-25 15:49:30 -04:00
Tom Alexander
4a21ae5af3
Add tests for explicit context setting that check failure conditions and implement a helper function to generate a new breadcrumb stack. 2020-05-25 15:40:42 -04:00
Tom Alexander
8121c93392
Make the dust template parser all_consuming. 2020-05-25 14:17:38 -04:00
Tom Alexander
5b2ac7c2c2
Add parser support for explicit contexts in helpers. 2020-05-25 14:14:17 -04:00
Tom Alexander
12de0245c5
Implemented parser support for explicit contexts in partials. 2020-05-25 14:05:46 -04:00
Tom Alexander
9031108d2a
Implemented parsing for explicit contexts in NamedBlocks. 2020-05-25 13:55:17 -04:00
Tom Alexander
dbee569931
Finish adding explicit context to the parser for Container. 2020-05-25 13:38:31 -04:00