tiddlywiki 5.2.0 → 5.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/boot/boot.js +40 -3
- package/contributing.md +1 -1
- package/core/language/en-GB/ControlPanel.multids +15 -0
- package/core/modules/editor/engines/framed.js +1 -1
- package/core/modules/editor/engines/simple.js +1 -1
- package/core/modules/editor/factory.js +1 -1
- package/core/modules/editor/operations/text/focus-editor.js +17 -0
- package/core/modules/filterrunprefixes/cascade.js +53 -0
- package/core/modules/filterrunprefixes/filter.js +16 -9
- package/core/modules/filterrunprefixes/map.js +16 -9
- package/core/modules/filterrunprefixes/reduce.js +16 -18
- package/core/modules/filterrunprefixes/sort.js +10 -8
- package/core/modules/filters/listops.js +12 -0
- package/core/modules/filters/math.js +29 -0
- package/core/modules/filters/strings.js +11 -9
- package/core/modules/parsers/wikiparser/rules/html.js +4 -2
- package/core/modules/parsers/wikiparser/wikiparser.js +11 -8
- package/core/modules/server/routes/put-tiddler.js +1 -1
- package/core/modules/utils/dom/dragndrop.js +8 -2
- package/core/modules/utils/utils.js +0 -18
- package/core/modules/widgets/action-sendmessage.js +17 -7
- package/core/modules/widgets/action-setmultiplefields.js +86 -0
- package/core/modules/widgets/codeblock.js +7 -1
- package/core/modules/widgets/dropzone.js +2 -1
- package/core/modules/widgets/let.js +96 -0
- package/core/modules/widgets/link.js +2 -1
- package/core/modules/widgets/setmultiplevariables.js +81 -0
- package/core/modules/widgets/vars.js +2 -4
- package/core/modules/widgets/widget.js +20 -16
- package/core/modules/wiki.js +9 -4
- package/core/ui/Components/tag-link.tid +1 -1
- package/core/ui/ControlPanel/Cascades/EditTemplateBody.tid +9 -0
- package/core/ui/ControlPanel/Cascades/StoryTiddler.tid +9 -0
- package/core/ui/ControlPanel/Cascades/TiddlerColour.tid +9 -0
- package/core/ui/ControlPanel/Cascades/TiddlerIcon.tid +9 -0
- package/core/ui/ControlPanel/Cascades/ViewTemplateBody.tid +9 -0
- package/core/ui/ControlPanel/Cascades/ViewTemplateTitle.tid +9 -0
- package/core/ui/ControlPanel/Cascades.tid +9 -0
- package/core/ui/EditTemplate/body/canonical-uri.tid +13 -0
- package/core/ui/EditTemplate/body/default.tid +38 -0
- package/core/ui/EditTemplate/body.tid +1 -51
- package/core/ui/EditTemplate/tags.tid +1 -1
- package/core/ui/EditorToolbar/link-dropdown.tid +1 -1
- package/core/ui/EditorToolbar/preview.tid +4 -4
- package/core/ui/ListTaggedCascade.tid +14 -0
- package/core/ui/PageTemplate/story.tid +1 -1
- package/core/ui/PluginListItemTemplate.tid +13 -3
- package/core/ui/StoryTiddlerTemplate.tid +3 -0
- package/core/ui/TagPickerTagTemplate.tid +3 -3
- package/core/ui/TagTemplate.tid +1 -1
- package/core/ui/TiddlerIcon.tid +8 -0
- package/core/ui/ViewTemplate/body/blank.tid +3 -0
- package/core/ui/ViewTemplate/body/code.tid +3 -0
- package/core/ui/ViewTemplate/body/default.tid +7 -0
- package/core/ui/ViewTemplate/{import.tid → body/import.tid} +1 -2
- package/core/ui/ViewTemplate/body/plugin.tid +10 -0
- package/core/ui/ViewTemplate/body.tid +1 -9
- package/core/ui/ViewTemplate/title/default.tid +6 -0
- package/core/ui/ViewTemplate/title/system.tid +6 -0
- package/core/ui/ViewTemplate/title.tid +4 -17
- package/core/wiki/config/EditTemplateBodyFilters.multids +5 -0
- package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
- package/core/wiki/config/StoryTiddlerTemplateFilters.multids +5 -0
- package/core/wiki/config/TiddlerColourFilters.multids +5 -0
- package/core/wiki/config/TiddlerIconFilters.multids +5 -0
- package/core/wiki/config/ViewTemplateBodyFilters.multids +8 -0
- package/core/wiki/config/ViewTemplateTitleFilters.multids +5 -0
- package/core/wiki/debugstylesheets.tid +9 -0
- package/core/wiki/macros/tag.tid +3 -1
- package/core/wiki/peek-stylesheets.tid +3 -0
- package/core/wiki/tags/EditTemplateBodyFilter.tid +2 -0
- package/core/wiki/tags/StoryTiddlerTemplateFilter.tid +2 -0
- package/core/wiki/tags/TiddlerColourFilter.tid +3 -0
- package/core/wiki/tags/TiddlerIconFilter.tid +3 -0
- package/core/wiki/tags/ViewTemplateBodyFilter.tid +3 -0
- package/core/wiki/tags/ViewTemplateTitleFilter.tid +3 -0
- package/editions/fr-FR/tiddlers/HelloThumbnail - Latest Version.tid +1 -1
- package/editions/prerelease/tiddlers/{Release 5.2.1.tid → Release 5.2.2.tid } +10 -18
- package/editions/test/tiddlers/tests/test-filters.js +4 -0
- package/editions/test/tiddlers/tests/test-html-parser.js +17 -11
- package/editions/test/tiddlers/tests/test-prefixes-filter.js +50 -0
- package/editions/test/tiddlers/tests/test-widget.js +34 -0
- package/editions/test/tiddlers/tests/test-wikitext-parser.js +30 -30
- package/editions/tw5.com/tiddlers/$__StoryList.tid +3 -3
- package/editions/tw5.com/tiddlers/{License.tid → about/License.tid} +0 -0
- package/editions/tw5.com/tiddlers/commands/NamedCommandParameters.tid +2 -2
- package/editions/tw5.com/tiddlers/community/Contributing.tid +2 -2
- package/editions/tw5.com/tiddlers/community/TW Icons by morosanuae.tid +2 -2
- package/editions/tw5.com/tiddlers/community/TiddlyWiki Hangouts.tid +2 -2
- package/editions/tw5.com/tiddlers/community/editions/_Noteself_ by Danielo Rodriguez.tid +2 -2
- package/editions/tw5.com/tiddlers/community/examples/Reveal.js by Devin Weaver.tid +2 -2
- package/editions/tw5.com/tiddlers/community/plugins/Encrypt single tiddler plugin.tid +2 -2
- package/editions/tw5.com/tiddlers/community/plugins/TiddlyMap by Felix Kuppers.tid +2 -2
- package/editions/tw5.com/tiddlers/community/resources/TW5 Magick.tid +2 -2
- package/editions/tw5.com/tiddlers/community/resources/_Dynamic Tables_ by Jed Carty.tid +2 -2
- package/editions/tw5.com/tiddlers/community/resources/_TiddlyServer_ by Matt Lauber.tid +5 -3
- package/editions/tw5.com/tiddlers/community/resources/_muritest_ by Simon Huber.tid +2 -2
- package/editions/tw5.com/tiddlers/concepts/Cascades.tid +47 -0
- package/editions/tw5.com/tiddlers/concepts/Concepts.tid +5 -3
- package/editions/tw5.com/tiddlers/concepts/Edit Template Body Cascade.tid +16 -0
- package/editions/tw5.com/tiddlers/concepts/Messages.tid +2 -2
- package/editions/tw5.com/tiddlers/concepts/ModuleType.tid +2 -2
- package/editions/tw5.com/tiddlers/concepts/Order of Tagged Tiddlers.tid +1 -1
- package/editions/tw5.com/tiddlers/concepts/Railroad Diagrams.tid +2 -1
- package/editions/tw5.com/tiddlers/concepts/Story Tiddler Template Cascade.tid +16 -0
- package/editions/tw5.com/tiddlers/concepts/Story Tiddler Template.tid +13 -0
- package/editions/tw5.com/tiddlers/concepts/TagTiddlers.tid +1 -1
- package/editions/tw5.com/tiddlers/concepts/Tiddler Colour Cascade.tid +16 -0
- package/editions/tw5.com/tiddlers/concepts/Tiddler Icon Cascade.tid +16 -0
- package/editions/tw5.com/tiddlers/concepts/View Template Body Cascade.tid +19 -0
- package/editions/tw5.com/tiddlers/concepts/View Template Title Cascade.tid +16 -0
- package/editions/tw5.com/tiddlers/customising/Alternative page layouts.tid +1 -1
- package/editions/tw5.com/tiddlers/customising/Creating new toolbar buttons.tid +35 -0
- package/editions/tw5.com/tiddlers/customising/Customise TiddlyWiki.tid +3 -3
- package/editions/tw5.com/tiddlers/customising/Customising TiddlyWiki's user interface.tid +75 -0
- package/editions/tw5.com/tiddlers/definitions/BT.tid +3 -2
- package/editions/tw5.com/tiddlers/definitions/MathML.tid +2 -2
- package/editions/tw5.com/tiddlers/definitions/Osmosoft.tid +3 -2
- package/editions/tw5.com/tiddlers/definitions/node-webkit.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Alice in Wonderland.tid +4 -3707
- package/editions/tw5.com/tiddlers/demonstrations/Apple.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/Caruso - Ave Maria.tid +1 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Demo Tiddler List with Custom Story Tiddler Template.tid +10 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Styles.tid +31 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Template.tid +25 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/TiddlerTemplateFilter.tid +5 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomTiddlerColourCascadeDemo/CustomTiddlerColourCascadeDemo.tid +9 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomTiddlerIconCascadeDemo/CustomTiddlerIconCascadeDemo.tid +9 -0
- package/editions/tw5.com/tiddlers/demonstrations/ImageGallery Example.tid +5 -16
- package/editions/tw5.com/tiddlers/demonstrations/KeyboardDrivenInput/Demonstration_ keyboard-driven-input Macro.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/KeyboardDrivenInput/kdi-demo-configtid.tid +4 -3
- package/editions/tw5.com/tiddlers/demonstrations/SampleNotification.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerFirst.tid +3 -1
- package/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerSecond.tid +3 -1
- package/editions/tw5.com/tiddlers/demonstrations/SampleTiddlerThird.tid +3 -1
- package/editions/tw5.com/tiddlers/demonstrations/SampleWizard.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/SampleWizard2.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Contents.tid +3 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/First.tid +3 -3
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/FirstOne.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/FirstThree.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/FirstTwo.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Fourth.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Second.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondOne.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondThree.tid +3 -3
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondThreeOne.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondThreeThree.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondThreeTwo.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/SecondTwo.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/Third.tid +3 -3
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/ThirdOne.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/ThirdThree.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/TableOfContents/ThirdTwo.tid +2 -2
- package/editions/tw5.com/tiddlers/demonstrations/Tagged with TagMacro.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Tasks/Compose ballad.tid +3 -3
- package/editions/tw5.com/tiddlers/demonstrations/Tasks/Get the Ring.tid +3 -3
- package/editions/tw5.com/tiddlers/demonstrations/Tasks/Go to Mordor.tid +3 -3
- package/editions/tw5.com/tiddlers/demonstrations/Tasks/Kill the Dragon.tid +4 -4
- package/editions/tw5.com/tiddlers/demonstrations/Tasks/Make the beds.tid +3 -3
- package/editions/tw5.com/tiddlers/demonstrations/Tasks/done.tid +3 -1
- package/editions/tw5.com/tiddlers/demonstrations/Tasks/task.tid +3 -2
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Days of the Week.tid +5 -4
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Friday.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Monday.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Saturday.tid +3 -2
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Sunday.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Thursday.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Tuesday.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Weekdays/Wednesday.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/sampletag1.tid +3 -0
- package/editions/tw5.com/tiddlers/demonstrations/sampletag2.tid +3 -0
- package/editions/tw5.com/tiddlers/features/DateFormat.tid +7 -1
- package/editions/tw5.com/tiddlers/features/LazyLoading.tid +2 -3
- package/editions/tw5.com/tiddlers/features/Scalability.tid +4 -2
- package/editions/tw5.com/tiddlers/filters/acos Operator.tid +15 -0
- package/editions/tw5.com/tiddlers/filters/asin Operator.tid +15 -0
- package/editions/tw5.com/tiddlers/filters/atan Operator.tid +13 -0
- package/editions/tw5.com/tiddlers/filters/atan2 Operator.tid +15 -0
- package/editions/tw5.com/tiddlers/filters/cos Operator.tid +13 -0
- package/editions/tw5.com/tiddlers/filters/deserializers Operator.tid +1 -1
- package/editions/tw5.com/tiddlers/filters/enlist-input Operator.tid +1 -1
- package/editions/tw5.com/tiddlers/filters/examples/acos Operator (Examples).tid +7 -0
- package/editions/tw5.com/tiddlers/filters/examples/asin Operator (Examples).tid +7 -0
- package/editions/tw5.com/tiddlers/filters/examples/atan Operator (Examples).tid +7 -0
- package/editions/tw5.com/tiddlers/filters/examples/atan2 Operator (Examples).tid +7 -0
- package/editions/tw5.com/tiddlers/filters/examples/cos Operator (Examples).tid +7 -0
- package/editions/tw5.com/tiddlers/filters/examples/cycle Operator (Examples).tid +1 -1
- package/editions/tw5.com/tiddlers/filters/examples/log Operator (Examples).tid +1 -1
- package/editions/tw5.com/tiddlers/filters/examples/lookup Operator (Examples).tid +2 -1
- package/editions/tw5.com/tiddlers/filters/examples/match Operator (Examples).tid +1 -1
- package/editions/tw5.com/tiddlers/filters/examples/search-replace Operator (Examples).tid +8 -2
- package/editions/tw5.com/tiddlers/filters/examples/sin Operator (Examples).tid +7 -0
- package/editions/tw5.com/tiddlers/filters/examples/subfilter Operator (Examples).tid +25 -3
- package/editions/tw5.com/tiddlers/filters/examples/tan Operator (Examples).tid +7 -0
- package/editions/tw5.com/tiddlers/filters/examples/zth Operator (Examples).tid +10 -0
- package/editions/tw5.com/tiddlers/filters/list.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/nth.tid +9 -7
- package/editions/tw5.com/tiddlers/filters/range.tid +1 -1
- package/editions/tw5.com/tiddlers/filters/sin Operator.tid +13 -0
- package/editions/tw5.com/tiddlers/filters/storyviews.tid +1 -1
- package/editions/tw5.com/tiddlers/filters/subfilter Operator.tid +4 -2
- package/editions/tw5.com/tiddlers/filters/syntax/Cascade Filter Run Prefix (Examples).tid +46 -0
- package/editions/tw5.com/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid +20 -0
- package/editions/tw5.com/tiddlers/filters/syntax/Filter Expression.tid +4 -2
- package/editions/tw5.com/tiddlers/filters/syntax/Filter Filter Run Prefix (Examples).tid +30 -0
- package/editions/tw5.com/tiddlers/filters/syntax/Filter Filter Run Prefix.tid +27 -0
- package/editions/tw5.com/tiddlers/filters/syntax/Filter Run Prefix (Examples).tid +7 -36
- package/editions/tw5.com/tiddlers/filters/syntax/Intersection Filter Run Prefix (Examples).tid +36 -0
- package/editions/tw5.com/tiddlers/filters/syntax/Intersection Filter Run Prefix.tid +15 -0
- package/editions/tw5.com/tiddlers/filters/syntax/Map Filter Run Prefix (Examples).tid +26 -1
- package/editions/tw5.com/tiddlers/filters/syntax/Map Filter Run Prefix.tid +9 -1
- package/editions/tw5.com/tiddlers/filters/syntax/Named Filter Run Prefix.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/syntax/Reduce Filter Run Prefix (Examples).tid +27 -0
- package/editions/tw5.com/tiddlers/filters/syntax/Reduce Filter Run Prefix.tid +38 -0
- package/editions/tw5.com/tiddlers/filters/tan Operator.tid +13 -0
- package/editions/tw5.com/tiddlers/filters/zth Operator.tid +18 -0
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Android.tid +2 -1
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Chrome.tid +2 -1
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Firefox.tid +2 -1
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Internet Explorer.tid +2 -1
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Node.js.tid +2 -1
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Online.tid +2 -2
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - Safari.tid +2 -1
- package/editions/tw5.com/tiddlers/gettingstarted/GettingStarted - iOS.tid +2 -1
- package/editions/tw5.com/tiddlers/{AllTiddlers.tid → hellothere/AllTiddlers.tid} +0 -0
- package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +1 -1
- package/editions/tw5.com/tiddlers/hellothere/Some of the things you can do with TiddlyWiki.tid +2 -2
- package/editions/tw5.com/tiddlers/hellothere/badges/ProductHunt-Badge.svg.tid +1 -0
- package/editions/tw5.com/tiddlers/hellothere/badges/ProductHunt-Link.tid +1 -0
- package/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting NewImageType.tid +3 -1
- package/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting ShowEditPreviewPerTiddler.tid +10 -0
- package/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting_ Typin Refresh Delay.tid +2 -2
- package/editions/tw5.com/tiddlers/howtos/Creating SubStories.tid +21 -33
- package/editions/tw5.com/tiddlers/howtos/Debugging Stylesheets.tid +11 -0
- package/editions/tw5.com/tiddlers/howtos/How to create a custom story tiddler template.tid +40 -0
- package/editions/tw5.com/tiddlers/howtos/How to create a custom tiddler colour rule.tid +36 -0
- package/editions/tw5.com/tiddlers/howtos/How to create a custom tiddler icon rule.tid +36 -0
- package/editions/tw5.com/tiddlers/howtos/How to create dynamic editor toolbar buttons.tid +2 -2
- package/editions/tw5.com/tiddlers/howtos/Simple ways to write protect tiddlers.tid +4 -5
- package/editions/tw5.com/tiddlers/howtos/Text preview.tid +6 -2
- package/editions/tw5.com/tiddlers/howtos/Using Stylesheets.tid +8 -4
- package/editions/tw5.com/tiddlers/images/Icon Gallery.tid +14 -0
- package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
- package/editions/tw5.com/tiddlers/languages/LanguageGallery.tid +2 -2
- package/editions/tw5.com/tiddlers/macros/examples/colour-picker Macro (Example 1).tid +2 -2
- package/editions/tw5.com/tiddlers/macros/examples/image-picker Macro (Example 1).tid +2 -2
- package/editions/tw5.com/tiddlers/macros/examples/image-picker Macro (Example 2).tid +2 -2
- package/editions/tw5.com/tiddlers/macros/examples/unusedtitle Macro (Examples 1).tid +2 -2
- package/editions/tw5.com/tiddlers/mechanisms/RefreshThrottling.tid +2 -2
- package/editions/tw5.com/tiddlers/mechanisms/StateMechanism.tid +2 -2
- package/editions/tw5.com/tiddlers/messages/SampleModal.tid +2 -1
- package/editions/tw5.com/tiddlers/messages/SampleWindowTemplate.tid +10 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-edit-text-operation.tid +3 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +22 -4
- package/editions/tw5.com/tiddlers/nodejs/Environment Variables on Node.js.tid +4 -2
- package/editions/tw5.com/tiddlers/nodejs/Installing TiddlyWiki on Node.js.tid +10 -3
- package/editions/tw5.com/tiddlers/nodejs/tiddlywiki.files_Files.tid +6 -5
- package/editions/tw5.com/tiddlers/nodejs/tiddlywiki.info_Files.tid +2 -2
- package/editions/tw5.com/tiddlers/platforms/TiddlyFox Apocalypse.tid +2 -2
- package/editions/tw5.com/tiddlers/platforms/TiddlyWiki in the Sky for TiddlyWeb.tid +3 -8
- package/editions/tw5.com/tiddlers/plugins/Plugin Types.tid +2 -2
- package/editions/tw5.com/tiddlers/reference/Reference.tid +1 -0
- package/editions/tw5.com/tiddlers/releasenotes/BetaReleases.tid +2 -2
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.1.tid +118 -0
- package/editions/tw5.com/tiddlers/releasenotes/ReleaseTemplate.tid +3 -0
- package/editions/tw5.com/tiddlers/releasenotes/alpha/AlphaReleases.tid +2 -2
- package/editions/tw5.com/tiddlers/saving/Example config-tiddlyweb-host for IIS.txt.meta +1 -1
- package/editions/tw5.com/tiddlers/saving/Example package.json for IIS.txt.meta +1 -1
- package/editions/tw5.com/tiddlers/saving/Example tiddlywiki.info for IIS.txt.meta +1 -1
- package/editions/tw5.com/tiddlers/saving/Example web.config for IIS.txt.meta +1 -1
- package/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +31 -1
- package/editions/tw5.com/tiddlers/styleguide/Documentation Macros.tid +6 -2
- package/editions/tw5.com/tiddlers/{TableOfContents.tid → system/TableOfContents.tid} +0 -0
- package/editions/tw5.com/tiddlers/system/doc-macros.tid +17 -0
- package/editions/tw5.com/tiddlers/system/doc-styles.tid +32 -1
- package/editions/tw5.com/tiddlers/system/operator-macros.tid +12 -5
- package/editions/tw5.com/tiddlers/system/operator-template.tid +8 -8
- package/editions/tw5.com/tiddlers/systemtags/SystemTag_ $__tags_Image.tid +2 -2
- package/editions/tw5.com/tiddlers/variables/examples/Sample Headings 1-2-3.tid +2 -1
- package/editions/tw5.com/tiddlers/variables/examples/Sample Headings 3-4-5.tid +2 -1
- package/editions/tw5.com/tiddlers/variables/examples/Sample Headings 4-5-6.tid +2 -1
- package/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget Example 1.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget Example 2.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget Example 3.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget Example 4.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget Template.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/ActionCreateTiddlerWidget_Example.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/ActionListopsWidget.tid +52 -2
- package/editions/tw5.com/tiddlers/widgets/ActionSendMessageWidget.tid +3 -1
- package/editions/tw5.com/tiddlers/widgets/ActionSetMultipleFieldsWidget.tid +31 -0
- package/editions/tw5.com/tiddlers/widgets/ActionWidget Execution Modes.tid +5 -2
- package/editions/tw5.com/tiddlers/widgets/ActionWidgets.tid +4 -4
- package/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/DropzoneWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +8 -19
- package/editions/tw5.com/tiddlers/widgets/EditWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/FieldManglerWidget.tid +3 -3
- package/editions/tw5.com/tiddlers/{Keyboard Codes.tid → widgets/Keyboard Codes.tid} +0 -0
- package/editions/tw5.com/tiddlers/widgets/KeyboardWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/LetWidget.tid +57 -0
- package/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/ListopsData.tid +1 -0
- package/editions/tw5.com/tiddlers/widgets/MessageCatcherWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/MessageHandlerWidgets.tid +13 -0
- package/editions/tw5.com/tiddlers/widgets/NavigatorWidget.tid +5 -2
- package/editions/tw5.com/tiddlers/widgets/RadioWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/RangeWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/SelectWidget.tid +15 -2
- package/editions/tw5.com/tiddlers/widgets/SetMultipleVariablesWidget.tid +33 -0
- package/editions/tw5.com/tiddlers/widgets/The Extended Listops Filters.tid +2 -1
- package/editions/tw5.com/tiddlers/widgets/TriggeringWidgets.tid +13 -0
- package/editions/tw5.com/tiddlers/widgets/VarsWidget.tid +7 -5
- package/editions/tw5.com/tiddlers/wikitext/Transclusion and Substitution.tid +3 -2
- package/languages/pl-PL/ControlPanel.multids +1 -1
- package/languages/pl-PL/Docs/PaletteColours.multids +1 -1
- package/languages/pl-PL/Import.multids +1 -1
- package/languages/pl-PL/Misc.multids +2 -2
- package/languages/pl-PL/SideBar.multids +1 -1
- package/languages/zh-Hans/ControlPanel.multids +15 -0
- package/languages/zh-Hant/ControlPanel.multids +15 -0
- package/licenses/cla-individual.md +10 -0
- package/package.json +1 -1
- package/plugins/tiddlywiki/codemirror/engine.js +55 -2
- package/readme.md +2 -2
- package/themes/tiddlywiki/vanilla/ThemeTweaks.tid +7 -3
- package/themes/tiddlywiki/vanilla/base.tid +6 -0
- package/themes/tiddlywiki/vanilla/reset.tid +1 -1
- package/core/ui/ViewTemplate/plugin.tid +0 -15
- package/editions/tw5.com/tiddlers/customising/Page and tiddler layout customisation.tid +0 -63
- package/editions/tw5.com/tiddlers/demonstrations/SampleAlert.tid +0 -9
@@ -288,6 +288,38 @@ describe("'reduce' and 'intersection' filter prefix tests", function() {
|
|
288
288
|
tags: ["cakes","with tea"],
|
289
289
|
text: "Does anyone eat pound cake?"
|
290
290
|
});
|
291
|
+
wiki.addTiddler({
|
292
|
+
title: "$:/filter1",
|
293
|
+
text: "[tag[cakes]then[It is customary]]",
|
294
|
+
tags: "$:/tags/Filter $:/tags/SecondFilter"
|
295
|
+
});
|
296
|
+
wiki.addTiddler({
|
297
|
+
title: "$:/filter2",
|
298
|
+
text: "[<currentTiddler>tag[shopping]then[It is not customary]]",
|
299
|
+
tags: "$:/tags/Filter $:/tags/SecondFilter"
|
300
|
+
});
|
301
|
+
wiki.addTiddler({
|
302
|
+
title: "$:/filter3",
|
303
|
+
text: "[[Just a default]]",
|
304
|
+
tags: "$:/tags/Filter"
|
305
|
+
});
|
306
|
+
wiki.addTiddler({
|
307
|
+
title: "$:/tags/Filter",
|
308
|
+
list: "$:/filter1 $:/filter2 $:/filter3"
|
309
|
+
});
|
310
|
+
wiki.addTiddler({
|
311
|
+
title: "$:/tags/SecondFilter",
|
312
|
+
list: "$:/filter1 $:/filter2"
|
313
|
+
});
|
314
|
+
|
315
|
+
it("should handle the :cascade filter prefix", function() {
|
316
|
+
expect(wiki.filterTiddlers("[[Rice Pudding]] :cascade[all[shadows+tiddlers]tag[$:/tags/Filter]get[text]]").join(",")).toBe("It is not customary");
|
317
|
+
expect(wiki.filterTiddlers("[[chocolate cake]] :cascade[all[shadows+tiddlers]tag[$:/tags/Filter]get[text]]").join(",")).toBe("It is customary");
|
318
|
+
expect(wiki.filterTiddlers("[[Sparkling water]] :cascade[all[shadows+tiddlers]tag[$:/tags/Filter]get[text]]").join(",")).toBe("Just a default");
|
319
|
+
expect(wiki.filterTiddlers("[[Rice Pudding]] :cascade[all[shadows+tiddlers]tag[$:/tags/SecondFilter]get[text]]").join(",")).toBe("It is not customary");
|
320
|
+
expect(wiki.filterTiddlers("[[chocolate cake]] :cascade[all[shadows+tiddlers]tag[$:/tags/SecondFilter]get[text]]").join(",")).toBe("It is customary");
|
321
|
+
expect(wiki.filterTiddlers("[[Sparkling water]] :cascade[all[shadows+tiddlers]tag[$:/tags/SecondFilter]get[text]]").join(",")).toBe("");
|
322
|
+
});
|
291
323
|
|
292
324
|
it("should handle the :reduce filter prefix", function() {
|
293
325
|
expect(wiki.filterTiddlers("[tag[shopping]] :reduce[get[quantity]add<accumulator>]").join(",")).toBe("22");
|
@@ -384,6 +416,24 @@ describe("'reduce' and 'intersection' filter prefix tests", function() {
|
|
384
416
|
expect(wiki.filterTiddlers("[tag[shopping]] :map[get[description]else{!!title}]").join(",")).toBe("A square of rich chocolate cake,a round yellow seed,Milk,Rice Pudding");
|
385
417
|
// Return the first title from :map if the filter returns more than one result
|
386
418
|
expect(wiki.filterTiddlers("[tag[shopping]] :map[tags[]]").join(",")).toBe("shopping,shopping,shopping,shopping");
|
419
|
+
// Prepend the position in the list using the index and length variables
|
420
|
+
expect(wiki.filterTiddlers("[tag[shopping]] :map[get[title]addprefix[-]addprefix<length>addprefix[of]addprefix<index>]").join(",")).toBe("0of4-Brownies,1of4-Chick Peas,2of4-Milk,3of4-Rice Pudding");
|
421
|
+
});
|
422
|
+
|
423
|
+
it("should handle macro parameters for filter run prefixes",function() {
|
424
|
+
var widget = require("$:/core/modules/widgets/widget.js");
|
425
|
+
var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] },
|
426
|
+
{ wiki:wiki, document:$tw.document});
|
427
|
+
rootWidget.makeChildWidgets();
|
428
|
+
var anchorWidget = rootWidget.children[0];
|
429
|
+
rootWidget.setVariable("greet","Hello $name$",[{name:"name"}],true);
|
430
|
+
rootWidget.setVariable("echo","$text$",[{name:"text"}],true);
|
431
|
+
// :map prefix
|
432
|
+
expect(wiki.filterTiddlers("1 :map[subfilter<greet Tom>join[ ]]",anchorWidget).join(",")).toBe("Hello Tom");
|
433
|
+
expect(wiki.filterTiddlers('[tag[shopping]] :map[<echo "$(index)$ $(currentTiddler)$">]',anchorWidget).join(",")).toBe("0 Brownies,1 Chick Peas,2 Milk,3 Rice Pudding");
|
434
|
+
// :reduce prefix
|
435
|
+
expect(wiki.filterTiddlers("1 :reduce[subfilter<greet Tom>join[ ]]",anchorWidget).join(",")).toBe("Hello Tom");
|
436
|
+
expect(wiki.filterTiddlers('[tag[shopping]] :reduce[<echo "$(accumulator)$ $(index)$ $(currentTiddler)$,">]',anchorWidget).join(",")).toBe(" 0 Brownies, 1 Chick Peas, 2 Milk, 3 Rice Pudding,");
|
387
437
|
});
|
388
438
|
});
|
389
439
|
|
@@ -247,6 +247,40 @@ describe("Widget module", function() {
|
|
247
247
|
expect(wrapper.children[0].children[2].sequenceNumber).toBe(4);
|
248
248
|
});
|
249
249
|
|
250
|
+
it("should deal with the let widget", function() {
|
251
|
+
var wiki = new $tw.Wiki();
|
252
|
+
wiki.addTiddlers([
|
253
|
+
{title: "TiddlerOne", text: "lookup"},
|
254
|
+
{title: "TiddlerTwo", lookup: "value", newlookup: "value", wrong: "wrong"},
|
255
|
+
{title: "TiddlerThree", text: "wrong", value: "Happy Result", wrong: "ALL WRONG!!"}
|
256
|
+
]);
|
257
|
+
var text="\\define macro() TiddlerThree\n"+
|
258
|
+
"\\define currentTiddler() TiddlerOne\n"+
|
259
|
+
"<$let "+
|
260
|
+
"field={{!!text}} "+
|
261
|
+
"currentTiddler='TiddlerTwo' "+
|
262
|
+
"field={{{ [all[current]get<field>] }}} "+
|
263
|
+
"currentTiddler=<<macro>>>"+
|
264
|
+
"<$transclude field=<<field>>/></$let>";
|
265
|
+
var widgetNode = createWidgetNode(parseText(text,wiki),wiki);
|
266
|
+
var wrapper = renderWidgetNode(widgetNode);
|
267
|
+
expect(wrapper.innerHTML).toBe("<p>Happy Result</p>");
|
268
|
+
|
269
|
+
// This is important. $Let needs to be aware enough not to let its
|
270
|
+
// own variables interfere with its ability to recognize no change.
|
271
|
+
// Doesn't matter that nothing has changed, we just need to make sure
|
272
|
+
// it recognizes that that its outward facing variables are unchanged
|
273
|
+
// EVEN IF some intermediate variables did change, there's no need to
|
274
|
+
// refresh.
|
275
|
+
wiki.addTiddler({title: "TiddlerOne", text: "newlookup"});
|
276
|
+
expect(widgetNode.refresh({})).toBe(false);
|
277
|
+
|
278
|
+
// But if we make a change that might result in different outfacing
|
279
|
+
// variables, then it should refresh
|
280
|
+
wiki.addTiddler({title: "TiddlerOne", text: "badlookup"});
|
281
|
+
expect(widgetNode.refresh({})).toBe(true);
|
282
|
+
});
|
283
|
+
|
250
284
|
it("should deal with attributes specified as macro invocations", function() {
|
251
285
|
var wiki = new $tw.Wiki();
|
252
286
|
// Construct the widget node
|
@@ -25,88 +25,88 @@ describe("WikiText parser tests", function() {
|
|
25
25
|
it("should parse tags", function() {
|
26
26
|
expect(parse("<br>")).toEqual(
|
27
27
|
|
28
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'br', isBlock : false, attributes : { },
|
28
|
+
[ { type : 'element', tag : 'p', start : 0, end : 4, children : [ { type : 'element', tag : 'br', start : 0, end : 4, isBlock : false, attributes : { }, orderedAttributes: [ ] } ] } ]
|
29
29
|
|
30
30
|
);
|
31
31
|
expect(parse("</br>")).toEqual(
|
32
32
|
|
33
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'text', text : '</br>' } ] } ]
|
33
|
+
[ { type : 'element', tag : 'p', start : 0, end : 5, children : [ { type : 'text', text : '</br>', start : 0, end : 5 } ] } ]
|
34
34
|
|
35
35
|
);
|
36
36
|
expect(parse("<div>")).toEqual(
|
37
37
|
|
38
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { },
|
38
|
+
[ { type : 'element', tag : 'p', start : 0, end : 5, children : [ { type : 'element', tag : 'div', start : 0, end : 5, isBlock : false, attributes : { }, orderedAttributes: [ ], children : [ ] } ] } ]
|
39
39
|
|
40
40
|
);
|
41
41
|
expect(parse("<div/>")).toEqual(
|
42
42
|
|
43
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isSelfClosing : true, isBlock : false, attributes : { }, start : 0, end : 6 } ] } ]
|
43
|
+
[ { type : 'element', tag : 'p', start : 0, end : 6, children : [ { type : 'element', tag : 'div', isSelfClosing : true, isBlock : false, attributes : { }, orderedAttributes: [ ], start : 0, end : 6 } ] } ]
|
44
44
|
|
45
45
|
);
|
46
46
|
expect(parse("<div></div>")).toEqual(
|
47
47
|
|
48
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ ], start : 0, end : 5 } ] } ]
|
48
|
+
[ { type : 'element', tag : 'p', start : 0, end : 11, children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, orderedAttributes: [ ], children : [ ], start : 0, end : 5 } ] } ]
|
49
49
|
|
50
50
|
);
|
51
51
|
expect(parse("<div>some text</div>")).toEqual(
|
52
52
|
|
53
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ { type : 'text', text : 'some text' } ], start : 0, end : 5 } ] } ]
|
53
|
+
[ { type : 'element', tag : 'p', start : 0, end : 20, children : [ { type : 'element', tag : 'div', start : 0, end : 20, isBlock : false, attributes : { }, orderedAttributes: [ ], children : [ { type : 'text', text : 'some text', start : 5, end : 14 } ], start : 0, end : 5 } ] } ]
|
54
54
|
|
55
55
|
);
|
56
56
|
expect(parse("<div attribute>some text</div>")).toEqual(
|
57
57
|
|
58
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'string', value : 'true', start : 4, end : 14, name: 'attribute' } }, children : [ { type : 'text', text : 'some text' } ], start : 0, end : 15 } ] } ]
|
58
|
+
[ { type : 'element', tag : 'p', start : 0, end : 30, children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'string', value : 'true', start : 4, end : 14, name: 'attribute' } }, orderedAttributes: [ { type : 'string', value : 'true', start : 4, end : 14, name: 'attribute' } ], children : [ { type : 'text', text : 'some text', start : 15, end : 24 } ], start : 0, end : 15 } ] } ]
|
59
59
|
|
60
60
|
);
|
61
61
|
expect(parse("<div attribute='value'>some text</div>")).toEqual(
|
62
62
|
|
63
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'string', name: 'attribute', value : 'value', start: 4, end: 22 } }, children : [ { type : 'text', text : 'some text' } ], start: 0, end: 23 } ] } ]
|
63
|
+
[ { type : 'element', tag : 'p', start : 0, end : 38, children : [ { type : 'element', tag : 'div', start: 0, end: 38, isBlock : false, attributes : { attribute : { type : 'string', name: 'attribute', value : 'value', start: 4, end: 22 } }, orderedAttributes: [ { type: 'string', name: 'attribute', value : 'value', start: 4, end: 22 } ], children : [ { type : 'text', text : 'some text', start : 23, end : 32 } ], start : 0, end : 23 } ] } ]
|
64
64
|
|
65
65
|
);
|
66
66
|
expect(parse("<div attribute={{TiddlerTitle}}>some text</div>")).toEqual(
|
67
67
|
|
68
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', name: 'attribute', textReference : 'TiddlerTitle', start : 4, end : 31 } }, children : [ { type : 'text', text : 'some text' } ], start : 0, end : 32 } ] } ]
|
68
|
+
[ { type : 'element', tag : 'p', start: 0, end: 47, children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', name: 'attribute', textReference : 'TiddlerTitle', start : 4, end : 31 } }, orderedAttributes: [ { type : 'indirect', name: 'attribute', textReference : 'TiddlerTitle', start : 4, end : 31 } ], children : [ { type : 'text', text : 'some text', start : 32, end : 41 } ], start : 0, end : 32 } ] } ]
|
69
69
|
|
70
70
|
);
|
71
71
|
expect(parse("<$reveal state='$:/temp/search' type='nomatch' text=''>")).toEqual(
|
72
72
|
|
73
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'reveal', tag: '$reveal', start : 0, attributes : { state : { start : 8, name : 'state', type : 'string', value : '$:/temp/search', end : 31 }, type : { start : 31, name : 'type', type : 'string', value : 'nomatch', end : 46 }, text : { start : 46, name : 'text', type : 'string', value : '', end : 54 } }, end : 55, isBlock : false, children : [ ] } ] } ]
|
73
|
+
[ { type : 'element', tag : 'p', start: 0, end: 55, children : [ { type : 'reveal', tag: '$reveal', start : 0, attributes : { state : { start : 8, name : 'state', type : 'string', value : '$:/temp/search', end : 31 }, type : { start : 31, name : 'type', type : 'string', value : 'nomatch', end : 46 }, text : { start : 46, name : 'text', type : 'string', value : '', end : 54 } }, orderedAttributes: [ { start : 8, name : 'state', type : 'string', value : '$:/temp/search', end : 31 }, { start : 31, name : 'type', type : 'string', value : 'nomatch', end : 46 }, { start : 46, name : 'text', type : 'string', value : '', end : 54 } ], end : 55, isBlock : false, children : [ ] } ] } ]
|
74
74
|
|
75
75
|
);
|
76
76
|
expect(parse("<div attribute={{TiddlerTitle!!field}}>some text</div>")).toEqual(
|
77
77
|
|
78
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', name : 'attribute', textReference : 'TiddlerTitle!!field', start : 4, end : 38 } }, children : [ { type : 'text', text : 'some text' } ], start : 0, end : 39 } ] } ]
|
78
|
+
[ { type : 'element', tag : 'p', start: 0, end: 54, children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', name : 'attribute', textReference : 'TiddlerTitle!!field', start : 4, end : 38 } }, orderedAttributes: [ { type : 'indirect', name : 'attribute', textReference : 'TiddlerTitle!!field', start : 4, end : 38 } ], children : [ { type : 'text', text : 'some text', start : 39, end : 48 } ], start : 0, end : 39 } ] } ]
|
79
79
|
|
80
80
|
);
|
81
81
|
expect(parse("<div attribute={{Tiddler Title!!field}}>some text</div>")).toEqual(
|
82
82
|
|
83
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', name : 'attribute', textReference : 'Tiddler Title!!field', start : 4, end : 39 } }, children : [ { type : 'text', text : 'some text' } ], start : 0, end : 40 } ] } ]
|
83
|
+
[ { type : 'element', tag : 'p', start: 0, end: 55, children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', name : 'attribute', textReference : 'Tiddler Title!!field', start : 4, end : 39 } }, orderedAttributes: [ { type : 'indirect', name : 'attribute', textReference : 'Tiddler Title!!field', start : 4, end : 39 } ], children : [ { type : 'text', text : 'some text', start : 40, end : 49 } ], start : 0, end : 40 } ] } ]
|
84
84
|
|
85
85
|
);
|
86
86
|
expect(parse("<div attribute={{TiddlerTitle!!field}}>\n\nsome text</div>")).toEqual(
|
87
87
|
|
88
|
-
[ { type : 'element', start : 0, attributes : { attribute : { start : 4, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 38 } }, tag : 'div', end : 39, isBlock : true, children : [ { type : 'element', tag : 'p', children : [ { type : 'text', text : 'some text' } ] } ] } ]
|
88
|
+
[ { type : 'element', start : 0, attributes : { attribute : { start : 4, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 38 } }, orderedAttributes: [ { start : 4, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 38 } ], tag : 'div', end : 39, isBlock : true, children : [ { type : 'element', tag : 'p', start : 41, end : 50, children : [ { type : 'text', text : 'some text', start : 41, end : 50 } ] } ] } ]
|
89
89
|
|
90
90
|
);
|
91
91
|
expect(parse("<div><div attribute={{TiddlerTitle!!field}}>\n\nsome text</div></div>")).toEqual(
|
92
92
|
|
93
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', start : 0, attributes : { }, tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, tag : 'div', end : 44, isBlock : true, children : [ { type : 'element', tag : 'p', children : [ { type : 'text', text : 'some text' } ] } ] } ] } ] } ]
|
93
|
+
[ { type : 'element', tag : 'p', start: 0, end: 67, children : [ { type : 'element', start : 0, attributes : { }, orderedAttributes: [ ], tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, orderedAttributes: [ { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } ], tag : 'div', end : 44, isBlock : true, children : [ { type : 'element', tag : 'p', start : 46, end : 55, children : [ { type : 'text', text : 'some text', start : 46, end : 55 } ] } ] } ] } ] } ]
|
94
94
|
|
95
95
|
);
|
96
96
|
expect(parse("<div><div attribute={{TiddlerTitle!!field}}>\n\n!some heading</div></div>")).toEqual(
|
97
97
|
|
98
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', start : 0, attributes : { }, tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, tag : 'div', end : 44, isBlock : true, children : [ { type : 'element', tag : 'h1', attributes : { class : { type : 'string', value : '' } }, children : [ { type : 'text', text : 'some heading</div></div>' } ] } ] } ] } ] } ]
|
98
|
+
[ { type : 'element', tag : 'p', start: 0, end: 71, children : [ { type : 'element', start : 0, attributes : { }, orderedAttributes: [ ], tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, orderedAttributes: [ { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } ], tag : 'div', end : 44, isBlock : true, children : [ { type : 'element', tag : 'h1', attributes : { class : { type : 'string', value : '' } }, children : [ { type : 'text', text : 'some heading</div></div>', start : 47, end : 71 } ] } ] } ] } ] } ]
|
99
99
|
|
100
100
|
);
|
101
101
|
expect(parse("<div><div attribute={{TiddlerTitle!!field}}>\n!some heading</div></div>")).toEqual(
|
102
102
|
|
103
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', start : 0, attributes : { }, tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, tag : 'div', end : 44, isBlock : false, children : [ { type : 'text', text : '\n!some heading' } ] } ] } ] } ]
|
103
|
+
[ { type : 'element', tag : 'p', start: 0, end: 70, children : [ { type : 'element', start : 0, attributes : { }, orderedAttributes: [ ], tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { attribute : { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } }, orderedAttributes: [ { start : 9, name : 'attribute', type : 'indirect', textReference : 'TiddlerTitle!!field', end : 43 } ], tag : 'div', end : 44, isBlock : false, children : [ { type : 'text', text : '\n!some heading', start : 44, end : 58 } ] } ] } ] } ]
|
104
104
|
|
105
105
|
);
|
106
106
|
// Regression test for issue (#3306)
|
107
107
|
expect(parse("<div><span><span>\n\nSome text</span></span></div>")).toEqual(
|
108
108
|
|
109
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'element', start : 0, attributes : { }, tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { }, tag : 'span', end : 11, isBlock : false, children : [ { type : 'element', start : 11, attributes : { }, tag : 'span', end : 17, isBlock : true, children : [ { type : 'element', tag : 'p', children : [ { type : 'text', text : 'Some text' } ] } ] } ] } ] } ] } ]
|
109
|
+
[ { type : 'element', tag : 'p', start: 0, end: 48, children : [ { type : 'element', start : 0, attributes : { }, orderedAttributes: [ ], tag : 'div', end : 5, isBlock : false, children : [ { type : 'element', start : 5, attributes : { }, orderedAttributes: [ ], tag : 'span', end : 11, isBlock : false, children : [ { type : 'element', start : 11, attributes : { }, orderedAttributes: [ ], tag : 'span', end : 17, isBlock : true, children : [ { type : 'element', tag : 'p', start : 19, end : 28, children : [ { type : 'text', text : 'Some text', start : 19, end : 28 } ] } ] } ] } ] } ] } ]
|
110
110
|
|
111
111
|
);
|
112
112
|
});
|
@@ -130,38 +130,38 @@ describe("WikiText parser tests", function() {
|
|
130
130
|
it("should parse inline macro calls", function() {
|
131
131
|
expect(parse("<<john>><<paul>><<george>><<ringo>>")).toEqual(
|
132
132
|
|
133
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'macrocall', start: 0, params: [ ], name: 'john', end: 8 }, { type: 'macrocall', start: 8, params: [ ], name: 'paul', end: 16 }, { type: 'macrocall', start: 16, params: [ ], name: 'george', end: 26 }, { type: 'macrocall', start: 26, params: [ ], name: 'ringo', end: 35 } ] } ]
|
133
|
+
[ { type: 'element', tag: 'p', start: 0, end: 35, children: [ { type: 'macrocall', start: 0, params: [ ], name: 'john', end: 8 }, { type: 'macrocall', start: 8, params: [ ], name: 'paul', end: 16 }, { type: 'macrocall', start: 16, params: [ ], name: 'george', end: 26 }, { type: 'macrocall', start: 26, params: [ ], name: 'ringo', end: 35 } ] } ]
|
134
134
|
|
135
135
|
);
|
136
136
|
expect(parse("text <<john one:val1 two: 'val \"2\"' three: \"val '3'\" four: \"\"\"val 4\"5'\"\"\" five: [[val 5]] >>")).toEqual(
|
137
137
|
|
138
|
-
[{ type: 'element', tag: 'p', children: [ { type: 'text', text: 'text ' }, { type: 'macrocall', name: 'john', start: 5, params: [ { type: 'macro-parameter', start: 11, value: 'val1', name: 'one', end: 20 }, { type: 'macro-parameter', start: 20, value: 'val "2"', name: 'two', end: 35 }, { type: 'macro-parameter', start: 35, value: 'val \'3\'', name: 'three', end: 52 }, { type: 'macro-parameter', start: 52, value: 'val 4"5\'', name: 'four', end: 73 }, { type: 'macro-parameter', start: 73, value: 'val 5', name: 'five', end: 89 } ], end: 92 } ] } ]
|
138
|
+
[{ type: 'element', tag: 'p', start: 0, end: 92, children: [ { type: 'text', text: 'text ', start: 0, end: 5 }, { type: 'macrocall', name: 'john', start: 5, params: [ { type: 'macro-parameter', start: 11, value: 'val1', name: 'one', end: 20 }, { type: 'macro-parameter', start: 20, value: 'val "2"', name: 'two', end: 35 }, { type: 'macro-parameter', start: 35, value: 'val \'3\'', name: 'three', end: 52 }, { type: 'macro-parameter', start: 52, value: 'val 4"5\'', name: 'four', end: 73 }, { type: 'macro-parameter', start: 73, value: 'val 5', name: 'five', end: 89 } ], end: 92 } ] } ]
|
139
139
|
|
140
140
|
);
|
141
141
|
expect(parse("ignored << carrots <<john>>")).toEqual(
|
142
142
|
|
143
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'text', text: 'ignored << carrots ' }, { type: 'macrocall', name: 'john', start: 19, params: [ ], end: 27 } ] } ]
|
143
|
+
[ { type: 'element', tag: 'p', start: 0, end: 27, children: [ { type: 'text', text: 'ignored << carrots ', start: 0, end: 19 }, { type: 'macrocall', name: 'john', start: 19, params: [ ], end: 27 } ] } ]
|
144
144
|
|
145
145
|
);
|
146
146
|
expect(parse("text <<<john>>")).toEqual(
|
147
147
|
|
148
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'text', text: 'text ' }, { type: 'macrocall', name: '<john', start: 5, params: [ ], end: 14 } ] } ]
|
148
|
+
[ { type: 'element', tag: 'p', start: 0, end: 14, children: [ { type: 'text', text: 'text ', start: 0, end: 5 }, { type: 'macrocall', name: '<john', start: 5, params: [ ], end: 14 } ] } ]
|
149
149
|
|
150
150
|
);
|
151
151
|
expect(parse("before\n<<john>>")).toEqual(
|
152
152
|
|
153
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'text', text: 'before\n' }, { type: 'macrocall', start: 7, params: [ ], name: 'john', end: 15 } ] } ]
|
153
|
+
[ { type: 'element', tag: 'p', start: 0, end: 15, children: [ { type: 'text', text: 'before\n', start: 0, end: 7 }, { type: 'macrocall', start: 7, params: [ ], name: 'john', end: 15 } ] } ]
|
154
154
|
|
155
155
|
);
|
156
156
|
// A single space will cause it to be inline
|
157
157
|
expect(parse("<<john>> ")).toEqual(
|
158
158
|
|
159
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'macrocall', start: 0, params: [ ], name: 'john', end: 8 }, { type: 'text', text: ' ' } ] } ]
|
159
|
+
[ { type: 'element', tag: 'p', start: 0, end: 9, children: [ { type: 'macrocall', start: 0, params: [ ], name: 'john', end: 8 }, { type: 'text', text: ' ', start: 8, end: 9 } ] } ]
|
160
160
|
|
161
161
|
);
|
162
162
|
expect(parse("text <<outie one:'my <<innie>>' >>")).toEqual(
|
163
163
|
|
164
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'text', text: 'text ' }, { type: 'macrocall', start: 5, params: [ { type: 'macro-parameter', start: 12, value: 'my <<innie>>', name: 'one', end: 31 } ], name: 'outie', end: 34 } ] } ]
|
164
|
+
[ { type: 'element', tag: 'p', start: 0, end: 34, children: [ { type: 'text', text: 'text ', start: 0, end: 5 }, { type: 'macrocall', start: 5, params: [ { type: 'macro-parameter', start: 12, value: 'my <<innie>>', name: 'one', end: 31 } ], name: 'outie', end: 34 } ] } ]
|
165
165
|
|
166
166
|
);
|
167
167
|
|
@@ -180,17 +180,17 @@ describe("WikiText parser tests", function() {
|
|
180
180
|
);
|
181
181
|
expect(parse("<< carrots\n\n<<john>>")).toEqual(
|
182
182
|
|
183
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'text', text: '<< carrots' } ] }, { type: 'macrocall', start: 12, params: [ ], name: 'john', end: 20, isBlock: true } ]
|
183
|
+
[ { type: 'element', tag: 'p', start : 0, end : 10, children: [ { type: 'text', text: '<< carrots', start : 0, end : 10 } ] }, { type: 'macrocall', start: 12, params: [ ], name: 'john', end: 20, isBlock: true } ]
|
184
184
|
|
185
185
|
);
|
186
186
|
expect(parse("before\n\n<<john>>")).toEqual(
|
187
187
|
|
188
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'text', text: 'before' } ] }, { type: 'macrocall', start: 8, name: 'john', params: [ ], end: 16, isBlock: true } ]
|
188
|
+
[ { type: 'element', tag: 'p', start : 0, end : 6, children: [ { type: 'text', text: 'before', start : 0, end : 6 } ] }, { type: 'macrocall', start: 8, name: 'john', params: [ ], end: 16, isBlock: true } ]
|
189
189
|
|
190
190
|
);
|
191
191
|
expect(parse("<<john>>\nafter")).toEqual(
|
192
192
|
|
193
|
-
[ { type: 'macrocall', start: 0, name: 'john', params: [ ], end: 8, isBlock: true }, { type: 'element', tag: 'p', children: [ { type: 'text', text: 'after' } ] } ]
|
193
|
+
[ { type: 'macrocall', start: 0, name: 'john', params: [ ], end: 8, isBlock: true }, { type: 'element', tag: 'p', start: 9, end: 14, children: [ { type: 'text', text: 'after', start: 9, end: 14 } ] } ]
|
194
194
|
|
195
195
|
);
|
196
196
|
expect(parse("<<multiline arg:\"\"\"\n\nwikitext\n\"\"\" >>")).toEqual(
|
@@ -218,7 +218,7 @@ describe("WikiText parser tests", function() {
|
|
218
218
|
);
|
219
219
|
expect(parse("<<john param>>>")).toEqual(
|
220
220
|
|
221
|
-
[ { type: 'element', tag: 'p', children: [ { type: 'macrocall', start: 0, params: [ { type: 'macro-parameter', start: 6, value: 'param', end: 12 } ], name: 'john', end: 14 }, { type: 'text', text: '>' } ] } ]
|
221
|
+
[ { type: 'element', tag: 'p', start: 0, end: 15, children: [ { type: 'macrocall', start: 0, params: [ { type: 'macro-parameter', start: 6, value: 'param', end: 12 } ], name: 'john', end: 14 }, { type: 'text', text: '>', start: 14, end: 15 } ] } ]
|
222
222
|
|
223
223
|
);
|
224
224
|
// equals signs should be allowed
|
@@ -233,7 +233,7 @@ describe("WikiText parser tests", function() {
|
|
233
233
|
it("should parse horizontal rules", function() {
|
234
234
|
expect(parse("---Not a rule\n\n----\n\nBetween\n\n---")).toEqual(
|
235
235
|
|
236
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'entity', entity : '—' }, { type : 'text', text : 'Not a rule' } ] }, { type : 'element', tag : 'hr' }, { type : 'element', tag : 'p', children : [ { type : 'text', text : 'Between' } ] }, { type : 'element', tag : 'hr' } ]
|
236
|
+
[ { type : 'element', tag : 'p', start : 0, end : 13, children : [ { type : 'entity', entity : '—' }, { type : 'text', text : 'Not a rule', start : 3, end : 13 } ] }, { type : 'element', tag : 'hr' }, { type : 'element', tag : 'p', start : 21, end : 28, children : [ { type : 'text', text : 'Between', start : 21, end : 28 } ] }, { type : 'element', tag : 'hr' } ]
|
237
237
|
|
238
238
|
);
|
239
239
|
|
@@ -242,7 +242,7 @@ describe("WikiText parser tests", function() {
|
|
242
242
|
it("should parse hard linebreak areas", function() {
|
243
243
|
expect(parse("\"\"\"Something\nin the\nway she moves\n\"\"\"\n\n")).toEqual(
|
244
244
|
|
245
|
-
[ { type : 'element', tag : 'p', children : [ { type : 'text', text : 'Something' }, { type : 'element', tag : 'br' }, { type : 'text', text : 'in the' }, { type : 'element', tag : 'br' }, { type : 'text', text : 'way she moves' }, { type : 'element', tag : 'br' } ] } ]
|
245
|
+
[ { type : 'element', tag : 'p', children : [ { type : 'text', text : 'Something', start : 3, end : 12 }, { type : 'element', tag : 'br' }, { type : 'text', text : 'in the', start : 13, end : 19 }, { type : 'element', tag : 'br' }, { type : 'text', text : 'way she moves', start : 20, end : 33 }, { type : 'element', tag : 'br' } ], start : 0, end : 37 } ]
|
246
246
|
|
247
247
|
);
|
248
248
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
created:
|
2
|
-
list: [[
|
3
|
-
modified:
|
1
|
+
created: 20211126104006194
|
2
|
+
list: [[Page and tiddler layout customisation]] [[Creating new buttons for the ViewToolbar and page controls]] [[Structuring TiddlyWiki]] Tagging [[Introduction to Lists]] [[Icon Gallery]] [[How to widen tiddlers (aka storyriver)]] [[How to turn off camel case linking]] [[How to put the last modification date in a banner]] [[How to hide the author's and other fields with CSS]] [[How to export tiddlers]] [[How to Customize TiddlyDesktop]] [[Editing Tiddlers with Vim]] [[Concatenating text and variables using macro substitution]] [[Demonstration: keyboard-driven-input Macro]] HelloThere GettingStarted Community
|
3
|
+
modified: 20211126111221917
|
4
4
|
title: $:/StoryList
|
5
5
|
type: text/vnd.tiddlywiki
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
created: 20131101111400000
|
2
|
-
modified:
|
2
|
+
modified: 20211115092001000
|
3
3
|
tags: Community
|
4
4
|
title: Contributing
|
5
5
|
type: text/vnd.tiddlywiki
|
@@ -45,7 +45,7 @@ PR titles may also include a short prefix to indicate the subsystem to which the
|
|
45
45
|
|
46
46
|
! Commenting on Pull Requests
|
47
47
|
|
48
|
-
One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. [[Conventional Comments|https://conventionalcomments.org]] has some
|
48
|
+
One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. [[Conventional Comments|https://conventionalcomments.org]] has some techniques to help make comments as constructive and actionable as possible. Notably, they recommend prefixing a comment with a label to clarify the intention:
|
49
49
|
|
50
50
|
|praise |Praises highlight something positive. Try to leave at least one of these comments per review. Do not leave false praise (which can actually be damaging). Do look for something to sincerely praise |
|
51
51
|
|nitpick |Nitpicks are small, trivial, but necessary changes. Distinguishing nitpick comments significantly helps direct the reader's attention to comments requiring more involvement |
|
@@ -1,10 +1,10 @@
|
|
1
1
|
created: 20130823091700000
|
2
|
-
modified:
|
2
|
+
modified: 20211124214214045
|
3
3
|
tags: Community Videos
|
4
4
|
title: TiddlyWiki Hangouts
|
5
5
|
type: text/vnd.tiddlywiki
|
6
6
|
|
7
|
-
The TiddlyWiki community
|
7
|
+
The TiddlyWiki community has held many Google Hangouts over the years. They are announced in the [[TiddlyWiki Google group|https://groups.google.com/d/forum/tiddlywiki]] and on the [[TiddlyWiki Twitter account|https://twitter.com/TiddlyWiki]].
|
8
8
|
|
9
9
|
Past Hangouts are archived in this ~YouTube playlist:
|
10
10
|
|
@@ -5,8 +5,8 @@ created: 20141122093837330
|
|
5
5
|
delivery: Web Service
|
6
6
|
description: Free online service that you can also host yourself
|
7
7
|
method: sync
|
8
|
-
modified:
|
9
|
-
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP
|
8
|
+
modified: 20211113010826610
|
9
|
+
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge [[Community Editions]] [[Other Resources]]
|
10
10
|
title: "Noteself" by Danielo Rodríguez
|
11
11
|
type: text/vnd.tiddlywiki
|
12
12
|
url: https://noteself.github.io/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
created: 20150602084548184
|
2
|
-
modified:
|
3
|
-
tags: [[Community
|
2
|
+
modified: 20211113010652022
|
3
|
+
tags: [[Community Plugins]]
|
4
4
|
title: "Encrypt single tiddler plugin" by Danielo Rodriguez
|
5
5
|
type: text/vnd.tiddlywiki
|
6
6
|
url: http://danielorodriguez.com/TW5-EncryptTiddlerPlugin/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
created: 20141122093837330
|
2
|
-
modified:
|
3
|
-
tags: [[Community Resources]]
|
2
|
+
modified: 20211114205057710
|
3
|
+
tags: [[Community Plugins]] [[Other Resources]]
|
4
4
|
title: TiddlyMap Plugin by Felix Küppers
|
5
5
|
type: text/vnd.tiddlywiki
|
6
6
|
url: http://tiddlymap.org
|
@@ -1,6 +1,6 @@
|
|
1
1
|
created: 20140315085406905
|
2
|
-
modified:
|
3
|
-
tags: [[Other Resources]] Tutorials [[Community
|
2
|
+
modified: 20211114205310834
|
3
|
+
tags: [[Other Resources]] Tutorials [[Community Plugins]]
|
4
4
|
title: "TW5 Magick" by Stephan Hradek
|
5
5
|
type: text/vnd.tiddlywiki
|
6
6
|
url: http://tw5magick.tiddlyspot.com/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
created: 20180309160958926
|
2
|
-
modified:
|
3
|
-
tags: [[Other
|
2
|
+
modified: 20211113010607278
|
3
|
+
tags: [[Other Resources]]
|
4
4
|
title: "Dynamic Tables" by Jed Carty
|
5
5
|
type: text/vnd.tiddlywiki
|
6
6
|
url: http://ooktech.com/jed/ExampleWikis/DynamicTables/
|
@@ -1,11 +1,14 @@
|
|
1
1
|
created: 20161226165024380
|
2
2
|
creator: Matt Lauber
|
3
|
-
modified:
|
4
|
-
tags: [[Other
|
3
|
+
modified: 20211113230709926
|
4
|
+
tags: [[Other Resources]]
|
5
5
|
title: "TiddlyServer" by Matt Lauber
|
6
6
|
type: text/vnd.tiddlywiki
|
7
7
|
url: https://github.com/mklauber/TiddlyServer/releases/
|
8
8
|
|
9
|
+
''Note:'' This is an older version of ~TiddlyServer. A modern version can be referenced [[here.|TiddlyServer by Arlen Beiler]]
|
10
|
+
|
11
|
+
----
|
9
12
|
TiddlyServer is a special purpose Desktop app, designed to facilitate managing multiple instances of TiddlyWiki running as a server. It does not require internet acess to access the wikis.
|
10
13
|
|
11
14
|
{{!!url}}
|
@@ -14,4 +17,3 @@ TiddlyServer is a special purpose Desktop app, designed to facilitate managing m
|
|
14
17
|
TiddlyServer can import both TiddlyWiki files and TiddlyFolder wikis. For each wiki, you specify a prefix to serve it with and the source to import from. It will copy the wikis to its own internal store and begin serving them up at http://localhost:8080/{prefix}/. The export button for each wiki will convert it to a single file wiki.
|
15
18
|
|
16
19
|
<<<
|
17
|
-
|
@@ -0,0 +1,47 @@
|
|
1
|
+
created: 20211201100326006
|
2
|
+
modified: 20211206164704335
|
3
|
+
tags: Concepts
|
4
|
+
title: Cascades
|
5
|
+
type: text/vnd.tiddlywiki
|
6
|
+
|
7
|
+
!! Introduction
|
8
|
+
|
9
|
+
Cascades are a key mechanism used to construct and customise TiddlyWiki's user interface.
|
10
|
+
|
11
|
+
<<.tip "See [[Customising TiddlyWiki's user interface]] for an overview of all the customisation mechanisms">>
|
12
|
+
|
13
|
+
!! How cascades work
|
14
|
+
|
15
|
+
Cascades provide a means to select one of multiple values based on flexible, extensible criteria. They can be thought of as a list of conditions that are evaluated in turn until one of them matches.
|
16
|
+
|
17
|
+
Each cascade is defined by a special tag which identifies the tiddlers containing the conditions to be matched. The [[Order of Tagged Tiddlers]] determines the order in which the conditions are processed, and provides the means for arranging new rules at specific points in the cascade.
|
18
|
+
|
19
|
+
The conditions are defined by a [[Filter Expression]] in the text field. The filters are evaluated with the list of input titles set to the title of the tiddler to be considered. The `currentTiddler` variable is also set to the title of the tiddler to be considered.
|
20
|
+
|
21
|
+
If the filter returns no result then that result will be ignored and the cascade proceeds to test the next condition. If the filter expression does return at least one result then it serves as the result of the entire cascade.
|
22
|
+
|
23
|
+
The [[Cascade Filter Run Prefix]] provides the implementation of the underlying logic.
|
24
|
+
|
25
|
+
!! Example
|
26
|
+
|
27
|
+
The [[Story Tiddler Template Cascade]] contains the logic for determining a tiddler should be displayed as an editable draft or in view mode. By default, it consists of two tiddlers containing the following list of rules:
|
28
|
+
|
29
|
+
# `[is[draft]then{$:/config/ui/EditTemplate}]` – if it is a draft tiddler, use the template title given in the tiddler $:/config/ui/EditTemplate
|
30
|
+
# `[{$:/config/ui/ViewTemplate}] ` – otherwise, use the template title given in the tiddler $:/config/ui/ViewTemplate
|
31
|
+
|
32
|
+
!! Usage in the core
|
33
|
+
|
34
|
+
The TiddlyWiki core uses cascades to choose the following elements:
|
35
|
+
|
36
|
+
|[[Story Tiddler Template Cascade]] |The template used to display a particular tiddler in the story river. By default, the edit template is chosen for draft tiddlers, and the view template for others |
|
37
|
+
|[[Tiddler Icon Cascade]] |The optional icon associated with a particular tiddler (displayed alongside the title) |
|
38
|
+
|[[Tiddler Colour Cascade]] |The optional colour associated with a particular tiddler (used to colour the tiddler icon and if the tiddler is used as a tag also provides the colour for the tag pill) |
|
39
|
+
|[[View Template Title Cascade]] |The template used to display the title of a particular tiddler (used by the default view template to display the tiddler title) |
|
40
|
+
|[[View Template Body Cascade]] |The template used to display the view mode body of a particular tiddler (used by the default view template to display the tiddler body) |
|
41
|
+
|[[Edit Template Body Cascade]] |The template used to display the edit mode body of a particular tiddler (used by the default edit template to display the tiddler body editor) |
|
42
|
+
|
43
|
+
You can see the current settings for each cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' tab.
|
44
|
+
|
45
|
+
!! See Also
|
46
|
+
|
47
|
+
<<list-links "[tag[Cascades]]">>
|
@@ -1,8 +1,10 @@
|
|
1
1
|
color: #FF8383
|
2
|
-
created:
|
3
|
-
|
4
|
-
|
2
|
+
created: 20130825144700000
|
3
|
+
list: Cascades ColourPalettes Commands [[Current Tiddler]] DataTiddlers [[Date Fields]] DefaultTiddlers DictionaryTiddlers ExternalImages Filters [[Hard and Soft Links]] JSONTiddlers [[Keyboard Shortcut Tiddler]] Macros Messages Modules PermaLinks Plugins Pragma [[Railroad Diagrams]] ShadowTiddlers [[Story River]] SystemTags SystemTiddlers Tagging TemplateTiddlers TextReference TiddlerFields TiddlerLinks Tiddlers TiddlyWiki TiddlyWiki5 [[Title List]] [[Title Selection]] Transclusion Variables Widgets Wiki WikiText
|
4
|
+
modified: 20211201100624625
|
5
5
|
tags: Reference
|
6
|
+
title: Concepts
|
7
|
+
type: text/vnd.tiddlywiki
|
6
8
|
|
7
9
|
These are the concepts underlying TiddlyWiki. Understanding how these ideas fit together is the key to getting the most from TiddlyWiki.
|
8
10
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
created: 20211206161652630
|
2
|
+
modified: 20211206161959460
|
3
|
+
tags: Cascades
|
4
|
+
title: Edit Template Body Cascade
|
5
|
+
type: text/vnd.tiddlywiki
|
6
|
+
|
7
|
+
The edit template body cascade is a [[cascade|Cascades]] used by the default edit template to choose the template for displaying the tiddler body.
|
8
|
+
|
9
|
+
The default edit template body cascade consists of:
|
10
|
+
|
11
|
+
# If the tiddler has the field ''_canonical_uri'' then use the template $:/core/ui/EditTemplate/body/canonical-uri to display the remote URL
|
12
|
+
# Otherwise, use the template $:/core/ui/EditTemplate/body/default which provides the default editing interface
|
13
|
+
|
14
|
+
You can see the current settings for the view template body cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' -> ''Edit Template Body'' tab.
|
15
|
+
|
16
|
+
<<list-links "[tag[Edit Template Body Cascade]]">>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
created: 20140226083311937
|
2
|
-
modified:
|
2
|
+
modified: 20211117042057208
|
3
3
|
tags: Concepts Reference
|
4
4
|
title: Messages
|
5
5
|
type: text/vnd.tiddlywiki
|
6
6
|
|
7
|
-
Widget messages are generated by
|
7
|
+
Widget ''messages'' are generated by [[Widgets]] in response to user actions. Messages have a <<.param name>>, an optional primary <<.param parameter>>, and one or more optional named parameters. These messages travel up the widget tree where they are handled by ancestor widgets or the core itself.
|
8
8
|
|
9
9
|
The following widget messages are implemented by the core:
|
10
10
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
created: 20150105133800000
|
2
|
-
modified:
|
2
|
+
modified: 20211117212441252
|
3
|
+
tags: Concepts
|
3
4
|
title: Railroad Diagrams
|
4
5
|
|
5
6
|
<<.def "Railroad diagrams">>, sometimes called <<.def "syntax diagrams">>, are a visual way of explaining the syntax rules of a computer language. Reading one is like reading a public transport map.
|