This issue has grown out of #167 and #297 and effectively replaces them both.
While working on #297 I had begun rewriting Tapestry to use a tree data structure in order to store the content relationships. It very quickly became clear that a tree was the wrong data structure for the job and instead a more simpler graph data structure was substituted.
The benefit of using a graph data structure is that it can be visualised using GraphViz for debugging or outright geeky purposes.
This task has the following @todos:
[x] Write Graph data structure and accompanying unit tests
[x] Deprecate usages of Tree data structure and replace with Graph
[x] LexicalAnalysis needs to identify phtml layouts for the Graph, this needs a test (#314)
[ ] Have content generators add their dependencies to the graph (do these get added as a SimpleNode belonging to the configuration node? (#315)
[ ] Have the graph be cached at the end of execution (#316)
[ ] Have the cached graph be loaded and at beginning of execution (#317)
[ ] Have the cached graph be compared with the generated graph so that it may be reduced and only changed files get re-compiled (#318)
This issue has grown out of #167 and #297 and effectively replaces them both.
While working on #297 I had begun rewriting Tapestry to use a tree data structure in order to store the content relationships. It very quickly became clear that a tree was the wrong data structure for the job and instead a more simpler graph data structure was substituted.
The benefit of using a graph data structure is that it can be visualised using GraphViz for debugging or outright geeky purposes.
This task has the following
@todos
:LexicalAnalysis
needs to identify phtml layouts for the Graph, this needs a test (#314)SimpleNode
belonging to theconfiguration
node? (#315)