jeremy@jermolene.com
36cf50aa96
Use \widget for custom widget definitions, and remove need for angle brackets
...
Need to do some refactoring of all those isFunctionDefinition/isProcedureDefinition/isWidgetDefinition flags into a single property
2022-05-13 08:49:53 +01:00
jeremy@jermolene.com
904e30a0e2
Detect recursion by tracking widget tree depth
...
The old recursion marker approach was very slow, and didn't catch test cases like editions/test/tiddlers/tests/data/transclude/Recursion.tid
2022-05-12 16:26:33 +01:00
jeremy@jermolene.com
413dc86d05
Rename internal "unknown" filter operator so that users cannot invoke it
2022-05-11 14:52:25 +01:00
jeremy@jermolene.com
774459fa73
Transclude: replace paramNames/paramValues with more robust JSON payload
...
More details at https://github.com/Jermolene/TiddlyWiki5/pull/6666#issuecomment-1123719153
2022-05-11 13:51:11 +01:00
jeremy@jermolene.com
a827290332
Fix stringifying/parsing string arrays containing newlines
...
A very old bug.
Fixes the ActionListOpsWidget problem @btheado
2022-05-10 10:22:35 +01:00
jeremy@jermolene.com
0b11b499c2
Better backwards compatibility for legacy recursion marker
...
Fixes the problem with tag dropdowns @btheado
2022-05-10 10:21:56 +01:00
jeremy@jermolene.com
eef7d180a5
Remove obsolete code
...
Left over after refactoring
2022-05-10 10:21:19 +01:00
jeremy@jermolene.com
8e4c13382b
Fix visible transclusion example
2022-05-10 08:10:32 +01:00
jeremy@jermolene.com
e092113f9f
Switch to using \procedure to define new-style macros, and \function for custom filter operator functions
...
I now need to update the OP!
2022-05-09 18:00:09 +01:00
jeremy@jermolene.com
64448ae774
Make the macrocall widget delegate to the transclude widget
2022-05-08 20:48:33 +01:00
jeremy@jermolene.com
4f2f689ab9
Clarify that the recent changes allow functions to be invoked with the double bracket syntax
...
In other words, the transclude widget distinguishes between functions and macros and handles the parameters appropriately
2022-05-08 16:05:32 +01:00
jeremy@jermolene.com
e9630328f1
Extend transclude widget to work with old-style macros and use it for the macrocall shortcut syntax
2022-05-08 15:59:20 +01:00
jeremy@jermolene.com
9be05f6f38
Use consistent parse tree node property for params
2022-05-07 13:22:53 +01:00
jeremy@jermolene.com
2fe2d20ddf
Genesis widget should pass raw attributes onto child widget...
...
...so that it can more efficiently handle refreshing itself.
2022-05-07 11:41:28 +01:00
jeremy@jermolene.com
c5b10d5c1d
Add visible transclusions component and demo
...
Very useful to see transclusions explicitly
Makes a good demo of a super-complicated widget override.
2022-05-06 15:39:45 +01:00
jeremy@jermolene.com
e01dfa1507
Experimental support for custom filter operators
...
Just as we can define custom widgets we can also define custom parameterised filter operators
2022-05-06 15:01:17 +01:00
jeremy@jermolene.com
a9938a6c67
Improve recursion detection
...
While retaining backwards compatibility
2022-05-06 15:00:10 +01:00
jeremy@jermolene.com
7caaf82571
Fix variable retrieval bug with test harness
2022-05-06 10:32:20 +01:00
jeremy@jermolene.com
e5164113c4
Don't create variables with value undefined for missing parameters
2022-05-05 14:47:22 +01:00
jeremy@jermolene.com
7ead87bd29
Use enlist:raw to preserve duplicates
2022-05-05 11:34:30 +01:00
jeremy@jermolene.com
f56e316c86
Fix genesis widget example
2022-05-05 11:34:06 +01:00
jeremy@jermolene.com
ea51b8a3fe
Merge branch 'master' into parameterised-transclusions
2022-05-05 08:30:48 +01:00
jeremy@jermolene.com
f3bf5b6e85
Add support for $:/tags/Macro/View/Body macros
2022-05-05 08:30:05 +01:00
jeremy@jermolene.com
f307f00e32
Fixes to enable the transclude widget itself to be overridden
...
There are two big changes here:
Replace the previous "ts-wrapper" mechanism, which we had been using to redefine custom widgets inside their definitions to prevent recursive calls. Now we've got the genesis widget we can instead control recursion through a new "$remappable" attribute that allows the custom widget mechanism to be skipped.
We also extend the slot widget to allow a depth to be specified; it then reaches up by the indicated number of transclusion widgets to find the one from which it should retrieve the slot value.
2022-05-05 08:20:14 +01:00
jeremy@jermolene.com
35430d09ed
Fix bug with empty strings ignored in $tw.utils.stringifyList/parseStringArray
...
I will pull this out into a separate PR. Fixing it doesn't cause problems for the core but I imagine it might cause issues for 3rd party code.
2022-05-05 08:16:20 +01:00
jeremy@jermolene.com
e99137f4cc
Cache parse trees when transcluding variables
2022-05-03 17:59:45 +01:00
jeremy@jermolene.com
719a5614cb
Change tiddler separator used in wikitext tests
...
Underscore looked ambiguous; I kept typing dashes by accident
2022-05-03 16:53:00 +01:00
jeremy@jermolene.com
56c2242e4e
Introduce genesis widget for dynamically creating widgets
...
See the "RedefineLet" test for a contrived example of usage
2022-05-03 12:55:10 +01:00
jeremy@jermolene.com
e1df50d981
Fix parameter handling
2022-05-03 12:54:29 +01:00
jeremy@jermolene.com
c4743ebbec
Fix importing of function definitions
2022-05-03 09:39:05 +01:00
jeremy@jermolene.com
8f69c27632
Reuse attribute objects when executing custom widgets
2022-05-03 09:38:41 +01:00
jeremy@jermolene.com
0163c04b7d
Fix addAttributeToParseTreeNode handling of ordered attributes
2022-05-03 09:37:49 +01:00
jeremy@jermolene.com
2ea0374b55
Allow the let widget to create variables starting with $
2022-05-03 08:44:33 +01:00
jeremy@jermolene.com
3000d3339c
Remove extraneous code
2022-05-03 08:11:00 +01:00
jeremy@jermolene.com
a888cd57cd
Unquoted parameters should not eat a succeeding comma
...
Fixes #6672
2022-05-02 13:49:41 +01:00
jeremy@jermolene.com
a10106a4a6
Fix crash when transcluding an undefined variable
...
Thanks @pmario
See https://github.com/Jermolene/TiddlyWiki5/pull/6666#issuecomment-1114692359
2022-05-02 11:15:18 +01:00
jeremy@jermolene.com
fbd0357cae
Mustn't allow commas in parameter names
2022-05-02 11:04:32 +01:00
jeremy@jermolene.com
689a6c5b6a
Rewrite some tests to use the shortcut syntaxes
2022-05-02 10:56:22 +01:00
jeremy@jermolene.com
ea7199600d
Be as permissive as possible with parameter names
...
Previously restricted to upper and lower case, digits and dash and underscore
2022-05-02 10:56:09 +01:00
jeremy@jermolene.com
5f02cc49fd
Add support for accessing function parameters as name/value pairs
2022-05-02 10:00:50 +01:00
jeremy@jermolene.com
bbc6661192
Remove erroneous "tag" property
2022-05-02 09:26:18 +01:00
jeremy@jermolene.com
8b867be8ef
Add pragma rule for parameters declarations
2022-05-02 09:15:45 +01:00
jeremy@jermolene.com
99750d78b5
Allow brackets to be omitted for function definitions with no parameters
2022-04-30 13:06:28 +01:00
jeremy@jermolene.com
c9bd1b5274
Add wikitext shortcut for new-style function definitions
2022-04-30 12:44:26 +01:00
jeremy@jermolene.com
886c8620f5
Replace ubertransclude widget with transclude widget
2022-04-30 10:00:38 +01:00
jeremy@jermolene.com
aac2d6ccb0
Refactor ubertransclude functionality into transclude widget
2022-04-30 09:54:55 +01:00
jeremy@jermolene.com
c4991fff9e
Refactor transclude widget before uberfying it
2022-04-30 09:30:25 +01:00
jeremy@jermolene.com
f78e1f6f7d
Importvariables should skip parameters widgets
2022-04-29 22:36:07 +01:00
jeremy@jermolene.com
5bcf7b9edd
Add support for shortcut syntax for positional transclusion parameters
2022-04-29 22:35:47 +01:00
jeremy@jermolene.com
89b7a3bd28
Ubertransclusion positional parameters should be based on name, not position
2022-04-29 16:28:03 +01:00