tiddlywiki 5.2.1 → 5.2.2
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/.eslintignore +5 -12
- package/.eslintrc.yml +17 -1
- package/.github/workflows/ci.yml +3 -0
- package/bin/build-site.sh +1 -1
- package/bin/build-tw-org.sh +97 -0
- package/boot/boot.js +44 -17
- package/boot/bootprefix.js +1 -0
- package/contributing.md +1 -1
- package/core/copyright.tid +1 -1
- package/core/language/en-GB/ControlPanel.multids +3 -1
- package/core/language/en-GB/Fields.multids +4 -3
- package/core/language/en-GB/Misc.multids +1 -1
- package/core/modules/commands/init.js +1 -1
- package/core/modules/commands/savelibrarytiddlers.js +1 -1
- package/core/modules/commands/savewikifolder.js +1 -1
- package/core/modules/deserializers.js +7 -10
- package/core/modules/editor/operations/text/wrap-lines.js +5 -3
- package/core/modules/filters/crypto.js +27 -0
- package/core/modules/filters/insertbefore.js +1 -1
- package/core/modules/filters/is/draft.js +2 -2
- package/core/modules/filters/listops.js +2 -1
- package/core/modules/filters/lookup.js +29 -6
- package/core/modules/filters/prefix.js +30 -12
- package/core/modules/filters/removeprefix.js +16 -6
- package/core/modules/filters/removesuffix.js +20 -6
- package/core/modules/filters/search.js +1 -0
- package/core/modules/filters/suffix.js +32 -10
- package/core/modules/filters/untagged.js +1 -1
- package/core/modules/filters.js +4 -2
- package/core/modules/parsers/parseutils.js +2 -2
- package/core/modules/pluginswitcher.js +1 -1
- package/core/modules/savers/gitea.js +2 -2
- package/core/modules/savers/github.js +2 -2
- package/core/modules/savers/gitlab.js +2 -2
- package/core/modules/server/routes/put-tiddler.js +1 -1
- package/core/modules/server/server.js +37 -12
- package/core/modules/startup/browser-messaging.js +2 -2
- package/core/modules/startup/render.js +7 -2
- package/core/modules/startup/rootwidget.js +14 -0
- package/core/modules/startup/windows.js +22 -9
- package/core/modules/tiddler.js +3 -3
- package/core/modules/upgraders/plugins.js +1 -1
- package/core/modules/utils/crypto.js +2 -2
- package/core/modules/utils/dom/dragndrop.js +8 -6
- package/core/modules/utils/dom/scroller.js +11 -7
- package/core/modules/utils/edition-info.js +1 -5
- package/core/modules/utils/pluginmaker.js +2 -4
- package/core/modules/widgets/action-listops.js +2 -2
- package/core/modules/widgets/button.js +1 -1
- package/core/modules/widgets/draggable.js +16 -9
- package/core/modules/widgets/eventcatcher.js +34 -30
- package/core/modules/widgets/image.js +10 -0
- package/core/modules/widgets/importvariables.js +1 -1
- package/core/modules/widgets/list.js +3 -0
- package/core/modules/widgets/navigator.js +2 -17
- package/core/modules/widgets/radio.js +2 -2
- package/core/modules/widgets/scrollable.js +11 -9
- package/core/modules/widgets/widget.js +30 -14
- package/core/modules/wiki-bulkops.js +20 -15
- package/core/modules/wiki.js +39 -17
- package/core/templates/tiddlywiki5.html.tid +1 -1
- package/core/ui/ControlPanel/Cascades/FieldEditor.tid +9 -0
- package/core/ui/EditTemplate/body/default.tid +2 -2
- package/core/ui/EditTemplate/fieldEditor-default.tid +3 -0
- package/core/ui/EditTemplate/fields.tid +6 -4
- package/core/ui/EditTemplate/type.tid +1 -1
- package/core/ui/EditTemplate.tid +2 -2
- package/core/ui/MoreSideBar/plugins/Languages.tid +1 -1
- package/core/ui/MoreSideBar/plugins/Plugins.tid +1 -1
- package/core/ui/MoreSideBar/plugins/Theme.tid +1 -1
- package/core/ui/SideBar/Open.tid +2 -2
- package/core/wiki/allfields.tid +1 -1
- package/core/wiki/config/FieldEditorFilters.multids +4 -0
- package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
- package/core/wiki/config/ViewTemplateBodyFilters.multids +2 -1
- package/core/wiki/macros/list.tid +2 -2
- package/core/wiki/tags/ViewTemplateBodyFilter.tid +1 -1
- package/editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid +2 -2
- package/editions/dynaviewdemo/tiddlers/SideBar-Open.tid +1 -1
- package/editions/fr-FR/output/images/Blurry%20Lawn.jpg +0 -0
- package/editions/fr-FR/output/images/Newnham%20Horizon.jpg +0 -0
- package/editions/fr-FR/output/index.html +5051 -0
- package/editions/fr-FR/output/text/Alice%20in%20Wonderland.tid +3709 -0
- package/editions/fr-FR/tiddlers/$ _config_ViewTemplateTitleFilters_fr-default.tid +7 -0
- package/editions/fr-FR/tiddlers/$ _core_ui_ViewTemplate_title_fr-default.tid +8 -0
- package/editions/fr-FR/tiddlers/$__deprecated.tid +9 -0
- package/editions/fr-FR/tiddlers/$__editions_fr-FR_util-macros.tid +1 -0
- package/editions/fr-FR/tiddlers/$__editions_tw5.com_doc-macros.tid +69 -5
- package/editions/fr-FR/tiddlers/$__editions_tw5.com_version-macros.tid +15 -0
- package/editions/fr-FR/tiddlers/$__editions_tw5.com_wikitext-macros.tid +2 -2
- package/editions/fr-FR/tiddlers/Block_Quotes_in_WikiText.tid +15 -8
- package/editions/fr-FR/tiddlers/CamelCase.tid +6 -3
- package/editions/fr-FR/tiddlers/Code Blocks in WikiText.tid +27 -16
- package/editions/fr-FR/tiddlers/Community Links Aggregator.tid +11 -0
- package/editions/fr-FR/tiddlers/Community.tid +6 -4
- package/editions/fr-FR/tiddlers/Creating and editing tiddlers.tid +11 -11
- package/editions/fr-FR/tiddlers/Deprecated - What does it mean.tid +17 -0
- package/editions/fr-FR/tiddlers/Developers.tid +10 -5
- package/editions/fr-FR/tiddlers/Federatial.tid +11 -0
- package/editions/fr-FR/tiddlers/Formatting in WikiText.tid +12 -12
- package/editions/fr-FR/tiddlers/Forums.tid +27 -13
- package/editions/fr-FR/tiddlers/GettingStarted.tid +16 -14
- package/editions/fr-FR/tiddlers/Glossaire en-GB -_ fr-FR.tid +3 -1
- package/editions/fr-FR/tiddlers/HTML in WikiText.tid +77 -28
- package/editions/fr-FR/tiddlers/Headings in WikiText.tid +2 -2
- package/editions/fr-FR/tiddlers/HelloThere.tid +15 -12
- package/editions/fr-FR/tiddlers/How to export tiddlers.tid +31 -0
- package/editions/fr-FR/tiddlers/ImageWidget.tid +33 -0
- package/editions/fr-FR/tiddlers/Images in WikiText.tid +69 -0
- package/editions/fr-FR/tiddlers/Importing Tiddlers.tid +26 -0
- package/editions/fr-FR/tiddlers/JeremyRuston.tid +9 -9
- package/editions/fr-FR/tiddlers/Linking in WikiText.tid +108 -19
- package/editions/fr-FR/tiddlers/ListField.tid +6 -6
- package/editions/fr-FR/tiddlers/Macros in WikiText.tid +5 -5
- package/editions/fr-FR/tiddlers/Macros.tid +17 -8
- package/editions/fr-FR/tiddlers/PermaLinks.tid +19 -19
- package/editions/fr-FR/tiddlers/Philosophy of Tiddlers.tid +2 -2
- package/editions/fr-FR/tiddlers/Saving.tid +63 -4
- package/editions/fr-FR/tiddlers/Share Plugin.tid +15 -0
- package/editions/fr-FR/tiddlers/{Sharing_a_TiddlyWiki_on_Dropbox.tid → Sharing a TiddlyWiki on Dropbox.tid } +12 -4
- package/editions/fr-FR/tiddlers/Sharing your tiddlers with others.tid +18 -0
- package/editions/fr-FR/tiddlers/Structuring TiddlyWiki.tid +6 -6
- package/editions/fr-FR/tiddlers/Styles and Classes in WikiText.tid +11 -10
- package/editions/fr-FR/tiddlers/Tagging.tid +24 -18
- package/editions/fr-FR/tiddlers/TaskManagementExample.tid +3 -1
- package/editions/fr-FR/tiddlers/TiddlerLinks.tid +5 -5
- package/editions/fr-FR/tiddlers/TiddlyFox Apocalypse.tid +46 -0
- package/editions/fr-FR/tiddlers/TiddlyFox.tid +6 -3
- package/editions/fr-FR/tiddlers/TiddlyWiki.tid +6 -4
- package/editions/fr-FR/tiddlers/_TiddlyWiki for Scholars_ by Alberto Molina.tid +2 -2
- package/editions/prerelease/tiddlers/{Release 5.2.2.tid → Release 5.2.3.tid } +15 -11
- package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
- package/editions/prerelease/tiddlers/system/download-empty.tid +1 -0
- package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal-all.tid +33 -0
- package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal.tid +43 -0
- package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-vertical.tid +43 -0
- package/editions/test/tiddlers/tests/test-action-widgets.js +55 -0
- package/editions/test/tiddlers/tests/test-filters.js +225 -64
- package/editions/test/tiddlers/tests/test-html-parser.js +15 -0
- package/editions/test/tiddlers/tests/test-prefixes-filter.js +5 -5
- package/editions/test/tiddlers/tests/test-tags.js +19 -0
- package/editions/test/tiddlers/tests/test-utils.js +10 -0
- package/editions/test/tiddlers/tests/test-wikitext-parser.js +14 -1
- package/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js +86 -0
- package/editions/tw.org/tiddlers/$__DefaultTiddlers.tid +6 -0
- package/editions/tw.org/tiddlers/$__SiteSubtitle.tid +6 -0
- package/editions/tw.org/tiddlers/$__SiteTitle.tid +6 -0
- package/editions/tw.org/tiddlers/$__StoryList.tid +3 -0
- package/editions/tw.org/tiddlers/$__favicon.ico.png +0 -0
- package/editions/tw.org/tiddlers/$__favicon.ico.png.meta +4 -0
- package/editions/tw.org/tiddlers/$__palette.tid +6 -0
- package/editions/tw.org/tiddlers/$__palettes_BlueFlavour +165 -0
- package/editions/tw.org/tiddlers/$__palettes_BlueFlavour.meta +8 -0
- package/editions/tw.org/tiddlers/$__palettes_FlowingSun +165 -0
- package/editions/tw.org/tiddlers/$__palettes_FlowingSun.meta +8 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_bodyfontsize.tid +6 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_bodylineheight.tid +6 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_sidebarwidth.tid +6 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_options_sidebarlayout.tid +6 -0
- package/editions/tw.org/tiddlers/HelloThere.tid +14 -0
- package/editions/tw.org/tiddlers/Table of Contents.tid +11 -0
- package/editions/tw.org/tiddlers/TiddlyWiki.tid +8 -0
- package/editions/tw.org/tiddlywiki.info +30 -0
- package/editions/tw5.com/tiddlers/community/Contributor License Agreement.tid +3 -3
- package/editions/tw5.com/tiddlers/community/Forums.tid +16 -13
- package/editions/tw5.com/tiddlers/community/Signing the Contributor License Agreement.tid +2 -2
- package/editions/tw5.com/tiddlers/community/plugins/TiddlyClip by buggyjay.tid +3 -3
- package/editions/tw5.com/tiddlers/concepts/Cascades.tid +1 -0
- package/editions/tw5.com/tiddlers/concepts/Customizing EditTemplate Field Rendering.tid +31 -0
- package/editions/tw5.com/tiddlers/concepts/Field Editor Cascade.tid +17 -0
- package/editions/tw5.com/tiddlers/concepts/Filters.tid +15 -10
- package/editions/tw5.com/tiddlers/concepts/Macros.tid +1 -3
- package/editions/tw5.com/tiddlers/concepts/Pragma.tid +2 -2
- package/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Alice in Wonderland.tid +3707 -4
- package/editions/tw5.com/tiddlers/demonstrations/Apple.tid +6 -1
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Styles.tid +1 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Template.tid +1 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/TiddlerTemplateFilter.tid +1 -0
- package/editions/tw5.com/tiddlers/features/Importing Tiddlers.tid +1 -1
- package/editions/tw5.com/tiddlers/features/Modals.tid +2 -1
- package/editions/tw5.com/tiddlers/filters/Filter Operators.tid +9 -5
- package/editions/tw5.com/tiddlers/filters/all.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/butlast.tid +3 -1
- package/editions/tw5.com/tiddlers/filters/examples/butlast.tid +4 -3
- package/editions/tw5.com/tiddlers/filters/examples/insertbefore Operator (Examples).tid +28 -0
- package/editions/tw5.com/tiddlers/filters/examples/lookup Operator (Examples).tid +5 -0
- package/editions/tw5.com/tiddlers/filters/examples/prefix.tid +4 -3
- package/editions/tw5.com/tiddlers/filters/examples/removeprefix.tid +2 -1
- package/editions/tw5.com/tiddlers/filters/examples/removesuffix.tid +2 -3
- package/editions/tw5.com/tiddlers/filters/examples/rest.tid +4 -3
- package/editions/tw5.com/tiddlers/filters/examples/search.tid +6 -1
- package/editions/tw5.com/tiddlers/filters/examples/sortan.tid +5 -1
- package/editions/tw5.com/tiddlers/filters/examples/suffix.tid +3 -2
- package/editions/tw5.com/tiddlers/filters/insertbefore Operator.tid +21 -5
- package/editions/tw5.com/tiddlers/filters/lookup Operator.tid +28 -10
- package/editions/tw5.com/tiddlers/filters/prefix.tid +17 -2
- package/editions/tw5.com/tiddlers/filters/removeprefix.tid +18 -3
- package/editions/tw5.com/tiddlers/filters/removesuffix.tid +18 -3
- package/editions/tw5.com/tiddlers/filters/search.tid +10 -9
- package/editions/tw5.com/tiddlers/filters/sha256 Operator.tid +18 -0
- package/editions/tw5.com/tiddlers/filters/subfilter Operator.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/suffix.tid +17 -2
- package/editions/tw5.com/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/syntax/Named Filter Run Prefix.tid +1 -1
- package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +3 -3
- package/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid +4 -14
- package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
- package/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid +1 -1
- package/editions/tw5.com/tiddlers/messages/SampleWindowTemplate.tid +2 -2
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-all-windows.tid +20 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid +39 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-download-file.tid +6 -1
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +16 -12
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-relink-tiddler.tid +26 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-rename-tiddler.tid +4 -2
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-scroll.tid +3 -0
- package/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid +3 -1
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.22.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.23.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.0.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.1.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.2.tid +162 -0
- package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +4 -2
- package/editions/tw5.com/tiddlers/saving/Saving on Browser with the File System Access API.tid +21 -0
- package/editions/tw5.com/tiddlers/saving/Saving on TidGi.tid +26 -0
- package/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +3 -1
- package/editions/tw5.com/tiddlers/saving/Saving with Polly.tid +29 -0
- package/editions/tw5.com/tiddlers/system/doc-macros.tid +25 -1
- package/editions/tw5.com/tiddlers/system/doc-styles.tid +5 -1
- package/editions/tw5.com/tiddlers/system/download-empty.tid +1 -0
- package/editions/tw5.com/tiddlers/system/operator-macros.tid +4 -2
- package/editions/tw5.com/tiddlers/system/operator-template.tid +6 -3
- package/editions/tw5.com/tiddlers/system/style-guide-macros.tid +5 -1
- package/editions/tw5.com/tiddlers/system/variable-macros.tid +4 -2
- package/editions/tw5.com/tiddlers/system/wikitext-macros.tid +17 -3
- package/editions/tw5.com/tiddlers/webserver/Using HTTPS.tid +17 -2
- package/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid +1 -1
- package/editions/tw5.com/tiddlers/webserver/WebServer Authorization.tid +15 -3
- package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ admin.tid +8 -0
- package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ required-plugins.tid +8 -0
- package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ tls-passphrase.tid +10 -0
- package/editions/tw5.com/tiddlers/widgets/$__editions_tw5.com_widget-examples_qualify-transcluded.tid +14 -0
- package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +7 -3
- package/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +1 -1
- package/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +7 -6
- package/editions/tw5.com/tiddlers/widgets/ImageWidget.tid +9 -1
- package/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid +2 -1
- package/editions/tw5.com/tiddlers/widgets/MacroCallWidget.tid +3 -1
- package/editions/tw5.com/tiddlers/widgets/MessageCatcherWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/QualifyWidget.tid +39 -0
- package/editions/tw5.com/tiddlers/widgets/TranscludeWidget.tid +7 -6
- package/editions/tw5.com/tiddlers/widgets/ViewWidget.tid +26 -8
- package/editions/tw5.com/tiddlers/widgets/WikifyWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/wikitext/HTML in WikiText.tid +30 -4
- package/editions/tw5.com/tiddlers/wikitext/Images in WikiText.tid +3 -3
- package/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid +44 -1
- package/editions/tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid +3 -3
- package/editions/tw5.com/tiddlers/wikitext/Transclusion in WikiText.tid +2 -1
- package/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +3 -3
- package/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText (Examples).tid +51 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText.tid +35 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/Inline Mode WikiText.tid +26 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/Places where the parser ignores WikiText.tid +14 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText Parser Modes.tid +16 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode transitions.tid +59 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ HTML examples.tid +72 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ macro examples.tid +55 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ transclusion examples.tid +56 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/table-example.tid +8 -0
- package/languages/de-DE/ControlPanel.multids +17 -0
- package/languages/de-DE/Fields.multids +6 -5
- package/languages/de-DE/SideBar.multids +1 -0
- package/languages/pl-PL/ControlPanel.multids +15 -2
- package/languages/zh-Hans/ControlPanel.multids +2 -0
- package/languages/zh-Hans/Fields.multids +4 -2
- package/languages/zh-Hans/Misc.multids +1 -1
- package/languages/zh-Hant/ControlPanel.multids +2 -0
- package/languages/zh-Hant/Fields.multids +4 -2
- package/languages/zh-Hant/Misc.multids +1 -1
- package/license +1 -1
- package/licenses/cla-individual.md +13 -1
- package/package.json +5 -3
- package/plugins/tiddlywiki/dynannotate/examples/viewtemplate.tid +3 -4
- package/plugins/tiddlywiki/highlight/files/default.min.css +9 -0
- package/plugins/tiddlywiki/highlight/files/highlight.min.js +1401 -0
- package/plugins/tiddlywiki/highlight/files/tiddlywiki.files +2 -2
- package/plugins/tiddlywiki/highlight/highlightblock.js +27 -21
- package/plugins/tiddlywiki/highlight/plugin.info +1 -1
- package/plugins/tiddlywiki/highlight/readme.tid +18 -47
- package/plugins/tiddlywiki/highlight/styles.tid +10 -5
- package/plugins/tiddlywiki/highlight/usage.tid +48 -1
- package/plugins/tiddlywiki/highlight-legacy/TypeMappings.multids +8 -0
- package/plugins/tiddlywiki/{highlight → highlight-legacy}/files/default.css +0 -0
- package/plugins/tiddlywiki/{highlight → highlight-legacy}/files/highlight.pack.js +0 -0
- package/plugins/tiddlywiki/highlight-legacy/files/tiddlywiki.files +22 -0
- package/plugins/tiddlywiki/highlight-legacy/highlightblock.js +44 -0
- package/plugins/tiddlywiki/highlight-legacy/license.tid +27 -0
- package/plugins/tiddlywiki/highlight-legacy/plugin.info +7 -0
- package/plugins/tiddlywiki/highlight-legacy/readme.tid +65 -0
- package/plugins/tiddlywiki/highlight-legacy/styles.tid +82 -0
- package/plugins/tiddlywiki/highlight-legacy/usage.tid +28 -0
- package/plugins/tiddlywiki/internals/editpreviews/raw.tid +1 -0
- package/plugins/tiddlywiki/markdown/config_renderWikiTextPragma.tid +1 -1
- package/plugins/tiddlywiki/markdown/wrapper.js +33 -22
- package/plugins/tiddlywiki/menubar/menu.tid +1 -1
- package/readme.md +2 -2
- package/themes/tiddlywiki/snowwhite/base.tid +2 -1
- package/themes/tiddlywiki/vanilla/base.tid +13 -3
- package/themes/tiddlywiki/vanilla/sticky.tid +1 -0
- package/editions/fr-FR/tiddlers/$__core_ui_ViewTemplate_title.tid +0 -46
- package/editions/fr-FR/tiddlers/Images_in_WikiText.tid +0 -48
- package/editions/fr-FR/tiddlers/ImportTiddlers.tid +0 -14
- package/editions/fr-FR/tiddlers/Sharing_your_tiddlers_with_others.tid +0 -16
- package/plugins/tiddlywiki/highlight/howto.tid +0 -10
@@ -57,8 +57,19 @@ Tests the filtering mechanism.
|
|
57
57
|
);
|
58
58
|
});
|
59
59
|
|
60
|
+
describe("With tiddlers in the store unsorted",function() {
|
61
|
+
testWithAndWithoutIndexers();
|
62
|
+
});
|
63
|
+
describe("With tiddlers in the store sorted ascending",function() {
|
64
|
+
testWithAndWithoutIndexers({sort: "ascending"});
|
65
|
+
});
|
66
|
+
describe("With tiddlers in the store sorted descending",function() {
|
67
|
+
testWithAndWithoutIndexers({sort: "descending"});
|
68
|
+
});
|
69
|
+
|
70
|
+
function testWithAndWithoutIndexers(options) {
|
60
71
|
describe("With no indexers", function() {
|
61
|
-
var wiki = setupWiki({enableIndexers: []});
|
72
|
+
var wiki = setupWiki(Object.assign({},options,{enableIndexers: []}));
|
62
73
|
it("should not create indexes when requested not to",function() {
|
63
74
|
expect(wiki.getIndexer("FieldIndexer")).toBe(null);
|
64
75
|
});
|
@@ -66,14 +77,16 @@ Tests the filtering mechanism.
|
|
66
77
|
});
|
67
78
|
|
68
79
|
describe("With all indexers", function() {
|
69
|
-
var wiki = setupWiki();
|
80
|
+
var wiki = setupWiki(options);
|
70
81
|
if(wiki.getIndexer("FieldIndexer")) {
|
71
82
|
wiki.getIndexer("FieldIndexer").setMaxIndexedValueLength(8); // Note that JoeBloggs is 9, and John is 5
|
72
83
|
}
|
73
84
|
runTests(wiki);
|
74
85
|
});
|
86
|
+
}
|
75
87
|
|
76
88
|
function setupWiki(wikiOptions) {
|
89
|
+
wikiOptions = wikiOptions || {};
|
77
90
|
// Create a wiki
|
78
91
|
var wiki = new $tw.Wiki(wikiOptions);
|
79
92
|
// Add a plugin containing some shadow tiddlers
|
@@ -104,13 +117,12 @@ Tests the filtering mechanism.
|
|
104
117
|
}
|
105
118
|
}
|
106
119
|
};
|
107
|
-
|
120
|
+
var tiddlers = [{
|
108
121
|
title: "$:/ShadowPlugin",
|
109
122
|
text: JSON.stringify(shadowTiddlers),
|
110
123
|
"plugin-type": "plugin",
|
111
|
-
type: "application/json"
|
112
|
-
|
113
|
-
wiki.addTiddler({
|
124
|
+
type: "application/json"
|
125
|
+
},{
|
114
126
|
title: "TiddlerOne",
|
115
127
|
text: "The quick brown fox in $:/TiddlerTwo",
|
116
128
|
tags: ["one"],
|
@@ -119,8 +131,8 @@ Tests the filtering mechanism.
|
|
119
131
|
slug: "tiddler-one",
|
120
132
|
authors: "Joe Bloggs",
|
121
133
|
modifier: "JoeBloggs",
|
122
|
-
modified: "201304152222"
|
123
|
-
|
134
|
+
modified: "201304152222"
|
135
|
+
},{
|
124
136
|
title: "$:/TiddlerTwo",
|
125
137
|
text: "The rain in Spain\nfalls mainly on the plain and [[a fourth tiddler]]",
|
126
138
|
tags: ["two"],
|
@@ -129,44 +141,75 @@ Tests the filtering mechanism.
|
|
129
141
|
slug: "tiddler-two",
|
130
142
|
authors: "[[John Doe]]",
|
131
143
|
modifier: "John",
|
132
|
-
modified: "201304152211"
|
133
|
-
|
144
|
+
modified: "201304152211"
|
145
|
+
},{
|
134
146
|
title: "Tiddler Three",
|
135
147
|
text: "The speed of sound in light\n\nThere is no TiddlerZero but TiddlerSix",
|
136
148
|
tags: ["one","two"],
|
137
149
|
cost: "56",
|
138
150
|
value: "80",
|
139
151
|
modifier: "John",
|
140
|
-
modified: "201304162202"
|
141
|
-
|
152
|
+
modified: "201304162202"
|
153
|
+
},{
|
142
154
|
title: "a fourth tiddler",
|
143
155
|
text: "The quality of mercy is not drained by [[Tiddler Three]]",
|
144
156
|
tags: [],
|
145
157
|
cost: "82",
|
146
158
|
value: "72",
|
147
159
|
empty: "not",
|
148
|
-
modifier: "John"
|
149
|
-
|
160
|
+
modifier: "John"
|
161
|
+
},{
|
150
162
|
title: "one",
|
151
163
|
text: "This is the text of tiddler [[one]]",
|
152
164
|
list: "[[Tiddler Three]] [[TiddlerOne]]",
|
153
165
|
empty: "",
|
154
|
-
modifier: "John"
|
155
|
-
|
166
|
+
modifier: "John"
|
167
|
+
},{
|
156
168
|
title: "hasList",
|
157
169
|
text: "This is the text of tiddler [[hasList]]",
|
158
170
|
list: "[[Tiddler Three]] [[TiddlerOne]]",
|
159
|
-
modifier: "PMario"
|
160
|
-
|
171
|
+
modifier: "PMario"
|
172
|
+
},{
|
161
173
|
title: "has filter",
|
162
174
|
text: "This is the text of tiddler [[has filter]]",
|
163
175
|
filter: "[[Tiddler Three]] [[TiddlerOne]] [subfilter{hasList!!list}]",
|
164
|
-
modifier: "PMario"
|
165
|
-
|
176
|
+
modifier: "PMario"
|
177
|
+
},{
|
166
178
|
title: "filter regexp test",
|
167
179
|
text: "Those strings have been used to create the `regexp = /[+|\-|~]?([[](?:[^\]])*\]+)|([+|-|~|\S]\S*)/;`",
|
168
180
|
filter: "+aaa -bbb ~ccc aaaaaabbbbbbbbaa \"bb'b\" 'cc\"c' [[abc]] [[tiddler with spaces]] [is[test]] [is[te st]] a s df [enlist<hugo>] +[enlist:raw{test with spaces}] [enlist:raw{test with spaces}] [[a a]] [[ ] [ ]] [[ [hugo]] [subfilter{Story/Tower of Hanoi/A-C Sequence}]",
|
169
|
-
modifier: "PMario"
|
181
|
+
modifier: "PMario"
|
182
|
+
}];
|
183
|
+
// Load the tiddlers in the required order
|
184
|
+
var fnCompare;
|
185
|
+
switch(wikiOptions.sort) {
|
186
|
+
case "ascending":
|
187
|
+
fnCompare = function(a,b) {
|
188
|
+
if(a.title < b.title) {
|
189
|
+
return -1;
|
190
|
+
} else if(a.title > b.title) {
|
191
|
+
return +1;
|
192
|
+
} else {
|
193
|
+
return 0;
|
194
|
+
}
|
195
|
+
};
|
196
|
+
break;
|
197
|
+
case "descending":
|
198
|
+
fnCompare = function(a,b) {
|
199
|
+
if(a.title < b.title) {
|
200
|
+
return +1;
|
201
|
+
} else if(a.title > b.title) {
|
202
|
+
return -1;
|
203
|
+
} else {
|
204
|
+
return 0;
|
205
|
+
}
|
206
|
+
};
|
207
|
+
break;
|
208
|
+
}
|
209
|
+
if(fnCompare) {
|
210
|
+
tiddlers.sort(fnCompare);
|
211
|
+
}
|
212
|
+
wiki.addTiddlers(tiddlers);
|
170
213
|
// Unpack plugin tiddlers
|
171
214
|
wiki.readPluginInfo();
|
172
215
|
wiki.registerPluginTiddlers("plugin");
|
@@ -197,7 +240,7 @@ Tests the filtering mechanism.
|
|
197
240
|
expect(wiki.filterTiddlers("[!modifier[JoeBloggs]then[Susi]]").join(",")).toBe("Susi,Susi,Susi,Susi,Susi,Susi,Susi,Susi");
|
198
241
|
expect(wiki.filterTiddlers("[modifier[DaveBloggs]then[Susi]]").join(",")).toBe("");
|
199
242
|
expect(wiki.filterTiddlers("[modifier[JoeBloggs]else[Susi]]").join(",")).toBe("TiddlerOne");
|
200
|
-
expect(wiki.filterTiddlers("[!modifier[JoeBloggs]else[Susi]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
243
|
+
expect(wiki.filterTiddlers("[!modifier[JoeBloggs]else[Susi]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
201
244
|
expect(wiki.filterTiddlers("[modifier[DaveBloggs]else[Susi]]").join(",")).toBe("Susi");
|
202
245
|
});
|
203
246
|
|
@@ -211,6 +254,8 @@ Tests the filtering mechanism.
|
|
211
254
|
it("should handle the lookup operator", function() {
|
212
255
|
expect(wiki.filterTiddlers("Six Seventh 8 +[lookup[Tiddler]]").join(",")).toBe("Missing inaction from TiddlerOne,,Tidd");
|
213
256
|
expect(wiki.filterTiddlers("Six Seventh 8 +[lookup:8[Tiddler]]").join(",")).toBe("Missing inaction from TiddlerOne,8,Tidd");
|
257
|
+
expect(wiki.filterTiddlers("Six Seventh 8 +[lookup:8[Tiddler],[text]]").join(",")).toBe("Missing inaction from TiddlerOne,8,Tidd");
|
258
|
+
expect(wiki.filterTiddlers("Six Seventh 8 +[lookup[Tiddler],[tags]]").join(",")).toBe(",one,one");
|
214
259
|
});
|
215
260
|
|
216
261
|
it("should retrieve shadow tiddlers", function() {
|
@@ -219,31 +264,31 @@ Tests the filtering mechanism.
|
|
219
264
|
|
220
265
|
it("should handle the title operator", function() {
|
221
266
|
expect(wiki.filterTiddlers("TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three");
|
222
|
-
expect(wiki.filterTiddlers("[!title[Tiddler Three]]").join(",")).toBe("$:/ShadowPlugin
|
267
|
+
expect(wiki.filterTiddlers("[!title[Tiddler Three]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne");
|
223
268
|
expect(wiki.filterTiddlers("TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]] [[A Missing Tiddler]]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three,A Missing Tiddler");
|
224
269
|
});
|
225
270
|
|
226
271
|
it("should handle the field operator", function() {
|
227
272
|
expect(wiki.filterTiddlers("[modifier[JoeBloggs]]").join(",")).toBe("TiddlerOne");
|
228
|
-
expect(wiki.filterTiddlers("[!modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
229
|
-
expect(wiki.filterTiddlers("[!is[system]!modifier[JoeBloggs]]").join(",")).toBe("
|
273
|
+
expect(wiki.filterTiddlers("[!modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
274
|
+
expect(wiki.filterTiddlers("[!is[system]!modifier[JoeBloggs]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
230
275
|
expect(wiki.filterTiddlers("[field:modifier[JoeBloggs]]").join(",")).toBe("TiddlerOne");
|
231
|
-
expect(wiki.filterTiddlers("[!field:modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
232
|
-
expect(wiki.filterTiddlers("[!is[system]!field:modifier[JoeBloggs]]").join(",")).toBe("
|
233
|
-
expect(wiki.filterTiddlers("[modifier[John]]").join(",")).toBe("$:/TiddlerTwo,
|
234
|
-
expect(wiki.filterTiddlers("[!modifier[John]]").join(",")).toBe("$:/ShadowPlugin,
|
235
|
-
expect(wiki.filterTiddlers("[!is[system]!modifier[John]]").join(",")).toBe("
|
236
|
-
expect(wiki.filterTiddlers("[field:modifier[John]]").join(",")).toBe("$:/TiddlerTwo,
|
237
|
-
expect(wiki.filterTiddlers("[!field:modifier[John]]").join(",")).toBe("$:/ShadowPlugin,
|
238
|
-
expect(wiki.filterTiddlers("[!is[system]!field:modifier[John]]").join(",")).toBe("
|
276
|
+
expect(wiki.filterTiddlers("[!field:modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
277
|
+
expect(wiki.filterTiddlers("[!is[system]!field:modifier[JoeBloggs]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
278
|
+
expect(wiki.filterTiddlers("[modifier[John]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three");
|
279
|
+
expect(wiki.filterTiddlers("[!modifier[John]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,TiddlerOne");
|
280
|
+
expect(wiki.filterTiddlers("[!is[system]!modifier[John]]").join(",")).toBe("filter regexp test,has filter,hasList,TiddlerOne");
|
281
|
+
expect(wiki.filterTiddlers("[field:modifier[John]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three");
|
282
|
+
expect(wiki.filterTiddlers("[!field:modifier[John]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,TiddlerOne");
|
283
|
+
expect(wiki.filterTiddlers("[!is[system]!field:modifier[John]]").join(",")).toBe("filter regexp test,has filter,hasList,TiddlerOne");
|
239
284
|
});
|
240
285
|
|
241
286
|
it("should handle the regexp operator", function() {
|
242
|
-
expect(wiki.filterTiddlers("[regexp[id]]").join(",")).toBe("
|
243
|
-
expect(wiki.filterTiddlers("[!regexp[id]]").join(",")).toBe("$:/ShadowPlugin,
|
244
|
-
expect(wiki.filterTiddlers("[regexp[Tid]]").join(",")).toBe("
|
245
|
-
expect(wiki.filterTiddlers("[regexp[(?i)Tid]]").join(",")).toBe("
|
246
|
-
expect(wiki.filterTiddlers("[!regexp[Tid(?i)]]").join(",")).toBe("$:/ShadowPlugin,
|
287
|
+
expect(wiki.filterTiddlers("[regexp[id]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne");
|
288
|
+
expect(wiki.filterTiddlers("[!regexp[id]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,one");
|
289
|
+
expect(wiki.filterTiddlers("[regexp[Tid]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne");
|
290
|
+
expect(wiki.filterTiddlers("[regexp[(?i)Tid]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne");
|
291
|
+
expect(wiki.filterTiddlers("[!regexp[Tid(?i)]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,one");
|
247
292
|
});
|
248
293
|
|
249
294
|
// The following 2 tests should write a log -> WARNING: Filter modifier has a deprecated regexp operand XXXX
|
@@ -253,20 +298,55 @@ Tests the filtering mechanism.
|
|
253
298
|
expect(wiki.filterTiddlers("[modifier/JoeBloggs/]").join(",")).toBe("TiddlerOne");
|
254
299
|
expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /JoeBloggs/);
|
255
300
|
console.log.calls.reset();
|
256
|
-
expect(wiki.filterTiddlers("[modifier/Jo/]").join(",")).toBe("
|
301
|
+
expect(wiki.filterTiddlers("[modifier/Jo/]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne");
|
257
302
|
expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /Jo/);
|
258
303
|
});
|
304
|
+
|
305
|
+
it("should handle regular expression operands without crashing", function() {
|
306
|
+
spyOn(console, 'log');
|
307
|
+
// We don't really care about the results. Just don't get RSoD.
|
308
|
+
expect(() => wiki.filterTiddlers("[all/current/]")).not.toThrow();
|
309
|
+
expect(() => wiki.filterTiddlers("[prefix/anything/]")).not.toThrow();
|
310
|
+
expect(() => wiki.filterTiddlers("[title/anything/]")).not.toThrow();
|
311
|
+
expect(() => wiki.filterTiddlers("[/anything/]")).not.toThrow();
|
312
|
+
expect(() => wiki.filterTiddlers("[//]")).not.toThrow();
|
313
|
+
});
|
259
314
|
|
260
315
|
it("should handle the prefix operator", function() {
|
261
|
-
expect(wiki.filterTiddlers("[prefix[Tiddler]]").join(",")).toBe("
|
316
|
+
expect(wiki.filterTiddlers("[prefix[Tiddler]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
317
|
+
expect(wiki.filterTiddlers("[prefix:casesensitive[tiddler]]").join(",")).toBe("");
|
318
|
+
expect(wiki.filterTiddlers("[prefix:caseinsensitive[tiddler]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
262
319
|
expect(wiki.filterTiddlers("[prefix[nothing]]").join(",")).toBe("");
|
320
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]prefix[]]").join(",")).toBe("ABCDE,abcde");
|
321
|
+
});
|
322
|
+
|
323
|
+
it("should handle the suffix operator", function() {
|
324
|
+
expect(wiki.filterTiddlers("[suffix[One]]").join(",")).toBe("TiddlerOne");
|
325
|
+
expect(wiki.filterTiddlers("[suffix:casesensitive[one]]").join(",")).toBe("one");
|
326
|
+
expect(wiki.filterTiddlers("[suffix:caseinsensitive[one]]").join(",")).toBe("one,TiddlerOne");
|
327
|
+
expect(wiki.filterTiddlers("[suffix[nothing]]").join(",")).toBe("");
|
328
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]suffix[]]").join(",")).toBe("ABCDE,abcde");
|
329
|
+
});
|
330
|
+
|
331
|
+
it("should handle the removeprefix operator", function() {
|
332
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix[ABC]]").join(",")).toBe("DE");
|
333
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix:casesensitive[ABC]]").join(",")).toBe("DE");
|
334
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix:caseinsensitive[abc]]").join(",")).toBe("DE,de");
|
335
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix[]]").join(",")).toBe("ABCDE,abcde");
|
336
|
+
});
|
337
|
+
|
338
|
+
it("should handle the removesuffix operator", function() {
|
339
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removesuffix[DE]]").join(",")).toBe("ABC");
|
340
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removesuffix:casesensitive[DE]]").join(",")).toBe("ABC");
|
341
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removesuffix:caseinsensitive[de]]").join(",")).toBe("ABC,abc")
|
342
|
+
expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removesuffix[]]").join(",")).toBe("ABCDE,abcde");
|
263
343
|
});
|
264
344
|
|
265
345
|
it("should handle the sort and sortcs operators", function() {
|
266
346
|
expect(wiki.filterTiddlers("[sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne");
|
267
347
|
expect(wiki.filterTiddlers("[!sort[title]]").join(",")).toBe("TiddlerOne,Tiddler Three,one,hasList,has filter,filter regexp test,a fourth tiddler,$:/TiddlerTwo,$:/ShadowPlugin");
|
268
|
-
expect(wiki.filterTiddlers("[sort[modified]]").join(",")).toBe("$:/ShadowPlugin,a fourth tiddler,
|
269
|
-
expect(wiki.filterTiddlers("[!sort[modified]]").join(",")).toBe("Tiddler Three,TiddlerOne,$:/TiddlerTwo,$:/ShadowPlugin,a fourth tiddler,
|
348
|
+
expect(wiki.filterTiddlers("[sort[modified]]").join(",")).toBe("$:/ShadowPlugin,a fourth tiddler,filter regexp test,has filter,hasList,one,$:/TiddlerTwo,TiddlerOne,Tiddler Three");
|
349
|
+
expect(wiki.filterTiddlers("[!sort[modified]]").join(",")).toBe("Tiddler Three,TiddlerOne,$:/TiddlerTwo,$:/ShadowPlugin,a fourth tiddler,filter regexp test,has filter,hasList,one");
|
270
350
|
// Temporarily commenting out the following two lines because of platform differences for localeCompare between the browser and Node.js
|
271
351
|
// expect(wiki.filterTiddlers("[sortcs[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne,a fourth tiddler,one");
|
272
352
|
// expect(wiki.filterTiddlers("[!sortcs[title]]").join(",")).toBe("one,a fourth tiddler,TiddlerOne,Tiddler Three,$:/TiddlerTwo");
|
@@ -291,6 +371,7 @@ Tests the filtering mechanism.
|
|
291
371
|
expect(wiki.filterTiddlers("[sort[title]reverse[]]").join(",")).toBe("TiddlerOne,Tiddler Three,one,hasList,has filter,filter regexp test,a fourth tiddler,$:/TiddlerTwo,$:/ShadowPlugin");
|
292
372
|
expect(wiki.filterTiddlers("[sort[title]reverse[x]]").join(",")).toBe("TiddlerOne,Tiddler Three,one,hasList,has filter,filter regexp test,a fourth tiddler,$:/TiddlerTwo,$:/ShadowPlugin");
|
293
373
|
expect(wiki.filterTiddlers("[sort[title]butlast[]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
374
|
+
expect(wiki.filterTiddlers("[sort[title]butlast[0]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne");
|
294
375
|
expect(wiki.filterTiddlers("[sort[title]butlast[2]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one");
|
295
376
|
expect(wiki.filterTiddlers("[sort[title]butlast[11]]").join(",")).toBe("");
|
296
377
|
expect(wiki.filterTiddlers("[sort[title]butlast[x]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
@@ -316,10 +397,10 @@ Tests the filtering mechanism.
|
|
316
397
|
expect(wiki.filterTiddlers("[all[shadows]tag[two]]").join(",")).toBe("$:/TiddlerFive");
|
317
398
|
expect(wiki.filterTiddlers("[all[shadows+tiddlers]tag[two]]").join(",")).toBe("$:/TiddlerFive,$:/TiddlerTwo,Tiddler Three");
|
318
399
|
expect(wiki.filterTiddlers("[all[tiddlers+shadows]tag[two]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,$:/TiddlerFive");
|
319
|
-
expect(wiki.filterTiddlers("[all[shadows+tiddlers]]").join(",")).toBe("$:/TiddlerFive,TiddlerSix,TiddlerSeventh,Tiddler8,$:/ShadowPlugin
|
320
|
-
expect(wiki.filterTiddlers("[all[tiddlers+shadows]]").join(",")).toBe("$:/ShadowPlugin
|
400
|
+
expect(wiki.filterTiddlers("[all[shadows+tiddlers]]").join(",")).toBe("$:/TiddlerFive,TiddlerSix,TiddlerSeventh,Tiddler8,$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne");
|
401
|
+
expect(wiki.filterTiddlers("[all[tiddlers+shadows]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne,$:/TiddlerFive,TiddlerSix,TiddlerSeventh,Tiddler8");
|
321
402
|
expect(wiki.filterTiddlers("[all[tiddlers]tag[two]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three");
|
322
|
-
expect(wiki.filterTiddlers("[all[orphans+tiddlers+tags]]").join(",")).toBe("$:/ShadowPlugin
|
403
|
+
expect(wiki.filterTiddlers("[all[orphans+tiddlers+tags]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,Tiddler Three,TiddlerOne,two,one");
|
323
404
|
});
|
324
405
|
|
325
406
|
it("should handle the tags operator", function() {
|
@@ -330,11 +411,11 @@ Tests the filtering mechanism.
|
|
330
411
|
it("should handle the match operator", function() {
|
331
412
|
expect(wiki.filterTiddlers("[match[TiddlerOne]]").join(",")).toBe("TiddlerOne");
|
332
413
|
expect(wiki.filterTiddlers("TiddlerOne TiddlerOne =[match[TiddlerOne]]").join(",")).toBe("TiddlerOne,TiddlerOne");
|
333
|
-
expect(wiki.filterTiddlers("[!match[TiddlerOne]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
414
|
+
expect(wiki.filterTiddlers("[!match[TiddlerOne]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
334
415
|
expect(wiki.filterTiddlers("[match:casesensitive[tiddlerone]]").join(",")).toBe("");
|
335
|
-
expect(wiki.filterTiddlers("[!match:casesensitive[tiddlerone]]").join(",")).toBe("$:/ShadowPlugin
|
416
|
+
expect(wiki.filterTiddlers("[!match:casesensitive[tiddlerone]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne");
|
336
417
|
expect(wiki.filterTiddlers("[match:caseinsensitive[tiddlerone]]").join(",")).toBe("TiddlerOne");
|
337
|
-
expect(wiki.filterTiddlers("[!match:caseinsensitive[tiddlerone]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
418
|
+
expect(wiki.filterTiddlers("[!match:caseinsensitive[tiddlerone]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three");
|
338
419
|
});
|
339
420
|
|
340
421
|
it("should handle the tagging operator", function() {
|
@@ -348,6 +429,9 @@ Tests the filtering mechanism.
|
|
348
429
|
it("should handle the untagged operator", function() {
|
349
430
|
expect(wiki.filterTiddlers("[untagged[]sort[title]]").join(",")).toBe("$:/ShadowPlugin,a fourth tiddler,filter regexp test,has filter,hasList,one");
|
350
431
|
expect(wiki.filterTiddlers("[!untagged[]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne");
|
432
|
+
// Should consider non-existent tiddlers untagged.
|
433
|
+
expect(wiki.filterTiddlers("[enlist[a b c]untagged[]]").join(",")).toBe("a,b,c");
|
434
|
+
expect(wiki.filterTiddlers("[enlist[a b c]!untagged[]]").join(",")).toBe("");
|
351
435
|
});
|
352
436
|
|
353
437
|
it("should handle the links operator", function() {
|
@@ -383,6 +467,11 @@ Tests the filtering mechanism.
|
|
383
467
|
expect(wiki.filterTiddlers("[list[TiddlerSeventh]sort[title]]").join(",")).toBe("a fourth tiddler,MissingTiddler,Tiddler Three,TiddlerOne");
|
384
468
|
expect(wiki.filterTiddlers("[tag[one]list[TiddlerSeventh]sort[title]]").join(",")).toBe("a fourth tiddler,MissingTiddler,Tiddler Three,TiddlerOne");
|
385
469
|
});
|
470
|
+
|
471
|
+
it("should handle the listed operator", function() {
|
472
|
+
expect(wiki.filterTiddlers("TiddlerOne MissingTiddler +[listed[]]").join(",")).toBe('hasList,one');
|
473
|
+
expect(wiki.filterTiddlers("one two +[listed[tags]]").join(",")).toBe('TiddlerOne,$:/TiddlerTwo,Tiddler Three');
|
474
|
+
});
|
386
475
|
|
387
476
|
it("should handle the next operator", function() {
|
388
477
|
expect(wiki.filterTiddlers("[[Tiddler Three]next[TiddlerSeventh]]").join(",")).toBe("a fourth tiddler");
|
@@ -404,21 +493,54 @@ Tests the filtering mechanism.
|
|
404
493
|
expect(wiki.filterTiddlers("[search:modifier:regexp[(d|bl)o(ggs|e)]sort[title]]").join(",")).toBe("TiddlerOne");
|
405
494
|
expect(wiki.filterTiddlers("[search:-modifier,authors:[g]sort[title]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,Tiddler Three");
|
406
495
|
expect(wiki.filterTiddlers("[search:*:[g]sort[title]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,Tiddler Three,TiddlerOne");
|
407
|
-
expect(wiki.filterTiddlers("[search:text:anchored[the]]").join(",")).toBe("
|
496
|
+
expect(wiki.filterTiddlers("[search:text:anchored[the]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne");
|
408
497
|
});
|
409
|
-
|
498
|
+
|
499
|
+
it("should yield search results where 'default' search finds at least 1 token", function() {
|
500
|
+
expect(wiki.filterTiddlers("[search::some[one two]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,one,Tiddler Three,TiddlerOne");
|
501
|
+
});
|
502
|
+
|
503
|
+
it("should yield search results where 'title' finds at least one token", function() {
|
504
|
+
expect(wiki.filterTiddlers("[search:title:some[tiddler]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne");
|
505
|
+
expect(wiki.filterTiddlers("[search:title:some[tiddler one]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne");
|
506
|
+
});
|
507
|
+
|
508
|
+
it("should yield search results where 'tags' finds at least one token", function() {
|
509
|
+
expect(wiki.filterTiddlers("[search:tags:some[one]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
510
|
+
expect(wiki.filterTiddlers("[search:tags:some[two]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three");
|
511
|
+
expect(wiki.filterTiddlers("[search:tags:some[two one]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne");
|
512
|
+
});
|
513
|
+
|
514
|
+
it("should yield search results where 'tags' finds at least one token / casesensitive", function() {
|
515
|
+
expect(wiki.filterTiddlers("[search:tags:some[ONE]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
516
|
+
expect(wiki.filterTiddlers("[search:tags:some,casesensitive[two ONE]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three");
|
517
|
+
});
|
518
|
+
|
519
|
+
it("should yield search results where 'tags' finds at least one token / anchored", function() {
|
520
|
+
expect(wiki.filterTiddlers("[search:tags:some,anchored[one]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
521
|
+
expect(wiki.filterTiddlers("[search:tags:some,anchored[two]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three");
|
522
|
+
// search:title
|
523
|
+
expect(wiki.filterTiddlers("[search:title:some,anchored[tiddler]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
524
|
+
expect(wiki.filterTiddlers("[search:title:some,anchored[tiddler one]sort[title]]").join(",")).toBe("one,Tiddler Three,TiddlerOne");
|
525
|
+
});
|
526
|
+
|
527
|
+
it("should yield search results where 'tags' finds at least one token / anchored & casesensitive", function() {
|
528
|
+
expect(wiki.filterTiddlers("[search:title:some,anchored,casesensitive[Tiddler one]sort[title]]").join(",")).toBe("one,Tiddler Three,TiddlerOne");
|
529
|
+
expect(wiki.filterTiddlers("[search:title:some,anchored,casesensitive[Tiddler ONE]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne");
|
530
|
+
});
|
531
|
+
|
410
532
|
it("should yield search results that have search tokens spread across different fields", function() {
|
411
533
|
expect(wiki.filterTiddlers("[search[fox one]sort[title]]").join(",")).toBe("TiddlerOne");
|
412
534
|
});
|
413
|
-
|
535
|
+
|
414
536
|
it("should handle the each operator", function() {
|
415
|
-
expect(wiki.filterTiddlers("[each[modifier]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
537
|
+
expect(wiki.filterTiddlers("[each[modifier]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,filter regexp test,TiddlerOne");
|
416
538
|
expect(wiki.filterTiddlers("[each:list-item[tags]sort[title]]").join(",")).toBe("one,two");
|
417
539
|
expect(wiki.filterTiddlers("[each:list-item[authors]sort[title]]").join(",")).toBe("Bloggs,Joe,John Doe");
|
418
540
|
});
|
419
541
|
|
420
542
|
it("should handle the eachday operator", function() {
|
421
|
-
expect(wiki.filterTiddlers("[eachday[modified]sort[title]]").join(",")).toBe("Tiddler Three
|
543
|
+
expect(wiki.filterTiddlers("[eachday[modified]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three");
|
422
544
|
});
|
423
545
|
|
424
546
|
it("should handle the sameday operator", function() {
|
@@ -446,7 +568,7 @@ Tests the filtering mechanism.
|
|
446
568
|
});
|
447
569
|
|
448
570
|
it("should handle the '[is[missing]]' operator", function() {
|
449
|
-
expect(wiki.filterTiddlers("[all[]]").join(",")).toBe("$:/ShadowPlugin
|
571
|
+
expect(wiki.filterTiddlers("[all[]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne");
|
450
572
|
expect(wiki.filterTiddlers("[all[missing]]").join(",")).toBe("TiddlerZero");
|
451
573
|
expect(wiki.filterTiddlers("[!is[missing]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne");
|
452
574
|
expect(wiki.filterTiddlers("[[TiddlerOne]is[missing]]").join(",")).toBe("");
|
@@ -457,11 +579,39 @@ Tests the filtering mechanism.
|
|
457
579
|
|
458
580
|
it("should handle the '[is[orphan]]' operator", function() {
|
459
581
|
expect(wiki.filterTiddlers("[is[orphan]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,TiddlerOne");
|
460
|
-
expect(wiki.filterTiddlers("[!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
582
|
+
expect(wiki.filterTiddlers("[!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,has filter,hasList,one,Tiddler Three");
|
461
583
|
expect(wiki.filterTiddlers("[[TiddlerOne]is[orphan]]").join(",")).toBe("TiddlerOne");
|
462
584
|
expect(wiki.filterTiddlers("[[TiddlerOne]!is[orphan]]").join(",")).toBe("");
|
463
585
|
expect(wiki.filterTiddlers("[!title[Tiddler Three]is[orphan]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,TiddlerOne");
|
464
|
-
expect(wiki.filterTiddlers("[!title[Tiddler Three]!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,
|
586
|
+
expect(wiki.filterTiddlers("[!title[Tiddler Three]!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,has filter,hasList,one");
|
587
|
+
});
|
588
|
+
|
589
|
+
it("should handle the '[is[draft]]' operator", function() {
|
590
|
+
var wiki = new $tw.Wiki();
|
591
|
+
wiki.addTiddlers([
|
592
|
+
{title: "A"},
|
593
|
+
{title: "Draft of 'A'", "draft.of": "A", "draft.title": "A"},
|
594
|
+
{title: "B"},
|
595
|
+
{title: "Draft of 'B'", "draft.of": "B"},
|
596
|
+
{title: "C"},
|
597
|
+
// Not a true draft. Doesn't have draft.of
|
598
|
+
{title: "Draft of 'C'", "draft.title": "C"},
|
599
|
+
{title: "E"},
|
600
|
+
// Broken. Has draft.of, but it's empty. Still a draft
|
601
|
+
{title: "Draft of 'E'", "draft.of": "", "draft.title": ""}
|
602
|
+
// Not a draft. It doesn't exist.
|
603
|
+
//{title: "F"} // This one is deliberately missing
|
604
|
+
]);
|
605
|
+
// is analagous to [has[draft.of]],
|
606
|
+
// except they handle empty draft.of differently
|
607
|
+
expect(wiki.filterTiddlers("[all[]] F +[is[draft]]").join(",")).toEqual("Draft of 'A',Draft of 'B',Draft of 'E'");
|
608
|
+
expect(wiki.filterTiddlers("[all[]] F +[!is[draft]]").join(",")).toEqual("A,B,C,Draft of 'C',E,F");
|
609
|
+
// [is[draft]] and [!is[draft]] are proper complements
|
610
|
+
var included = wiki.filterTiddlers("[all[]] F +[is[draft]]")
|
611
|
+
var excluded = wiki.filterTiddlers("[all[]] F +[!is[draft]]")
|
612
|
+
var all = [].concat(included, excluded).sort();
|
613
|
+
// combined, they should have exactly one of everything.
|
614
|
+
expect(wiki.filterTiddlers("[all[]] F +[sort[]]")).toEqual(all);
|
465
615
|
});
|
466
616
|
|
467
617
|
});
|
@@ -606,16 +756,27 @@ Tests the filtering mechanism.
|
|
606
756
|
rootWidget.setVariable("tidTitle","e");
|
607
757
|
rootWidget.setVariable("tidList","one tid with spaces");
|
608
758
|
|
759
|
+
// Position title specified as suffix.
|
609
760
|
expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar[f]]",anchorWidget).join(",")).toBe("a,b,f,c,d,e");
|
610
761
|
expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar<tidTitle>]",anchorWidget).join(",")).toBe("a,b,e,c,d,f");
|
611
762
|
expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar[gg gg]]",anchorWidget).join(",")).toBe("a,b,gg gg,c,d,e,f");
|
612
|
-
|
613
763
|
expect(wiki.filterTiddlers("a b c d e +[insertbefore:myVar<tidList>]",anchorWidget).join(",")).toBe("a,b,one tid with spaces,c,d,e");
|
614
764
|
expect(wiki.filterTiddlers("a b c d e f +[insertbefore:tidTitle{TiddlerOne!!tags}]",anchorWidget).join(",")).toBe("a,b,c,d,one,e,f");
|
765
|
+
|
766
|
+
// Position title specified as parameter.
|
767
|
+
expect(wiki.filterTiddlers("a b c d e +[insertbefore[f],[a]]",anchorWidget).join(",")).toBe("f,a,b,c,d,e");
|
768
|
+
expect(wiki.filterTiddlers("a b c d e +[insertbefore[f],<myVar>]",anchorWidget).join(",")).toBe("a,b,f,c,d,e");
|
769
|
+
|
770
|
+
// Parameter takes precedence over suffix.
|
771
|
+
expect(wiki.filterTiddlers("a b c d e +[insertbefore:myVar[f],[a]]",anchorWidget).join(",")).toBe("f,a,b,c,d,e");
|
615
772
|
|
616
|
-
//
|
773
|
+
// No position title.
|
617
774
|
expect(wiki.filterTiddlers("a b c [[with space]] +[insertbefore[b]]").join(",")).toBe("a,c,with space,b");
|
618
|
-
|
775
|
+
|
776
|
+
// Position title does not exist.
|
777
|
+
expect(wiki.filterTiddlers("a b c d e +[insertbefore:foo[b]]").join(",")).toBe("a,c,d,e,b");
|
778
|
+
expect(wiki.filterTiddlers("a b c d e +[insertbefore[b],[foo]]").join(",")).toBe("a,c,d,e,b");
|
779
|
+
expect(wiki.filterTiddlers("a b c d e +[insertbefore[b],<foo>]").join(",")).toBe("a,c,d,e,b");
|
619
780
|
});
|
620
781
|
|
621
782
|
it("should handle the move operator", function() {
|
@@ -775,10 +936,10 @@ Tests the filtering mechanism.
|
|
775
936
|
rootWidget.setVariable("sort2","[get[text]else[]length[]]");
|
776
937
|
rootWidget.setVariable("sort3","[{!!value}divide{!!cost}]");
|
777
938
|
rootWidget.setVariable("sort4","[{!!title}]");
|
778
|
-
expect(wiki.filterTiddlers("[sortsub:number<sort1>]",anchorWidget).join(",")).toBe("one,hasList,
|
779
|
-
expect(wiki.filterTiddlers("[!sortsub:number<sort1>]",anchorWidget).join(",")).toBe("filter regexp test,a fourth tiddler,$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,
|
780
|
-
expect(wiki.filterTiddlers("[sortsub:string<sort1>]",anchorWidget).join(",")).toBe("
|
781
|
-
expect(wiki.filterTiddlers("[!sortsub:string<sort1>]",anchorWidget).join(",")).toBe("hasList,one,filter regexp test,a fourth tiddler,$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,
|
939
|
+
expect(wiki.filterTiddlers("[sortsub:number<sort1>]",anchorWidget).join(",")).toBe("one,hasList,has filter,TiddlerOne,$:/TiddlerTwo,Tiddler Three,$:/ShadowPlugin,a fourth tiddler,filter regexp test");
|
940
|
+
expect(wiki.filterTiddlers("[!sortsub:number<sort1>]",anchorWidget).join(",")).toBe("filter regexp test,a fourth tiddler,$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,has filter,TiddlerOne,hasList,one");
|
941
|
+
expect(wiki.filterTiddlers("[sortsub:string<sort1>]",anchorWidget).join(",")).toBe("has filter,TiddlerOne,$:/TiddlerTwo,Tiddler Three,$:/ShadowPlugin,a fourth tiddler,filter regexp test,one,hasList");
|
942
|
+
expect(wiki.filterTiddlers("[!sortsub:string<sort1>]",anchorWidget).join(",")).toBe("hasList,one,filter regexp test,a fourth tiddler,$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,has filter,TiddlerOne");
|
782
943
|
expect(wiki.filterTiddlers("[sortsub:number<sort2>]",anchorWidget).join(",")).toBe("one,TiddlerOne,hasList,has filter,a fourth tiddler,Tiddler Three,$:/TiddlerTwo,filter regexp test,$:/ShadowPlugin");
|
783
944
|
expect(wiki.filterTiddlers("[!sortsub:number<sort2>]",anchorWidget).join(",")).toBe("$:/ShadowPlugin,filter regexp test,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,has filter,hasList,TiddlerOne,one");
|
784
945
|
expect(wiki.filterTiddlers("[sortsub:string<sort2>]",anchorWidget).join(",")).toBe("one,TiddlerOne,hasList,has filter,$:/ShadowPlugin,a fourth tiddler,Tiddler Three,$:/TiddlerTwo,filter regexp test");
|
@@ -899,4 +1060,4 @@ Tests the filtering mechanism.
|
|
899
1060
|
});
|
900
1061
|
|
901
1062
|
})();
|
902
|
-
|
1063
|
+
|
@@ -128,6 +128,21 @@ describe("HTML tag new parser tests", function() {
|
|
128
128
|
expect($tw.utils.parseAttribute("p=\"blah\" ",0)).toEqual(
|
129
129
|
{ type : 'string', start : 0, name : 'p', value : 'blah', end : 8 }
|
130
130
|
);
|
131
|
+
expect($tw.utils.parseAttribute("p=\"bl\nah\" ",0)).toEqual(
|
132
|
+
{ type : 'string', start : 0, name : 'p', value : 'bl\nah', end : 9 }
|
133
|
+
);
|
134
|
+
expect($tw.utils.parseAttribute("p={{{blah}}} ",0)).toEqual(
|
135
|
+
{ type : 'filtered', start : 0, name : 'p', filter : 'blah', end : 12 }
|
136
|
+
);
|
137
|
+
expect($tw.utils.parseAttribute("p={{{bl\nah}}} ",0)).toEqual(
|
138
|
+
{ type : 'filtered', start : 0, name : 'p', filter : 'bl\nah', end : 13 }
|
139
|
+
);
|
140
|
+
expect($tw.utils.parseAttribute("p={{{ [{$:/layout}] }}} ",0)).toEqual(
|
141
|
+
{ type : 'filtered', start : 0, name : 'p', filter : ' [{$:/layout}] ', end : 23 }
|
142
|
+
);
|
143
|
+
expect($tw.utils.parseAttribute("p={{blah}} ",0)).toEqual(
|
144
|
+
{ type : 'indirect', start : 0, name : 'p', textReference : 'blah', end : 10 }
|
145
|
+
);
|
131
146
|
expect($tw.utils.parseAttribute("p=blah ",0)).toEqual(
|
132
147
|
{ type : 'string', start : 0, name : 'p', value : 'blah', end : 6 }
|
133
148
|
);
|
@@ -392,10 +392,10 @@ describe("'reduce' and 'intersection' filter prefix tests", function() {
|
|
392
392
|
rootWidget.setVariable("larger-than-18","[get[text]length[]compare:integer:gteq[18]]");
|
393
393
|
rootWidget.setVariable("nr","18");
|
394
394
|
rootWidget.setVariable("larger-than-18-with-var","[get[text]length[]compare:integer:gteq<nr>]");
|
395
|
-
expect(wiki.filterTiddlers("[tag[textexample]] :filter[get[text]length[]compare:integer:gteq[18]]",anchorWidget).join(",")).toBe("
|
396
|
-
expect(wiki.filterTiddlers("[tag[textexample]]",anchorWidget).join(",")).toBe("
|
397
|
-
expect(wiki.filterTiddlers("[tag[textexample]filter<larger-than-18>]",anchorWidget).join(",")).toBe("
|
398
|
-
expect(wiki.filterTiddlers("[tag[textexample]filter<larger-than-18-with-var>]",anchorWidget).join(",")).toBe("
|
395
|
+
expect(wiki.filterTiddlers("[tag[textexample]] :filter[get[text]length[]compare:integer:gteq[18]]",anchorWidget).join(",")).toBe("Cheesecake,Chocolate Cake,Red wine");
|
396
|
+
expect(wiki.filterTiddlers("[tag[textexample]]",anchorWidget).join(",")).toBe("Cheesecake,Chocolate Cake,Red wine,Sparkling water");
|
397
|
+
expect(wiki.filterTiddlers("[tag[textexample]filter<larger-than-18>]",anchorWidget).join(",")).toBe("Cheesecake,Chocolate Cake,Red wine");
|
398
|
+
expect(wiki.filterTiddlers("[tag[textexample]filter<larger-than-18-with-var>]",anchorWidget).join(",")).toBe("Cheesecake,Chocolate Cake,Red wine");
|
399
399
|
});
|
400
400
|
|
401
401
|
it("should handle the :sort prefix", function() {
|
@@ -405,7 +405,7 @@ describe("'reduce' and 'intersection' filter prefix tests", function() {
|
|
405
405
|
expect(wiki.filterTiddlers("[tag[textexample]] :sort:number:[get[text]length[]]").join(",")).toBe("Sparkling water,Chocolate Cake,Red wine,Cheesecake");
|
406
406
|
expect(wiki.filterTiddlers("[tag[textexample]] :sort:number:reverse[get[text]length[]]").join(",")).toBe("Cheesecake,Red wine,Chocolate Cake,Sparkling water");
|
407
407
|
expect(wiki.filterTiddlers("[tag[notatag]] :sort:number[get[price]]").join(",")).toBe("");
|
408
|
-
expect(wiki.filterTiddlers("[tag[cakes]] :sort:string[{!!title}]").join(",")).toBe("Cheesecake,
|
408
|
+
expect(wiki.filterTiddlers("[tag[cakes]] :sort:string[{!!title}]").join(",")).toBe("cheesecake,Cheesecake,chocolate cake,Chocolate Cake,Persian love cake,Pound cake");
|
409
409
|
expect(wiki.filterTiddlers("[tag[cakes]] :sort:string:casesensitive[{!!title}]").join(",")).toBe("Cheesecake,Chocolate Cake,Persian love cake,Pound cake,cheesecake,chocolate cake");
|
410
410
|
expect(wiki.filterTiddlers("[tag[cakes]] :sort:string:casesensitive,reverse[{!!title}]").join(",")).toBe("chocolate cake,cheesecake,Pound cake,Persian love cake,Chocolate Cake,Cheesecake");
|
411
411
|
});
|
@@ -102,6 +102,25 @@ function runTests(wiki,wikiOptions) {
|
|
102
102
|
expect(wiki.filterTiddlers("[tag[TiddlerSeventh]]").join(",")).toBe("Tiddler10,TiddlerOne,Tiddler Three,Tiddler11,Tiddler9,a fourth tiddler");
|
103
103
|
});
|
104
104
|
|
105
|
+
it("should apply identical tag ordering irrespective of tag creation order", function () {
|
106
|
+
var wiki;
|
107
|
+
wiki = new $tw.Wiki(wikiOptions);
|
108
|
+
wiki.addTiddler({ title: "A", text: "", tags: "sortTag"});
|
109
|
+
wiki.addTiddler({ title: "B", text: "", tags: "sortTag"});
|
110
|
+
wiki.addTiddler({ title: "C", text: "", tags: "sortTag"});
|
111
|
+
expect(wiki.filterTiddlers("[tag[sortTag]]").join(',')).toBe("A,B,C");
|
112
|
+
wiki = new $tw.Wiki(wikiOptions);
|
113
|
+
wiki.addTiddler({ title: "A", text: "", tags: "sortTag"});
|
114
|
+
wiki.addTiddler({ title: "C", text: "", tags: "sortTag"});
|
115
|
+
wiki.addTiddler({ title: "B", text: "", tags: "sortTag"});
|
116
|
+
expect(wiki.filterTiddlers("[tag[sortTag]]").join(',')).toBe("A,B,C");
|
117
|
+
wiki = new $tw.Wiki(wikiOptions);
|
118
|
+
wiki.addTiddler({ title: "C", text: "", tags: "sortTag"});
|
119
|
+
wiki.addTiddler({ title: "B", text: "", tags: "sortTag"});
|
120
|
+
wiki.addTiddler({ title: "A", text: "", tags: "sortTag"});
|
121
|
+
expect(wiki.filterTiddlers("[tag[sortTag]]").join(',')).toBe("A,B,C");
|
122
|
+
});
|
123
|
+
|
105
124
|
// Tests for issue (#3296)
|
106
125
|
it("should apply tag ordering in order of dependency", function () {
|
107
126
|
var wiki = new $tw.Wiki(wikiOptions);
|
@@ -169,6 +169,16 @@ describe("Utility tests", function() {
|
|
169
169
|
expect(cv("1.1.1","1.1.2")).toEqual(-1);
|
170
170
|
});
|
171
171
|
|
172
|
+
it("should insert strings into sorted arrays", function() {
|
173
|
+
expect($tw.utils.insertSortedArray([],"a").join(",")).toEqual("a");
|
174
|
+
expect($tw.utils.insertSortedArray(["b","c","d"],"a").join(",")).toEqual("a,b,c,d");
|
175
|
+
expect($tw.utils.insertSortedArray(["b","c","d"],"d").join(",")).toEqual("b,c,d");
|
176
|
+
expect($tw.utils.insertSortedArray(["b","c","d"],"f").join(",")).toEqual("b,c,d,f");
|
177
|
+
expect($tw.utils.insertSortedArray(["b","c","d","e"],"f").join(",")).toEqual("b,c,d,e,f");
|
178
|
+
expect($tw.utils.insertSortedArray(["b","c","g"],"f").join(",")).toEqual("b,c,f,g");
|
179
|
+
expect($tw.utils.insertSortedArray(["b","c","d"],"ccc").join(",")).toEqual("b,c,ccc,d");
|
180
|
+
});
|
181
|
+
|
172
182
|
});
|
173
183
|
|
174
184
|
})();
|