* Support specifying insertbefore position title as parameter
Closes: #6133
* Update insertbefore calls with new variable parameter syntax
See-also: 96b52606a (Support specifying insertbefore position title as parameter, 2022-02-21)
* corrected [!is[draft]] to be a proper complement
* Ensuring [is[draft]] and [!is[draft]] are complements
* Made [is[draft]] more analogous to .isDraft()
* Support case insensitive matching in prefix/suffix operators
Support `caseinsensitive`/`caseinsensitive` suffixes in the following
filter operators:
* prefix
* suffix
* removeprefix
* removesuffix
The suffixes have the same behaviour as in the match operator.
Closes: #6407
* Do not filter titles if suffix/removesuffix operand is empty
Issue: #6407
* Failing test
* Fix underlying problem
* Less naive fix
Now we make sure we maintain the sort order of the titles array when adding a new tiddler
* Fix failing tests
* Refactor filter tests to repeat them with different store orderings
* Revert "Fix failing tests"
This reverts commit ee03ee57f5.
* Refine fix to retain stylesheet ordering
The order of tiddlers in the HTML file uses localeCompare(), and that determines the insertion order. So if we want to be compatible with older versions we have to use localeCompare() to order tiddlers, not a plain sort()
* Don't sort shadow tiddlers
Instead rely on the existing ordering
* Fix failing tests, take 2
I think that all of these changes are explained by the store no longer retaining insertion order, but now using localecompare ordering
* Fix tests from #6327
* Support macro params in filter run prefixes and support substitution for variables set by filter run prefixes
* feat: add support macro parameters and variable substitution for all filter run prefixes
* fix: rename options argument to opts for disambiguation
* feat: add support for macro params to cascade filterrun prefix
* Initial Commit
* Set currentTiddler and ..currentTiddler for filter evaulation
* Precompile the filters for performance
* Add explicit test for empty result when no filter passes
* Use the cascade filter run prefix to choose the view template body template
* Use the cascade mechanism to choose between the edit and view templates
* Simplify cascade filter
Thanks @saqimtiaz
* Add control panel UI for inspecting the template cascades
* Refactor import listing and plugin listing as alternate body templates
As suggested by @pmario
* Refer to $:/core/ui/{View|Edit}Template via their associated config tiddlers
* Fix typo in previous commit
* Add demo of custom story tiddler template
* Tweak control panel wording
* Standardise "Story Tiddler Template" nomenclature
* Add a cascade for the editor template body
* Add a cascade for the view template title
* Avoid unwanted whitespace
* Add a cascade for dynamically choosing tiddler icons
* $let widget added and tested
* Documentation for $let, doc improvements for $vars
* let properly avoids refreshing when possible
* $let Changes as recommended by others
* Removed superfluous super method call
Also improved $let test
* Extends :map filter run prefix to provide the variables index, revIndex and length to bring it into line with :reduce
* update :maps examples
* docs: fix formatting issue with documentation
* Extend HTML tag parser to maintain an ordered array of attribute names
* Add some tests for repeated attributes
* Record entire attribute in orderedAttributes array so that we can work with duplicated attributes
* Add support for JSON-formatted tiddler store, and make it the default
The change to `getTiddlersAsJson()` is to allow experimentation
* Move JSON tiddlers into their own store area, and fix support for encrypted tiddlers
Also add a dummy old-style store area for backwards compatibility
The current arrangement is that JSON tiddlers will always override old-style tiddlers.
* Use the deserialiser mechanism to decode the content
* Refactor $:/core/modules/deserializers.js before we start extending it
Cleaning up the helper function names and ordering
* Drop support for the "systemArea" div
It was only used in really old v5.0.x
* Update deserializer to support JSON store format and add some tests
* Life UI restrictions on characters in fieldnames
* Add another test case
* Correct mis-merge
* Remove toLowerCase() methods applied to fieldnames
* Insert line breaks in output of getTiddlersAsJson (#5786)
Rather than have the entire store on one line, insert a line break
after each tiddler.
* Refactor #5786 for backwards compatibility
* Only read .tiddlywiki-tiddler-store blocks from script tags
Prompted by @simonbaird's comment here: https://github.com/Jermolene/TiddlyWiki5/pull/5708#discussion_r648833367
* Clean up escaping of unsafe script characters
It seems that escaping `<` is sufficient
* Add docs from @saqimtiaz
Thanks @saqimtiaz
* Docs tweaks
* Remove excess whitespace
Thanks @simonbaird
* Fix templates for lazy loading
* Remove obsolete item from release note
* Clean up whitespace
* Docs for the jsontiddler widget
* Fix whitespace
Fixes#5840
* Comments
* Fix newlines in JSON store area
* Remove obsolete docs change
Co-authored-by: Simon Baird <simon.baird@gmail.com>
* Exploratory pass at adding support for macro params in filter operands
* whitspace correction
* rename varInfo to varTree for disambiguation
* Refactored parseMacroInvocation to be re-usable, performance improvements for variables with no params and tests
* Revised regular expression and removed spurious white space changes
* Revised regular expression and removed spurious white space changes
* More whitespace cleanup and added more tests for edge cases
* Added test for macro params with square brackets
* html-comment, that can be used in the pragma area
* add commentpragma test
* fix typo
* fix typo and change comments ab bit
* combine html-comment and pragma-comment and add some docs, how to use it
* Make docs simpler by removing caching info
* change h2 wording
* Transclude widget: only refresh when transcluded text reference has changed, includes tests
* Refactor wiki.parseTextReference so it is re-usable for getting the parser info
* Re-arrange methods in wiki.js to improve diff readability
* Add :sort filter run prefix, docs and tests. Also extended .utils.makeCompareFunction with a flag for caseSensitivity.
* Documentation updates
* Move case sensitivity handling entirely to utils method so it is reusable
* Make filter run prefixes extensible
* Make filter run prefixes extensible
* Support rich suffixes for filter runs
* merged conflicts
* Pass suffixes to filterrunprefix
* Replace css-escape-polyfill.js with escapecss.js utility module
* Add $tw.utils.escapeCSS() method and invoke that function within the
escapecss operator.
* Add test cases for the "escapecss" filter operator
* Fix $tw.boot.doesTaskMatchPlatform() so it works as expected if
a module's export.platforms contains more than one values
* Add missed files to the last commit
* wikirules now use better macrocall parser
Before, wikirules would use a deficient macrocall parser which couldn't
handle certain types of arguments. Now it uses the same one that the
widget parser uses. Less code!
* style changes and removing weird switch statement
That switch statement made more sense in an earlier iteration.
* comment improvements
* oops, wikirule macrocalls could do ONE thing better
* '=' wasn't allowed for widget macros, but why?
Now they're allowed for both widget macros and macrocall macros.
* Cleaned up jasmine test suite output
Also testing for expected log messages, instead of just letting them print
to the console every single time, constantly making you think there's some
warning you need to worry about, and making all those dots not line up nicely.
* switched single quotes to double in collectLogs
* Outlines of the mem efficient linked list
Need to stop for now. Found problem with $tw.utils.pushTop that I need
consultation for.
* Link list throws when given non-string vals
* Think I got rid of the last LinkList infinite loops
* LinkedList push better; fixed coding conventions
* Cleaning up LinkedList code and tests
* Ready to ship new mem efficient Linked List
* Switching to double quotes in LinkedList
Fixes#5246. Now the reduce operator and :reduce filter run prefix will
both return empty output when their input is empty, so that both can be
chained together with the else operator or :else prefix.