From 13ceaf3b93aee5df80ec3da61e2b19d8a58a716f Mon Sep 17 00:00:00 2001 From: pmario Date: Sun, 16 Mar 2025 16:56:59 +0100 Subject: [PATCH] fix whitespace --- core/modules/commander.js | 1 - core/modules/config.js | 1 - core/modules/deserializers.js | 1 - core/modules/filters.js | 3 +- core/modules/keyboard.js | 1 - core/modules/language.js | 1 - core/modules/macros/jsontiddlers.js | 1 - core/modules/macros/makedatauri.js | 1 - core/modules/macros/now.js | 1 - core/modules/macros/qualify.js | 1 - core/modules/macros/resolvepath.js | 1 - core/modules/macros/unusedtitle.js | 1 - core/modules/macros/version.js | 1 - core/modules/parsers/audioparser.js | 2 - core/modules/parsers/binaryparser.js | 2 - core/modules/parsers/csvparser.js | 4 +- core/modules/parsers/htmlparser.js | 2 - core/modules/parsers/imageparser.js | 2 - core/modules/parsers/parseutils.js | 1 - core/modules/parsers/pdfparser.js | 2 - core/modules/parsers/videoparser.js | 1 - .../parsers/wikiparser/rules/codeblock.js | 1 - .../parsers/wikiparser/rules/codeinline.js | 1 - .../parsers/wikiparser/rules/commentblock.js | 1 - .../parsers/wikiparser/rules/commentinline.js | 1 - core/modules/parsers/wikiparser/rules/dash.js | 1 - .../rules/emphasis/strikethrough.js | 1 - .../wikiparser/rules/emphasis/subscript.js | 1 - .../parsers/wikiparser/rules/entity.js | 1 - .../parsers/wikiparser/rules/extlink.js | 1 - .../rules/filteredtranscludeblock.js | 1 - .../rules/filteredtranscludeinline.js | 1 - .../parsers/wikiparser/rules/fnprocdef.js | 2 - .../wikiparser/rules/hardlinebreaks.js | 1 - .../parsers/wikiparser/rules/horizrule.js | 1 - core/modules/parsers/wikiparser/rules/html.js | 1 - .../modules/parsers/wikiparser/rules/image.js | 1 - .../parsers/wikiparser/rules/import.js | 1 - core/modules/parsers/wikiparser/rules/list.js | 1 - .../wikiparser/rules/macrocallblock.js | 3 +- .../wikiparser/rules/macrocallinline.js | 1 - .../parsers/wikiparser/rules/macrodef.js | 1 - .../parsers/wikiparser/rules/parameters.js | 1 - .../parsers/wikiparser/rules/parsermode.js | 1 - .../parsers/wikiparser/rules/prettyextlink.js | 1 - .../parsers/wikiparser/rules/prettylink.js | 1 - .../parsers/wikiparser/rules/quoteblock.js | 1 - .../modules/parsers/wikiparser/rules/rules.js | 1 - .../parsers/wikiparser/rules/styleblock.js | 1 - .../parsers/wikiparser/rules/styleinline.js | 1 - .../modules/parsers/wikiparser/rules/table.js | 1 - .../wikiparser/rules/transcludeblock.js | 1 - .../wikiparser/rules/transcludeinline.js | 1 - .../parsers/wikiparser/rules/typedblock.js | 1 - .../parsers/wikiparser/rules/whitespace.js | 1 - .../parsers/wikiparser/rules/wikilink.js | 1 - .../wikiparser/rules/wikilinkprefix.js | 1 - .../parsers/wikiparser/wikirulebase.js | 1 - core/modules/pluginswitcher.js | 1 - core/modules/saver-handler.js | 1 - core/modules/savers/andtidwiki.js | 13 +- core/modules/savers/custom.js | 2 +- core/modules/savers/download.js | 1 - core/modules/savers/fsosaver.js | 1 - core/modules/savers/gitea.js | 3 +- core/modules/savers/github.js | 1 - core/modules/savers/gitlab.js | 4 - core/modules/savers/manualdownload.js | 1 - core/modules/savers/msdownload.js | 1 - core/modules/savers/put.js | 3 +- core/modules/savers/tiddlyfox.js | 4 - core/modules/savers/tiddlyie.js | 1 - core/modules/savers/twedit.js | 4 - core/modules/savers/upload.js | 3 +- core/modules/server/authenticators/basic.js | 1 - core/modules/server/server.js | 5 +- core/modules/startup/browser-messaging.js | 1 - core/modules/startup/commands.js | 1 - core/modules/startup/favicon.js | 1 - core/modules/startup/info.js | 1 - core/modules/startup/load-modules.js | 1 - core/modules/startup/password.js | 1 - core/modules/startup/render.js | 1 - core/modules/startup/rootwidget.js | 1 - core/modules/startup/startup.js | 1 - core/modules/startup/story.js | 1 - core/modules/startup/windows.js | 1 - core/modules/story.js | 2 - core/modules/storyviews/classic.js | 1 - core/modules/storyviews/pop.js | 1 - core/modules/storyviews/zoomin.js | 7 +- core/modules/syncer.js | 1 - core/modules/tiddler.js | 1 - core/modules/upgraders/plugins.js | 1 - core/modules/upgraders/system.js | 1 - core/modules/upgraders/themetweaks.js | 1 - core/modules/utils/crypto.js | 1 - core/modules/utils/csv.js | 33 +- core/modules/utils/dom/animations/slide.js | 1 - core/modules/utils/dom/animator.js | 1 - core/modules/utils/dom/browser.js | 1 - core/modules/utils/dom/dom.js | 5 +- core/modules/utils/dom/dragndrop.js | 1 - core/modules/utils/dom/http.js | 1 - core/modules/utils/dom/keyboard.js | 1 - core/modules/utils/dom/modal.js | 1 - core/modules/utils/dom/notifier.js | 1 - core/modules/utils/dom/popup.js | 3 +- core/modules/utils/dom/scroller.js | 1 - core/modules/utils/edition-info.js | 1 - core/modules/utils/escapecss.js | 16 +- core/modules/utils/fakedom.js | 1 - core/modules/utils/filesystem.js | 7 +- core/modules/utils/linked-list.js | 6 +- core/modules/utils/logger.js | 1 - core/modules/utils/parsetree.js | 1 - core/modules/utils/performance.js | 3 +- core/modules/utils/pluginmaker.js | 1 - core/modules/utils/transliterate.js | 1 - core/modules/utils/utils.js | 1 - core/modules/widgets/action-confirm.js | 1 - core/modules/widgets/action-createtiddler.js | 10 +- core/modules/widgets/action-deletefield.js | 1 - core/modules/widgets/action-deletetiddler.js | 1 - core/modules/widgets/action-log.js | 1 - core/modules/widgets/action-navigate.js | 1 - core/modules/widgets/action-popup.js | 1 - core/modules/widgets/action-sendmessage.js | 1 - core/modules/widgets/action-setfield.js | 1 - .../widgets/action-setmultiplefields.js | 2 - core/modules/widgets/browse.js | 1 - core/modules/widgets/button.js | 1 - core/modules/widgets/codeblock.js | 1 - core/modules/widgets/count.js | 1 - core/modules/widgets/diff-text.js | 1 - core/modules/widgets/dropzone.js | 1 - core/modules/widgets/edit-binary.js | 1 - core/modules/widgets/edit-bitmap.js | 1 - core/modules/widgets/edit-shortcut.js | 1 - core/modules/widgets/edit-text.js | 1 - core/modules/widgets/edit.js | 1 - core/modules/widgets/element.js | 1 - core/modules/widgets/encrypt.js | 1 - core/modules/widgets/entity.js | 1 - core/modules/widgets/error.js | 1 - core/modules/widgets/eventcatcher.js | 1 - core/modules/widgets/fieldmangler.js | 1 - core/modules/widgets/fields.js | 7 +- core/modules/widgets/fill.js | 2 - core/modules/widgets/genesis.js | 1 - core/modules/widgets/image.js | 1 - core/modules/widgets/importvariables.js | 5 +- core/modules/widgets/keyboard.js | 3 +- core/modules/widgets/let.js | 5 +- core/modules/widgets/link.js | 1 - core/modules/widgets/linkcatcher.js | 1 - core/modules/widgets/macrocall.js | 1 - core/modules/widgets/messagecatcher.js | 1 - core/modules/widgets/navigator.js | 1 - core/modules/widgets/parameters.js | 1 - core/modules/widgets/password.js | 1 - core/modules/widgets/qualify.js | 1 - core/modules/widgets/radio.js | 1 - core/modules/widgets/range.js | 7 +- core/modules/widgets/raw.js | 1 - core/modules/widgets/reveal.js | 5 +- core/modules/widgets/scrollable.js | 1 - core/modules/widgets/select.js | 7 +- core/modules/widgets/setmultiplevariables.js | 2 - core/modules/widgets/setvariable.js | 1 - core/modules/widgets/slot.js | 1 - core/modules/widgets/text.js | 1 - core/modules/widgets/tiddler.js | 1 - core/modules/widgets/transclude.js | 1 - core/modules/widgets/vars.js | 1 - core/modules/widgets/view.js | 1 - core/modules/widgets/widget.js | 3 +- core/modules/widgets/wikify.js | 1 - core/modules/wiki-bulkops.js | 1 - core/modules/wiki.js | 8 +- .../javascript-widget-tutorial/domwidget.js | 1 + .../javascript-widget-tutorial/donothing.js | 1 - .../javascript-widget-tutorial/hello.js | 1 - .../tiddlers/tests/modules/utils/test-csv.js | 3 +- .../tiddlers/tests/test-action-widgets.js | 1 - .../test/tiddlers/tests/test-backlinks.js | 1 - .../tests/test-deserialize-operator.js | 3 - .../test/tiddlers/tests/test-deserializers.js | 42 +- editions/test/tiddlers/tests/test-filters.js | 1294 ++++++++--------- .../test/tiddlers/tests/test-html-parser.js | 1 - editions/test/tiddlers/tests/test-widget.js | 4 +- editions/tw5.com/tiddlers/system/theme.tid | 3 - plugins/tiddlywiki/bibtex/deserializer.js | 1 - plugins/tiddlywiki/browser-sniff/browser.js | 1 - .../tiddlywiki/browser-storage/rawmarkup.js | 4 +- plugins/tiddlywiki/browser-storage/startup.js | 1 - plugins/tiddlywiki/browser-storage/util.js | 2 - plugins/tiddlywiki/cecily/cecily.js | 1 - .../tiddlywiki/classictools/modules/recipe.js | 1 - .../tiddlywiki/codemirror/edit-codemirror.js | 1 - plugins/tiddlywiki/codemirror/engine.js | 1 - .../tiddlywiki/consent-banner/raw-widget.js | 1 - plugins/tiddlywiki/consent-banner/startup.js | 1 - plugins/tiddlywiki/d3/barwidget.js | 1 - plugins/tiddlywiki/d3/cloudwidget.js | 1 - .../dynannotate/modules/dynannotate.js | 1 - .../modules/legacy-selection-tracker.js | 1 - .../dynannotate/modules/selection-tracker.js | 1 - .../tiddlywiki/dynannotate/modules/startup.js | 2 - .../tiddlywiki/dynannotate/modules/textmap.js | 1 - plugins/tiddlywiki/dynaview/dynaview.js | 1 - .../evernote/modules/enex-deserializer.js | 2 +- .../external-attachments/startup.js | 2 - .../filesystem/filesystemadaptor.js | 1 - plugins/tiddlywiki/freelinks/plain-text.js | 1 - plugins/tiddlywiki/freelinks/text.js | 1 - .../googleanalytics/googleanalytics.js | 3 - .../highlight-legacy/highlightblock.js | 6 +- .../tiddlywiki/highlight/highlightblock.js | 3 + plugins/tiddlywiki/innerwiki/innerwiki.js | 1 - plugins/tiddlywiki/innerwiki/screenshot.js | 1 - plugins/tiddlywiki/jasmine/jasmine-plugin.js | 5 +- .../jasmine/run-wiki-based-tests.js | 1 - plugins/tiddlywiki/jasmine/startup.js | 3 - plugins/tiddlywiki/jszip/startup.js | 1 - plugins/tiddlywiki/katex/latex-parser.js | 1 - plugins/tiddlywiki/katex/wrapper.js | 2 - .../editor-operations/make-markdown-link.js | 1 - plugins/tiddlywiki/markdown-legacy/wrapper.js | 1 - .../editor-operations/make-markdown-link.js | 1 - .../markdown/markdown-it-tiddlywiki.js | 1 - plugins/tiddlywiki/mobiledragdrop/startup.js | 1 - .../tiddlywiki/nodewebkitsaver/nodewebkit.js | 1 - .../tiddlywiki/pluginlibrary/libraryserver.js | 1 - plugins/tiddlywiki/qrcode/makeqr.js | 2 - plugins/tiddlywiki/railroad/typed-parser.js | 2 - plugins/tiddlywiki/savetrail/savetrail.js | 1 - plugins/tiddlywiki/share/rawmarkup.js | 1 - plugins/tiddlywiki/tahoelafs/saver.js | 1 - .../text-slicer/modules/commands/slice.js | 1 - .../modules/filters/list-children.js | 1 - .../tiddlywiki/text-slicer/modules/slicer.js | 1 - .../modules/startup/slicer-startup.js | 1 - .../tiddlywiki/tiddlyweb/tiddlywebadaptor.js | 1 - .../tiddlywiki/tw2parser/classictransclude.js | 5 +- .../tiddlywiki/tw2parser/wikitextparser.js | 1 - plugins/tiddlywiki/tw2parser/wikitextrules.js | 1 - .../tiddlywiki/twitter-archivist/archivist.js | 1 - .../twitter-archivist/loadtwitterarchive.js | 1 - .../tiddlywiki/twitter-archivist/startup.js | 1 - plugins/tiddlywiki/twitter/startup.js | 1 - plugins/tiddlywiki/twitter/twitter-widget.js | 1 - plugins/tiddlywiki/upgrade/config.js | 1 - plugins/tiddlywiki/xlsx-utils/deserializer.js | 1 - plugins/tiddlywiki/xlsx-utils/importer.js | 1 - plugins/tiddlywiki/xlsx-utils/startup.js | 1 - .../xlsx-utils/xlsx-import-command.js | 1 - 257 files changed, 756 insertions(+), 1044 deletions(-) diff --git a/core/modules/commander.js b/core/modules/commander.js index c4845c311..b73e39b0f 100644 --- a/core/modules/commander.js +++ b/core/modules/commander.js @@ -170,4 +170,3 @@ Commander.initCommands = function(moduleType) { }; exports.Commander = Commander; - diff --git a/core/modules/config.js b/core/modules/config.js index 97b361681..3546a21bc 100644 --- a/core/modules/config.js +++ b/core/modules/config.js @@ -34,4 +34,3 @@ exports.htmlVoidElements = "area,base,br,col,command,embed,hr,img,input,keygen,l exports.htmlBlockElements = "address,article,aside,audio,blockquote,canvas,dd,details,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,nav,ol,p,pre,section,summary,table,tfoot,ul,video".split(","); exports.htmlUnsafeElements = "script".split(","); - diff --git a/core/modules/deserializers.js b/core/modules/deserializers.js index 4e8ce4d63..972a41bb0 100644 --- a/core/modules/deserializers.js +++ b/core/modules/deserializers.js @@ -178,4 +178,3 @@ var deserializeTiddlerDiv = function(text /* [,fields] */) { } return undefined; }; - diff --git a/core/modules/filters.js b/core/modules/filters.js index bba740ef9..321f5a211 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -67,7 +67,7 @@ function parseFilterOperation(operators,filterString,p) { operator.operands = []; var parseOperand = function(bracketType) { var operand = {}; - switch(bracketType) { + switch (bracketType) { case "{": // Curly brackets operand.indirect = true; nextBracketPos = filterString.indexOf("}",p); @@ -364,4 +364,3 @@ exports.compileFilter = function(filterString) { this.filterCacheCount++; return fnMeasured; }; - diff --git a/core/modules/keyboard.js b/core/modules/keyboard.js index d8d161ee5..8adab9e81 100644 --- a/core/modules/keyboard.js +++ b/core/modules/keyboard.js @@ -380,4 +380,3 @@ KeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) { }; exports.KeyboardManager = KeyboardManager; - diff --git a/core/modules/language.js b/core/modules/language.js index edcb90882..b0409ee4d 100644 --- a/core/modules/language.js +++ b/core/modules/language.js @@ -38,4 +38,3 @@ Language.prototype.getRawString = function(title) { }; exports.Language = Language; - diff --git a/core/modules/macros/jsontiddlers.js b/core/modules/macros/jsontiddlers.js index 2717cf766..25e08f6b9 100644 --- a/core/modules/macros/jsontiddlers.js +++ b/core/modules/macros/jsontiddlers.js @@ -26,4 +26,3 @@ Run the macro exports.run = function(filter,spaces) { return this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces)); }; - diff --git a/core/modules/macros/makedatauri.js b/core/modules/macros/makedatauri.js index 85a7bf778..db67495e5 100644 --- a/core/modules/macros/makedatauri.js +++ b/core/modules/macros/makedatauri.js @@ -29,4 +29,3 @@ Run the macro exports.run = function(text,type,_canonical_uri) { return $tw.utils.makeDataUri(text,type,_canonical_uri); }; - diff --git a/core/modules/macros/now.js b/core/modules/macros/now.js index 32e454bc8..86513f1b9 100644 --- a/core/modules/macros/now.js +++ b/core/modules/macros/now.js @@ -25,4 +25,3 @@ Run the macro exports.run = function(format) { return $tw.utils.formatDateString(new Date(),format || "0hh:0mm, DDth MMM YYYY"); }; - diff --git a/core/modules/macros/qualify.js b/core/modules/macros/qualify.js index 3fc8610d2..ff6716dd4 100644 --- a/core/modules/macros/qualify.js +++ b/core/modules/macros/qualify.js @@ -25,4 +25,3 @@ Run the macro exports.run = function(title) { return title + "-" + this.getStateQualifier(); }; - diff --git a/core/modules/macros/resolvepath.js b/core/modules/macros/resolvepath.js index d7cd8814c..68c2e4d04 100644 --- a/core/modules/macros/resolvepath.js +++ b/core/modules/macros/resolvepath.js @@ -22,4 +22,3 @@ Run the macro exports.run = function(source, root) { return $tw.utils.resolvePath(source, root); }; - diff --git a/core/modules/macros/unusedtitle.js b/core/modules/macros/unusedtitle.js index e1b457a10..056c713df 100644 --- a/core/modules/macros/unusedtitle.js +++ b/core/modules/macros/unusedtitle.js @@ -30,4 +30,3 @@ exports.run = function(baseName,separator,template,startCount) { // options.prefix must be a string! return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount}).trim(); }; - diff --git a/core/modules/macros/version.js b/core/modules/macros/version.js index 8e909116c..0a5315b81 100644 --- a/core/modules/macros/version.js +++ b/core/modules/macros/version.js @@ -23,4 +23,3 @@ Run the macro exports.run = function() { return $tw.version; }; - diff --git a/core/modules/parsers/audioparser.js b/core/modules/parsers/audioparser.js index 778cc52a5..601de058e 100644 --- a/core/modules/parsers/audioparser.js +++ b/core/modules/parsers/audioparser.js @@ -33,5 +33,3 @@ exports["audio/ogg"] = AudioParser; exports["audio/mpeg"] = AudioParser; exports["audio/mp3"] = AudioParser; exports["audio/mp4"] = AudioParser; - - diff --git a/core/modules/parsers/binaryparser.js b/core/modules/parsers/binaryparser.js index 4c575a233..947d9befa 100644 --- a/core/modules/parsers/binaryparser.js +++ b/core/modules/parsers/binaryparser.js @@ -66,5 +66,3 @@ var BinaryParser = function(type,text,options) { }; exports["application/octet-stream"] = BinaryParser; - - diff --git a/core/modules/parsers/csvparser.js b/core/modules/parsers/csvparser.js index 2c39d9ec5..2d32b3a06 100644 --- a/core/modules/parsers/csvparser.js +++ b/core/modules/parsers/csvparser.js @@ -11,7 +11,7 @@ The CSV text parser processes CSV files into a table wrapped in a scrollable wid var CsvParser = function(type,text,options) { // Special handler for tab-delimited files - if(type === 'text/tab-delimited-values' && !options.separator) { + if (type === 'text/tab-delimited-values' && !options.separator) { options.separator = "\t"; } @@ -55,5 +55,3 @@ var CsvParser = function(type,text,options) { exports["text/csv"] = CsvParser; exports["text/tab-delimited-values"] = CsvParser; - - diff --git a/core/modules/parsers/htmlparser.js b/core/modules/parsers/htmlparser.js index 1b086449f..fee869868 100644 --- a/core/modules/parsers/htmlparser.js +++ b/core/modules/parsers/htmlparser.js @@ -31,5 +31,3 @@ var HtmlParser = function(type,text,options) { }; exports["text/html"] = HtmlParser; - - diff --git a/core/modules/parsers/imageparser.js b/core/modules/parsers/imageparser.js index 24ddb93fd..c7201445f 100644 --- a/core/modules/parsers/imageparser.js +++ b/core/modules/parsers/imageparser.js @@ -40,5 +40,3 @@ exports["image/heif"] = ImageParser; exports["image/avif"] = ImageParser; exports["image/x-icon"] = ImageParser; exports["image/vnd.microsoft.icon"] = ImageParser; - - diff --git a/core/modules/parsers/parseutils.js b/core/modules/parsers/parseutils.js index 69a552da1..30bc39509 100644 --- a/core/modules/parsers/parseutils.js +++ b/core/modules/parsers/parseutils.js @@ -381,4 +381,3 @@ exports.parseAttribute = function(source,pos) { node.end = pos; return node; }; - diff --git a/core/modules/parsers/pdfparser.js b/core/modules/parsers/pdfparser.js index 00e0df613..0551e93fa 100644 --- a/core/modules/parsers/pdfparser.js +++ b/core/modules/parsers/pdfparser.js @@ -27,5 +27,3 @@ var ImageParser = function(type,text,options) { }; exports["application/pdf"] = ImageParser; - - diff --git a/core/modules/parsers/videoparser.js b/core/modules/parsers/videoparser.js index cb25bd06f..e4406e56a 100644 --- a/core/modules/parsers/videoparser.js +++ b/core/modules/parsers/videoparser.js @@ -33,4 +33,3 @@ exports["video/ogg"] = VideoParser; exports["video/webm"] = VideoParser; exports["video/mp4"] = VideoParser; exports["video/quicktime"] = VideoParser; - diff --git a/core/modules/parsers/wikiparser/rules/codeblock.js b/core/modules/parsers/wikiparser/rules/codeblock.js index dfd7df329..bdecd65be 100644 --- a/core/modules/parsers/wikiparser/rules/codeblock.js +++ b/core/modules/parsers/wikiparser/rules/codeblock.js @@ -53,4 +53,3 @@ exports.parse = function() { } }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/codeinline.js b/core/modules/parsers/wikiparser/rules/codeinline.js index adf057689..5606ba478 100644 --- a/core/modules/parsers/wikiparser/rules/codeinline.js +++ b/core/modules/parsers/wikiparser/rules/codeinline.js @@ -51,4 +51,3 @@ exports.parse = function() { }] }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/commentblock.js b/core/modules/parsers/wikiparser/rules/commentblock.js index 2e0430141..96d3deb3d 100644 --- a/core/modules/parsers/wikiparser/rules/commentblock.js +++ b/core/modules/parsers/wikiparser/rules/commentblock.js @@ -49,4 +49,3 @@ exports.parse = function() { // Don't return any elements return []; }; - diff --git a/core/modules/parsers/wikiparser/rules/commentinline.js b/core/modules/parsers/wikiparser/rules/commentinline.js index 3ebbea49c..e826b95e6 100644 --- a/core/modules/parsers/wikiparser/rules/commentinline.js +++ b/core/modules/parsers/wikiparser/rules/commentinline.js @@ -43,4 +43,3 @@ exports.parse = function() { // Don't return any elements return []; }; - diff --git a/core/modules/parsers/wikiparser/rules/dash.js b/core/modules/parsers/wikiparser/rules/dash.js index 057db9ce2..02d82baec 100644 --- a/core/modules/parsers/wikiparser/rules/dash.js +++ b/core/modules/parsers/wikiparser/rules/dash.js @@ -33,4 +33,3 @@ exports.parse = function() { entity: dash }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js b/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js index aa49066cd..24380ed11 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js @@ -43,4 +43,3 @@ exports.parse = function() { children: tree }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/emphasis/subscript.js b/core/modules/parsers/wikiparser/rules/emphasis/subscript.js index 8f8c7e406..104ed0294 100644 --- a/core/modules/parsers/wikiparser/rules/emphasis/subscript.js +++ b/core/modules/parsers/wikiparser/rules/emphasis/subscript.js @@ -43,4 +43,3 @@ exports.parse = function() { children: tree }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/entity.js b/core/modules/parsers/wikiparser/rules/entity.js index 858775973..df2068b78 100644 --- a/core/modules/parsers/wikiparser/rules/entity.js +++ b/core/modules/parsers/wikiparser/rules/entity.js @@ -33,4 +33,3 @@ exports.parse = function() { // Return the entity return [{type: "entity", entity: this.match[0]}]; }; - diff --git a/core/modules/parsers/wikiparser/rules/extlink.js b/core/modules/parsers/wikiparser/rules/extlink.js index 0cd4a2265..2678e3873 100644 --- a/core/modules/parsers/wikiparser/rules/extlink.js +++ b/core/modules/parsers/wikiparser/rules/extlink.js @@ -49,4 +49,3 @@ exports.parse = function() { }]; } }; - diff --git a/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js b/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js index 264e5f089..2fd96183e 100644 --- a/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js +++ b/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js @@ -67,4 +67,3 @@ exports.parse = function() { } return [node]; }; - diff --git a/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js b/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js index 4043d2e60..ee82ff517 100644 --- a/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js +++ b/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js @@ -66,4 +66,3 @@ exports.parse = function() { } return [node]; }; - diff --git a/core/modules/parsers/wikiparser/rules/fnprocdef.js b/core/modules/parsers/wikiparser/rules/fnprocdef.js index 537496d33..8e675a3d1 100644 --- a/core/modules/parsers/wikiparser/rules/fnprocdef.js +++ b/core/modules/parsers/wikiparser/rules/fnprocdef.js @@ -89,5 +89,3 @@ exports.parse = function() { } return parseTreeNodes; }; - - \ No newline at end of file diff --git a/core/modules/parsers/wikiparser/rules/hardlinebreaks.js b/core/modules/parsers/wikiparser/rules/hardlinebreaks.js index 135a7a756..da28f7808 100644 --- a/core/modules/parsers/wikiparser/rules/hardlinebreaks.js +++ b/core/modules/parsers/wikiparser/rules/hardlinebreaks.js @@ -53,4 +53,3 @@ exports.parse = function() { // Return the nodes return tree; }; - diff --git a/core/modules/parsers/wikiparser/rules/horizrule.js b/core/modules/parsers/wikiparser/rules/horizrule.js index 769aacccc..2294add6b 100644 --- a/core/modules/parsers/wikiparser/rules/horizrule.js +++ b/core/modules/parsers/wikiparser/rules/horizrule.js @@ -27,4 +27,3 @@ exports.parse = function() { this.parser.pos = this.matchRegExp.lastIndex; return [{type: "element", tag: "hr"}]; }; - diff --git a/core/modules/parsers/wikiparser/rules/html.js b/core/modules/parsers/wikiparser/rules/html.js index 4bb0af29a..c5f0e86c5 100644 --- a/core/modules/parsers/wikiparser/rules/html.js +++ b/core/modules/parsers/wikiparser/rules/html.js @@ -191,4 +191,3 @@ exports.isLegalTag = function(tag) { return true; } }; - diff --git a/core/modules/parsers/wikiparser/rules/image.js b/core/modules/parsers/wikiparser/rules/image.js index ce5b210f3..2bc90b80d 100644 --- a/core/modules/parsers/wikiparser/rules/image.js +++ b/core/modules/parsers/wikiparser/rules/image.js @@ -126,4 +126,3 @@ exports.parseImage = function(source,pos) { node.end = pos; return node; }; - diff --git a/core/modules/parsers/wikiparser/rules/import.js b/core/modules/parsers/wikiparser/rules/import.js index e4d059b5f..52332f0e3 100644 --- a/core/modules/parsers/wikiparser/rules/import.js +++ b/core/modules/parsers/wikiparser/rules/import.js @@ -47,4 +47,3 @@ exports.parse = function() { children: [] }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/list.js b/core/modules/parsers/wikiparser/rules/list.js index 42f2861c3..98cc5540f 100644 --- a/core/modules/parsers/wikiparser/rules/list.js +++ b/core/modules/parsers/wikiparser/rules/list.js @@ -149,4 +149,3 @@ exports.parse = function() { // Return the root element of the list return [listStack[0]]; }; - diff --git a/core/modules/parsers/wikiparser/rules/macrocallblock.js b/core/modules/parsers/wikiparser/rules/macrocallblock.js index c9df6f4fa..3793d563d 100644 --- a/core/modules/parsers/wikiparser/rules/macrocallblock.js +++ b/core/modules/parsers/wikiparser/rules/macrocallblock.js @@ -29,7 +29,7 @@ exports.findNextMatch = function(startPos) { var c = this.parser.source.charAt(nextCall.end); // Ensure EOL after parsed macro // If we didn't need to support IE, we'd just use /(?:\r?\n|$)/ym - if((c === "") || (c === "\n") || ((c === "\r") && this.parser.source.charAt(nextCall.end+1) === "\n")) { + if ((c === "") || (c === "\n") || ((c === "\r") && this.parser.source.charAt(nextCall.end+1) === "\n")) { this.nextCall = nextCall; return nextStart; } @@ -49,4 +49,3 @@ exports.parse = function() { this.parser.pos = call.end; return [call]; }; - diff --git a/core/modules/parsers/wikiparser/rules/macrocallinline.js b/core/modules/parsers/wikiparser/rules/macrocallinline.js index f9734b0e8..bd6e777bb 100644 --- a/core/modules/parsers/wikiparser/rules/macrocallinline.js +++ b/core/modules/parsers/wikiparser/rules/macrocallinline.js @@ -42,4 +42,3 @@ exports.parse = function() { this.parser.pos = call.end; return [call]; }; - diff --git a/core/modules/parsers/wikiparser/rules/macrodef.js b/core/modules/parsers/wikiparser/rules/macrodef.js index 8c3fc11ca..342f5aacd 100644 --- a/core/modules/parsers/wikiparser/rules/macrodef.js +++ b/core/modules/parsers/wikiparser/rules/macrodef.js @@ -85,4 +85,3 @@ exports.parse = function() { $tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],"value",text); return parseTreeNodes; }; - diff --git a/core/modules/parsers/wikiparser/rules/parameters.js b/core/modules/parsers/wikiparser/rules/parameters.js index 016ec159f..ccd50319c 100644 --- a/core/modules/parsers/wikiparser/rules/parameters.js +++ b/core/modules/parsers/wikiparser/rules/parameters.js @@ -53,4 +53,3 @@ exports.parse = function() { orderedAttributes: orderedAttributes }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/parsermode.js b/core/modules/parsers/wikiparser/rules/parsermode.js index c3f585d6e..868db3e15 100644 --- a/core/modules/parsers/wikiparser/rules/parsermode.js +++ b/core/modules/parsers/wikiparser/rules/parsermode.js @@ -61,4 +61,3 @@ exports.parse = function() { // No parse tree nodes to return return []; }; - diff --git a/core/modules/parsers/wikiparser/rules/prettyextlink.js b/core/modules/parsers/wikiparser/rules/prettyextlink.js index 7a565ca7d..2c575c227 100644 --- a/core/modules/parsers/wikiparser/rules/prettyextlink.js +++ b/core/modules/parsers/wikiparser/rules/prettyextlink.js @@ -113,4 +113,3 @@ exports.parseLink = function(source,pos) { node.end = closePos + 2; return node; }; - diff --git a/core/modules/parsers/wikiparser/rules/prettylink.js b/core/modules/parsers/wikiparser/rules/prettylink.js index ecc96547b..91579256d 100644 --- a/core/modules/parsers/wikiparser/rules/prettylink.js +++ b/core/modules/parsers/wikiparser/rules/prettylink.js @@ -63,4 +63,3 @@ exports.parse = function() { }]; } }; - diff --git a/core/modules/parsers/wikiparser/rules/quoteblock.js b/core/modules/parsers/wikiparser/rules/quoteblock.js index de2c9f94e..be8746de4 100644 --- a/core/modules/parsers/wikiparser/rules/quoteblock.js +++ b/core/modules/parsers/wikiparser/rules/quoteblock.js @@ -69,4 +69,3 @@ exports.parse = function() { children: tree }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/rules.js b/core/modules/parsers/wikiparser/rules/rules.js index 27b258855..7b3749308 100644 --- a/core/modules/parsers/wikiparser/rules/rules.js +++ b/core/modules/parsers/wikiparser/rules/rules.js @@ -57,4 +57,3 @@ exports.parse = function() { // No parse tree nodes to return return []; }; - diff --git a/core/modules/parsers/wikiparser/rules/styleblock.js b/core/modules/parsers/wikiparser/rules/styleblock.js index 250622d4a..2abf2fc9e 100644 --- a/core/modules/parsers/wikiparser/rules/styleblock.js +++ b/core/modules/parsers/wikiparser/rules/styleblock.js @@ -66,4 +66,3 @@ exports.parse = function() { } return tree; }; - diff --git a/core/modules/parsers/wikiparser/rules/styleinline.js b/core/modules/parsers/wikiparser/rules/styleinline.js index c0d9399ce..3aea0d266 100644 --- a/core/modules/parsers/wikiparser/rules/styleinline.js +++ b/core/modules/parsers/wikiparser/rules/styleinline.js @@ -51,4 +51,3 @@ exports.parse = function() { } return [node]; }; - diff --git a/core/modules/parsers/wikiparser/rules/table.js b/core/modules/parsers/wikiparser/rules/table.js index 1bb12fe18..67def255f 100644 --- a/core/modules/parsers/wikiparser/rules/table.js +++ b/core/modules/parsers/wikiparser/rules/table.js @@ -184,4 +184,3 @@ exports.parse = function() { } return [table]; }; - diff --git a/core/modules/parsers/wikiparser/rules/transcludeblock.js b/core/modules/parsers/wikiparser/rules/transcludeblock.js index 6a3ce37ea..525113d5d 100644 --- a/core/modules/parsers/wikiparser/rules/transcludeblock.js +++ b/core/modules/parsers/wikiparser/rules/transcludeblock.js @@ -82,4 +82,3 @@ exports.parse = function() { } } }; - diff --git a/core/modules/parsers/wikiparser/rules/transcludeinline.js b/core/modules/parsers/wikiparser/rules/transcludeinline.js index 525dc9949..4ae58e617 100644 --- a/core/modules/parsers/wikiparser/rules/transcludeinline.js +++ b/core/modules/parsers/wikiparser/rules/transcludeinline.js @@ -80,4 +80,3 @@ exports.parse = function() { } } }; - diff --git a/core/modules/parsers/wikiparser/rules/typedblock.js b/core/modules/parsers/wikiparser/rules/typedblock.js index 084c88d24..03fdc8e10 100644 --- a/core/modules/parsers/wikiparser/rules/typedblock.js +++ b/core/modules/parsers/wikiparser/rules/typedblock.js @@ -79,4 +79,3 @@ exports.parse = function() { }]; } }; - diff --git a/core/modules/parsers/wikiparser/rules/whitespace.js b/core/modules/parsers/wikiparser/rules/whitespace.js index 963383437..3be34ee88 100644 --- a/core/modules/parsers/wikiparser/rules/whitespace.js +++ b/core/modules/parsers/wikiparser/rules/whitespace.js @@ -65,4 +65,3 @@ exports.parse = function() { // No parse tree nodes to return return []; }; - diff --git a/core/modules/parsers/wikiparser/rules/wikilink.js b/core/modules/parsers/wikiparser/rules/wikilink.js index bde8cdc49..d706de8a9 100644 --- a/core/modules/parsers/wikiparser/rules/wikilink.js +++ b/core/modules/parsers/wikiparser/rules/wikilink.js @@ -61,4 +61,3 @@ exports.parse = function() { }] }]; }; - diff --git a/core/modules/parsers/wikiparser/rules/wikilinkprefix.js b/core/modules/parsers/wikiparser/rules/wikilinkprefix.js index a0bf3ed0c..c1c5db1f6 100644 --- a/core/modules/parsers/wikiparser/rules/wikilinkprefix.js +++ b/core/modules/parsers/wikiparser/rules/wikilinkprefix.js @@ -33,4 +33,3 @@ exports.parse = function() { // Return the link without unwikilink character as plain text return [{type: "text", text: linkText.substr(1)}]; }; - diff --git a/core/modules/parsers/wikiparser/wikirulebase.js b/core/modules/parsers/wikiparser/wikirulebase.js index 9e43d0cfc..a9d6c748f 100644 --- a/core/modules/parsers/wikiparser/wikirulebase.js +++ b/core/modules/parsers/wikiparser/wikirulebase.js @@ -32,4 +32,3 @@ WikiRuleBase.prototype.findNextMatch = function(startPos) { }; exports.WikiRuleBase = WikiRuleBase; - diff --git a/core/modules/pluginswitcher.js b/core/modules/pluginswitcher.js index df9aca2ab..d89d261d7 100644 --- a/core/modules/pluginswitcher.js +++ b/core/modules/pluginswitcher.js @@ -72,4 +72,3 @@ PluginSwitcher.prototype.switchPlugins = function() { }; exports.PluginSwitcher = PluginSwitcher; - diff --git a/core/modules/saver-handler.js b/core/modules/saver-handler.js index 579ce040c..7f4e834a0 100644 --- a/core/modules/saver-handler.js +++ b/core/modules/saver-handler.js @@ -211,4 +211,3 @@ SaverHandler.prototype.updateDirtyStatus = function() { }; exports.SaverHandler = SaverHandler; - diff --git a/core/modules/savers/andtidwiki.js b/core/modules/savers/andtidwiki.js index 26d8f2227..5ce4dbe0e 100644 --- a/core/modules/savers/andtidwiki.js +++ b/core/modules/savers/andtidwiki.js @@ -8,8 +8,6 @@ Handles saving changes via the AndTidWiki Android app \*/ -/*jslint node: true, browser: true */ -/*global $tw: false, netscape: false, Components: false */ "use strict"; var AndTidWiki = function(wiki) { @@ -17,27 +15,27 @@ var AndTidWiki = function(wiki) { AndTidWiki.prototype.save = function(text,method,callback,options) { var filename = options && options.variables ? options.variables.filename : null; - if(method === "download") { + if (method === "download") { // Support download - if(window.twi.saveDownload) { + if (window.twi.saveDownload) { try { window.twi.saveDownload(text,filename); } catch(err) { - if(err.message === "Method not found") { + if (err.message === "Method not found") { window.twi.saveDownload(text); } } } else { var link = document.createElement("a"); link.setAttribute("href","data:text/plain," + encodeURIComponent(text)); - if(filename) { + if (filename) { link.setAttribute("download",filename); } document.body.appendChild(link); link.click(); document.body.removeChild(link); } - } else if(window.twi.saveWiki) { + } else if (window.twi.saveWiki) { // Direct save in Tiddloid window.twi.saveWiki(text); } else { @@ -86,4 +84,3 @@ Create an instance of this saver exports.create = function(wiki) { return new AndTidWiki(wiki); }; - diff --git a/core/modules/savers/custom.js b/core/modules/savers/custom.js index c8550fb03..dc5f91703 100644 --- a/core/modules/savers/custom.js +++ b/core/modules/savers/custom.js @@ -15,7 +15,7 @@ and the saver may define var findSaver = function(window) { try { return window && window.$tw && window.$tw.customSaver; - } catch(err) { + } catch (err) { // Catching the exception is the most reliable way to detect cross-origin iframe errors. // For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw // Uncaught DOMException: Permission denied to access property "$tw" on cross-origin object diff --git a/core/modules/savers/download.js b/core/modules/savers/download.js index 15875a749..9d046d24a 100644 --- a/core/modules/savers/download.js +++ b/core/modules/savers/download.js @@ -81,4 +81,3 @@ Create an instance of this saver exports.create = function(wiki) { return new DownloadSaver(wiki); }; - diff --git a/core/modules/savers/fsosaver.js b/core/modules/savers/fsosaver.js index d871e6637..85b56e956 100644 --- a/core/modules/savers/fsosaver.js +++ b/core/modules/savers/fsosaver.js @@ -67,4 +67,3 @@ Create an instance of this saver exports.create = function(wiki) { return new FSOSaver(wiki); }; - diff --git a/core/modules/savers/gitea.js b/core/modules/savers/gitea.js index ab5539e18..ef23214c1 100644 --- a/core/modules/savers/gitea.js +++ b/core/modules/savers/gitea.js @@ -80,7 +80,7 @@ GiteaSaver.prototype.save = function(text,method,callback) { callback: function(err,getResponseDataJson,xhr) { if(xhr.status === 404) { callback("Please ensure the branch in the Gitea repo exists"); - } else { + }else{ data["branch"] = branch; self.upload(uri + filename, use_put?"PUT":"POST", headers, data, callback); } @@ -129,4 +129,3 @@ Create an instance of this saver exports.create = function(wiki) { return new GiteaSaver(wiki); }; - diff --git a/core/modules/savers/github.js b/core/modules/savers/github.js index e6f7d234d..f0dca48fc 100644 --- a/core/modules/savers/github.js +++ b/core/modules/savers/github.js @@ -112,4 +112,3 @@ Create an instance of this saver exports.create = function(wiki) { return new GitHubSaver(wiki); }; - diff --git a/core/modules/savers/gitlab.js b/core/modules/savers/gitlab.js index 1ff419f5b..43305b578 100644 --- a/core/modules/savers/gitlab.js +++ b/core/modules/savers/gitlab.js @@ -7,9 +7,6 @@ Saves wiki by pushing a commit to the GitLab REST API \*/ - -/*jslint node: true, browser: true */ -/*global $tw: true */ "use strict"; /* @@ -113,4 +110,3 @@ Create an instance of this saver exports.create = function(wiki) { return new GitLabSaver(wiki); }; - diff --git a/core/modules/savers/manualdownload.js b/core/modules/savers/manualdownload.js index 6c916a280..bb3c3c142 100644 --- a/core/modules/savers/manualdownload.js +++ b/core/modules/savers/manualdownload.js @@ -49,4 +49,3 @@ Create an instance of this saver exports.create = function(wiki) { return new ManualDownloadSaver(wiki); }; - diff --git a/core/modules/savers/msdownload.js b/core/modules/savers/msdownload.js index f03e93315..233fd3571 100644 --- a/core/modules/savers/msdownload.js +++ b/core/modules/savers/msdownload.js @@ -52,4 +52,3 @@ Create an instance of this saver exports.create = function(wiki) { return new MsDownloadSaver(wiki); }; - diff --git a/core/modules/savers/put.js b/core/modules/savers/put.js index 2fe4fa4a3..b77cfdfc8 100644 --- a/core/modules/savers/put.js +++ b/core/modules/savers/put.js @@ -94,7 +94,7 @@ PutSaver.prototype.save = function(text,method,callback) { } else if(status === 403) { // permission denied errorMsg = $tw.language.getString("Error/PutForbidden"); } - if(xhr.responseText) { + if (xhr.responseText) { // treat any server response like a plain text error explanation errorMsg = errorMsg + "\n\n" + xhr.responseText; } @@ -133,4 +133,3 @@ Create an instance of this saver exports.create = function(wiki) { return new PutSaver(wiki); }; - diff --git a/core/modules/savers/tiddlyfox.js b/core/modules/savers/tiddlyfox.js index 0a6a77fe0..2356e287e 100644 --- a/core/modules/savers/tiddlyfox.js +++ b/core/modules/savers/tiddlyfox.js @@ -7,9 +7,6 @@ Handles saving changes via the TiddlyFox file extension \*/ - -/*jslint node: true, browser: true */ -/*global $tw: false, netscape: false, Components: false */ "use strict"; var TiddlyFoxSaver = function(wiki) { @@ -82,4 +79,3 @@ Create an instance of this saver exports.create = function(wiki) { return new TiddlyFoxSaver(wiki); }; - diff --git a/core/modules/savers/tiddlyie.js b/core/modules/savers/tiddlyie.js index 10471ca1d..3b380592d 100644 --- a/core/modules/savers/tiddlyie.js +++ b/core/modules/savers/tiddlyie.js @@ -64,4 +64,3 @@ Create an instance of this saver exports.create = function(wiki) { return new TiddlyIESaver(wiki); }; - diff --git a/core/modules/savers/twedit.js b/core/modules/savers/twedit.js index 54e1bc69d..8aae0c54e 100644 --- a/core/modules/savers/twedit.js +++ b/core/modules/savers/twedit.js @@ -7,9 +7,6 @@ Handles saving changes via the TWEdit iOS app \*/ - -/*jslint node: true, browser: true */ -/*global $tw: false, netscape: false, Components: false */ "use strict"; var TWEditSaver = function(wiki) { @@ -87,4 +84,3 @@ exports.create = function(wiki) { if($tw.browser) { window.version = {title: "TiddlyWiki"}; } - diff --git a/core/modules/savers/upload.js b/core/modules/savers/upload.js index 206f45521..7f17d77bd 100644 --- a/core/modules/savers/upload.js +++ b/core/modules/savers/upload.js @@ -28,7 +28,7 @@ UploadSaver.prototype.save = function(text,method,callback) { uploadWithUrlOnly = this.wiki.getTextReference("$:/UploadWithUrlOnly") || "no", url = this.wiki.getTextReference("$:/UploadURL"); // Bail out if we don't have the bits we need - if(uploadWithUrlOnly === "yes") { + if (uploadWithUrlOnly === "yes") { // The url is good enough. No need for a username and password. // Assume the server uses some other kind of auth mechanism. if(!url || url.toString().trim() === "") { @@ -104,4 +104,3 @@ Create an instance of this saver exports.create = function(wiki) { return new UploadSaver(wiki); }; - diff --git a/core/modules/server/authenticators/basic.js b/core/modules/server/authenticators/basic.js index f6b374108..e67e701f5 100644 --- a/core/modules/server/authenticators/basic.js +++ b/core/modules/server/authenticators/basic.js @@ -87,4 +87,3 @@ BasicAuthenticator.prototype.authenticateRequest = function(request,response,sta }; exports.AuthenticatorClass = BasicAuthenticator; - diff --git a/core/modules/server/server.js b/core/modules/server/server.js index 8028f8f5d..2118e9b50 100644 --- a/core/modules/server/server.js +++ b/core/modules/server/server.js @@ -342,8 +342,8 @@ Server.prototype.listen = function(port,host,prefix) { } // Warn if required plugins are missing var missing = []; - for(var index=0; index= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F || @@ -64,7 +62,7 @@ exports.escapeCSS = (function() { continue; } - if( + if ( // If the character is the first character and is a `-` (U+002D), and // there is no second character, […] index == 0 && @@ -79,7 +77,7 @@ exports.escapeCSS = (function() { // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to // U+005A), or [a-z] (U+0061 to U+007A), […] - if( + if ( codeUnit >= 0x0080 || codeUnit == 0x002D || codeUnit == 0x005F || diff --git a/core/modules/utils/fakedom.js b/core/modules/utils/fakedom.js index 227577487..764ac84f8 100755 --- a/core/modules/utils/fakedom.js +++ b/core/modules/utils/fakedom.js @@ -350,4 +350,3 @@ var document = { }; exports.fakeDocument = document; - diff --git a/core/modules/utils/filesystem.js b/core/modules/utils/filesystem.js index 79a904135..aa214586a 100644 --- a/core/modules/utils/filesystem.js +++ b/core/modules/utils/filesystem.js @@ -83,7 +83,7 @@ exports.copyFile = function(srcPath,dstPath) { dstFile = fs.openSync(dstPath,"w"), bytesRead = 1, pos = 0; - while(bytesRead > 0) { + while (bytesRead > 0) { bytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos); fs.writeSync(dstFile,fileBuffer,0,bytesRead); pos += bytesRead; @@ -255,7 +255,7 @@ exports.generateTiddlerFileInfo = function(tiddler,options) { // Overriding to the .tid extension needs special handling fileInfo.type = "application/x-tiddler"; fileInfo.hasMetaFile = false; - } else if(metaExt === ".json") { + } else if (metaExt === ".json") { // Overriding to the .json extension needs special handling fileInfo.type = "application/json"; fileInfo.hasMetaFile = false; @@ -526,7 +526,7 @@ exports.cleanupTiddlerFiles = function(options,callback) { if(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) { $tw.utils.deleteTiddlerFile(adaptorInfo,function(err) { if(err) { - if((err.code == "EPERM" || err.code == "EACCES") && err.syscall == "unlink") { + if ((err.code == "EPERM" || err.code == "EACCES") && err.syscall == "unlink") { // Error deleting the previous file on disk, should fail gracefully $tw.syncer.displayError("Server desynchronized. Error cleaning up previous file for tiddler: \""+title+"\"",err); return callback(null,bootInfo); @@ -540,4 +540,3 @@ exports.cleanupTiddlerFiles = function(options,callback) { return callback(null,bootInfo); } }; - diff --git a/core/modules/utils/linked-list.js b/core/modules/utils/linked-list.js index bf351e442..8d7f44676 100644 --- a/core/modules/utils/linked-list.js +++ b/core/modules/utils/linked-list.js @@ -1,13 +1,15 @@ /*\ +module-type: utils title: $:/core/modules/utils/linkedlist.js type: application/javascript -module-type: utils This is a doubly-linked indexed list intended for manipulation, particularly pushTop, which it does with significantly better performance than an array. \*/ +"use strict"; + function LinkedList() { this.clear(); }; @@ -57,7 +59,7 @@ LinkedList.prototype.push = function(/* values */) { LinkedList.prototype.pushTop = function(value) { var t; if($tw.utils.isArray(value)) { - for(t=0; t self.measures[b].time) { return -1; - } else if(self.measures[a].time < self.measures[b].time) { + } else if (self.measures[a].time < self.measures[b].time) { return + 1; } else { return 0; @@ -84,4 +84,3 @@ Performance.prototype.measure = function(name,fn) { }; exports.Performance = Performance; - diff --git a/core/modules/utils/pluginmaker.js b/core/modules/utils/pluginmaker.js index b927a211a..f64bbec85 100644 --- a/core/modules/utils/pluginmaker.js +++ b/core/modules/utils/pluginmaker.js @@ -72,4 +72,3 @@ exports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) { // Return a heartwarming confirmation return "Plugin " + title + " successfully saved"; }; - diff --git a/core/modules/utils/transliterate.js b/core/modules/utils/transliterate.js index a2487fce3..37c5502bf 100644 --- a/core/modules/utils/transliterate.js +++ b/core/modules/utils/transliterate.js @@ -925,4 +925,3 @@ exports.transliterateToSafeASCII = function(str) { return exports.transliterationPairs[ch] || "" }); }; - diff --git a/core/modules/utils/utils.js b/core/modules/utils/utils.js index 73decfc53..a228f91d4 100644 --- a/core/modules/utils/utils.js +++ b/core/modules/utils/utils.js @@ -1035,4 +1035,3 @@ exports.makeCompareFunction = function(type,options) { }; return (types[type] || types[options.defaultType] || types.number); }; - diff --git a/core/modules/widgets/action-confirm.js b/core/modules/widgets/action-confirm.js index 8c2d5368f..c2ca39b64 100644 --- a/core/modules/widgets/action-confirm.js +++ b/core/modules/widgets/action-confirm.js @@ -71,4 +71,3 @@ ConfirmWidget.prototype.allowActionPropagation = function() { }; exports["action-confirm"] = ConfirmWidget; - diff --git a/core/modules/widgets/action-createtiddler.js b/core/modules/widgets/action-createtiddler.js index 94cb62d4c..d010e6465 100644 --- a/core/modules/widgets/action-createtiddler.js +++ b/core/modules/widgets/action-createtiddler.js @@ -7,9 +7,6 @@ Action widget to create a new tiddler with a unique name and specified fields. \*/ - -/*jslint node: true, browser: true */ -/*global $tw:false, require:false, exports:false */ "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; @@ -82,14 +79,14 @@ CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { } if(this.hasBase && this.actionOverwrite === "no") { title = this.wiki.generateNewTitle(this.actionBaseTitle); - } else if(this.hasBase && this.actionOverwrite === "yes") { + } else if (this.hasBase && this.actionOverwrite === "yes") { title = this.actionBaseTitle } // NO $basetitle BUT $template parameter is available // the title MUST be unique, otherwise the template would be overwritten - if(!this.hasBase && this.useTemplate) { + if (!this.hasBase && this.useTemplate) { title = this.wiki.generateNewTitle(this.actionTemplate); - } else if(!this.hasBase && !this.useTemplate) { + } else if (!this.hasBase && !this.useTemplate) { // If no $basetitle and no $template then use initial title title = this.wiki.generateNewTitle(title); } @@ -109,4 +106,3 @@ CreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-createtiddler"] = CreateTiddlerWidget; - diff --git a/core/modules/widgets/action-deletefield.js b/core/modules/widgets/action-deletefield.js index 88e670c94..fd55e2270 100644 --- a/core/modules/widgets/action-deletefield.js +++ b/core/modules/widgets/action-deletefield.js @@ -82,4 +82,3 @@ DeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-deletefield"] = DeleteFieldWidget; - diff --git a/core/modules/widgets/action-deletetiddler.js b/core/modules/widgets/action-deletetiddler.js index 6d12fb737..fa80620b7 100644 --- a/core/modules/widgets/action-deletetiddler.js +++ b/core/modules/widgets/action-deletetiddler.js @@ -66,4 +66,3 @@ DeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-deletetiddler"] = DeleteTiddlerWidget; - diff --git a/core/modules/widgets/action-log.js b/core/modules/widgets/action-log.js index a3e89ae57..3f8caf047 100644 --- a/core/modules/widgets/action-log.js +++ b/core/modules/widgets/action-log.js @@ -91,4 +91,3 @@ LogWidget.prototype.log = function() { } exports["action-log"] = LogWidget; - diff --git a/core/modules/widgets/action-navigate.js b/core/modules/widgets/action-navigate.js index 06d5e17fb..67c7713db 100644 --- a/core/modules/widgets/action-navigate.js +++ b/core/modules/widgets/action-navigate.js @@ -84,4 +84,3 @@ NavigateWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-navigate"] = NavigateWidget; - diff --git a/core/modules/widgets/action-popup.js b/core/modules/widgets/action-popup.js index 605f855f0..b44b3a524 100644 --- a/core/modules/widgets/action-popup.js +++ b/core/modules/widgets/action-popup.js @@ -78,4 +78,3 @@ ActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-popup"] = ActionPopupWidget; - diff --git a/core/modules/widgets/action-sendmessage.js b/core/modules/widgets/action-sendmessage.js index a9a2216c2..7b9e6453f 100644 --- a/core/modules/widgets/action-sendmessage.js +++ b/core/modules/widgets/action-sendmessage.js @@ -92,4 +92,3 @@ SendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-sendmessage"] = SendMessageWidget; - diff --git a/core/modules/widgets/action-setfield.js b/core/modules/widgets/action-setfield.js index ddc3bff13..2d2c6ce47 100644 --- a/core/modules/widgets/action-setfield.js +++ b/core/modules/widgets/action-setfield.js @@ -68,4 +68,3 @@ SetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) { }; exports["action-setfield"] = SetFieldWidget; - diff --git a/core/modules/widgets/action-setmultiplefields.js b/core/modules/widgets/action-setmultiplefields.js index 21e47186d..1e2326394 100644 --- a/core/modules/widgets/action-setmultiplefields.js +++ b/core/modules/widgets/action-setmultiplefields.js @@ -78,5 +78,3 @@ SetMultipleFieldsWidget.prototype.invokeAction = function(triggeringWidget,event }; exports["action-setmultiplefields"] = SetMultipleFieldsWidget; - - \ No newline at end of file diff --git a/core/modules/widgets/browse.js b/core/modules/widgets/browse.js index 97f56bc20..b0173f6e2 100644 --- a/core/modules/widgets/browse.js +++ b/core/modules/widgets/browse.js @@ -114,4 +114,3 @@ BrowseWidget.prototype.refresh = function(changedTiddlers) { }; exports.browse = BrowseWidget; - diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index a26cda370..423e06202 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -276,4 +276,3 @@ ButtonWidget.prototype.refresh = function(changedTiddlers) { }; exports.button = ButtonWidget; - diff --git a/core/modules/widgets/codeblock.js b/core/modules/widgets/codeblock.js index db06af7b6..0c709c8e2 100644 --- a/core/modules/widgets/codeblock.js +++ b/core/modules/widgets/codeblock.js @@ -59,4 +59,3 @@ CodeBlockWidget.prototype.refresh = function(changedTiddlers) { }; exports.codeblock = CodeBlockWidget; - diff --git a/core/modules/widgets/count.js b/core/modules/widgets/count.js index 2a516cbc2..57acc6fe2 100644 --- a/core/modules/widgets/count.js +++ b/core/modules/widgets/count.js @@ -65,4 +65,3 @@ CountWidget.prototype.refresh = function(changedTiddlers) { }; exports.count = CountWidget; - diff --git a/core/modules/widgets/diff-text.js b/core/modules/widgets/diff-text.js index b2860c144..32cc4f1d8 100644 --- a/core/modules/widgets/diff-text.js +++ b/core/modules/widgets/diff-text.js @@ -141,4 +141,3 @@ DiffTextWidget.prototype.refresh = function(changedTiddlers) { }; exports["diff-text"] = DiffTextWidget; - diff --git a/core/modules/widgets/dropzone.js b/core/modules/widgets/dropzone.js index a60973ac6..7d7d8b815 100644 --- a/core/modules/widgets/dropzone.js +++ b/core/modules/widgets/dropzone.js @@ -325,4 +325,3 @@ DropZoneWidget.prototype.refresh = function(changedTiddlers) { }; exports.dropzone = DropZoneWidget; - diff --git a/core/modules/widgets/edit-binary.js b/core/modules/widgets/edit-binary.js index 671fb1e16..bb9581df7 100644 --- a/core/modules/widgets/edit-binary.js +++ b/core/modules/widgets/edit-binary.js @@ -100,4 +100,3 @@ EditBinaryWidget.prototype.refresh = function(changedTiddlers) { }; exports["edit-binary"] = EditBinaryWidget; - diff --git a/core/modules/widgets/edit-bitmap.js b/core/modules/widgets/edit-bitmap.js index d579af2e2..3065384b3 100644 --- a/core/modules/widgets/edit-bitmap.js +++ b/core/modules/widgets/edit-bitmap.js @@ -336,4 +336,3 @@ EditBitmapWidget.prototype.saveChanges = function() { }; exports["edit-bitmap"] = EditBitmapWidget; - diff --git a/core/modules/widgets/edit-shortcut.js b/core/modules/widgets/edit-shortcut.js index a2990d414..9a45b6ec0 100644 --- a/core/modules/widgets/edit-shortcut.js +++ b/core/modules/widgets/edit-shortcut.js @@ -151,4 +151,3 @@ EditShortcutWidget.prototype.refresh = function(changedTiddlers) { }; exports["edit-shortcut"] = EditShortcutWidget; - diff --git a/core/modules/widgets/edit-text.js b/core/modules/widgets/edit-text.js index 9ca22b330..28dc5f79c 100644 --- a/core/modules/widgets/edit-text.js +++ b/core/modules/widgets/edit-text.js @@ -14,4 +14,3 @@ var editTextWidgetFactory = require("$:/core/modules/editor/factory.js").editTex SimpleEngine = require("$:/core/modules/editor/engines/simple.js").SimpleEngine; exports["edit-text"] = editTextWidgetFactory(FramedEngine,SimpleEngine); - diff --git a/core/modules/widgets/edit.js b/core/modules/widgets/edit.js index 0a0073b02..ed2ad0b35 100644 --- a/core/modules/widgets/edit.js +++ b/core/modules/widgets/edit.js @@ -87,4 +87,3 @@ EditWidget.prototype.refresh = function(changedTiddlers) { }; exports.edit = EditWidget; - diff --git a/core/modules/widgets/element.js b/core/modules/widgets/element.js index bc8c90309..34fd3b9ff 100755 --- a/core/modules/widgets/element.js +++ b/core/modules/widgets/element.js @@ -98,4 +98,3 @@ ElementWidget.prototype.refresh = function(changedTiddlers) { }; exports.element = ElementWidget; - diff --git a/core/modules/widgets/encrypt.js b/core/modules/widgets/encrypt.js index 491ce0177..edfbe4429 100644 --- a/core/modules/widgets/encrypt.js +++ b/core/modules/widgets/encrypt.js @@ -62,4 +62,3 @@ EncryptWidget.prototype.refresh = function(changedTiddlers) { }; exports.encrypt = EncryptWidget; - diff --git a/core/modules/widgets/entity.js b/core/modules/widgets/entity.js index 9d0371fc9..a88f32c3d 100755 --- a/core/modules/widgets/entity.js +++ b/core/modules/widgets/entity.js @@ -53,4 +53,3 @@ EntityWidget.prototype.refresh = function(changedTiddlers) { }; exports.entity = EntityWidget; - diff --git a/core/modules/widgets/error.js b/core/modules/widgets/error.js index 86635277c..efbb2cbfb 100644 --- a/core/modules/widgets/error.js +++ b/core/modules/widgets/error.js @@ -56,4 +56,3 @@ ErrorWidget.prototype.refresh = function(changedTiddlers) { }; exports.error = ErrorWidget; - diff --git a/core/modules/widgets/eventcatcher.js b/core/modules/widgets/eventcatcher.js index 600f33b53..70dc99202 100644 --- a/core/modules/widgets/eventcatcher.js +++ b/core/modules/widgets/eventcatcher.js @@ -152,4 +152,3 @@ EventWidget.prototype.refresh = function(changedTiddlers) { }; exports.eventcatcher = EventWidget; - diff --git a/core/modules/widgets/fieldmangler.js b/core/modules/widgets/fieldmangler.js index 71afc7e45..811318e99 100644 --- a/core/modules/widgets/fieldmangler.js +++ b/core/modules/widgets/fieldmangler.js @@ -127,4 +127,3 @@ FieldManglerWidget.prototype.handleAddTagEvent = function(event) { }; exports.fieldmangler = FieldManglerWidget; - diff --git a/core/modules/widgets/fields.js b/core/modules/widgets/fields.js index 2e225e817..db558e3b6 100755 --- a/core/modules/widgets/fields.js +++ b/core/modules/widgets/fields.js @@ -56,7 +56,7 @@ FieldsWidget.prototype.execute = function() { var text = []; if(this.template && tiddler) { var fields = []; - if(includeArr) { // Include takes precedence + if (includeArr) { // Include takes precedence for(var i=0; i 0) ? parseInt(options.startCount,10) : 0, prefix = (typeof(options.prefix) === "string") ? options.prefix : " "; - if(template) { + + if (template) { // "count" is important to avoid an endless loop in while(...)!! template = (/\$count:?(\d+)?\$/i.test(template)) ? template : template + "$count$"; // .formatTitleString() expects strings as input @@ -733,7 +734,7 @@ exports.findListingsOfTiddler = function(targetTitle,fieldName) { for(var i = 0; i < list.length; i++) { var listItem = list[i], listing = listings[listItem] || []; - if(listing.indexOf(title) === -1) { + if (listing.indexOf(title) === -1) { listing.push(title); } listings[listItem] = listing; @@ -781,7 +782,7 @@ exports.sortByList = function(array,listTitle) { } } // If a new position is specified, let's move it - if(newPos !== -1) { + if (newPos !== -1) { // get its current Pos, and make sure // sure that it's _actually_ in the list // and that it would _actually_ move @@ -1787,4 +1788,3 @@ exports.slugify = function(title,options) { } return slug; }; - diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js b/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js index 2215fe378..7db98db8c 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/domwidget.js @@ -3,6 +3,7 @@ Library function for creating widget using a dom creating function \*/ + "use strict"; var Widget = require("$:/core/modules/widgets/widget.js").widget; diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js b/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js index 18789ad4a..1112e64c3 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/donothing.js @@ -9,4 +9,3 @@ Do nothing widget var Widget = require("$:/core/modules/widgets/widget.js").widget; exports.donothing = Widget; - diff --git a/editions/dev/tiddlers/javascript-widget-tutorial/hello.js b/editions/dev/tiddlers/javascript-widget-tutorial/hello.js index 6389825aa..ea159e9cf 100644 --- a/editions/dev/tiddlers/javascript-widget-tutorial/hello.js +++ b/editions/dev/tiddlers/javascript-widget-tutorial/hello.js @@ -28,4 +28,3 @@ MyWidget.prototype.render = function(parent,nextSibling) { }; exports.hello = MyWidget; - diff --git a/editions/test/tiddlers/tests/modules/utils/test-csv.js b/editions/test/tiddlers/tests/modules/utils/test-csv.js index 11cd7d136..3556235ec 100644 --- a/editions/test/tiddlers/tests/modules/utils/test-csv.js +++ b/editions/test/tiddlers/tests/modules/utils/test-csv.js @@ -13,7 +13,7 @@ describe('CSV Parsing', function() { var testCases = JSON.parse(tid.fields.text); $tw.utils.each(testCases, function(testCase) { - if(testCase.skip) { + if (testCase.skip) { return; } it("Test case: " + testCase.name, function() { @@ -26,4 +26,3 @@ describe('CSV Parsing', function() { }) }); - diff --git a/editions/test/tiddlers/tests/test-action-widgets.js b/editions/test/tiddlers/tests/test-action-widgets.js index 21665904d..f8a7ddea0 100644 --- a/editions/test/tiddlers/tests/test-action-widgets.js +++ b/editions/test/tiddlers/tests/test-action-widgets.js @@ -94,4 +94,3 @@ it("should handle the action-listops widget", function() { }); - diff --git a/editions/test/tiddlers/tests/test-backlinks.js b/editions/test/tiddlers/tests/test-backlinks.js index df1b1dd85..c02f9b1c7 100644 --- a/editions/test/tiddlers/tests/test-backlinks.js +++ b/editions/test/tiddlers/tests/test-backlinks.js @@ -138,4 +138,3 @@ describe('Backlinks tests', function() { }); }); }); - diff --git a/editions/test/tiddlers/tests/test-deserialize-operator.js b/editions/test/tiddlers/tests/test-deserialize-operator.js index cbaaf8211..cc465dfbb 100644 --- a/editions/test/tiddlers/tests/test-deserialize-operator.js +++ b/editions/test/tiddlers/tests/test-deserialize-operator.js @@ -38,6 +38,3 @@ Tests deserialize[] filter operator with various core deserializers }); - - - \ No newline at end of file diff --git a/editions/test/tiddlers/tests/test-deserializers.js b/editions/test/tiddlers/tests/test-deserializers.js index 9be4668c6..d207debf1 100644 --- a/editions/test/tiddlers/tests/test-deserializers.js +++ b/editions/test/tiddlers/tests/test-deserializers.js @@ -7,29 +7,29 @@ Tests various core deserializers \*/ -/* jslint node: true, browser: true */ -/* eslint-env node, browser, jasmine */ -/* eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"]*/ -/* global $tw, require */ -"use strict"; + /* jslint node: true, browser: true */ + /* eslint-env node, browser, jasmine */ + /* eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"]*/ + /* global $tw, require */ + "use strict"; + + describe("deserializer tests", function() { -describe("deserializer tests", function() { + function executeTestCase(title,expectedOutput) { + it("test case " + title, function() { + var tiddler = $tw.wiki.getTiddler(title); + expect($tw.wiki.deserializeTiddlers(tiddler.fields.type,tiddler.fields.text)).toEqual(expectedOutput); + }); + } + + executeTestCase("dezerializer test data case 1",[ { text: '\n', type: 'text/html' } ]); - function executeTestCase(title,expectedOutput) { - it("test case " + title, function() { - var tiddler = $tw.wiki.getTiddler(title); - expect($tw.wiki.deserializeTiddlers(tiddler.fields.type,tiddler.fields.text)).toEqual(expectedOutput); - }); - } + executeTestCase("dezerializer test data case 2",[ { text: '\n\n\n\t\n\tTest Data\n\n\n\n\n', type: 'text/html' } ]); - executeTestCase("dezerializer test data case 1",[ { text: '\n', type: 'text/html' } ]); + executeTestCase("dezerializer test data case 3",[ { title: 'Hello "There"', text: 'Abacus', type: 'text/vnd.tiddlywiki' } ]); - executeTestCase("dezerializer test data case 2",[ { text: '\n\n\n\t\n\tTest Data\n\n\n\n\n', type: 'text/html' } ]); + executeTestCase("dezerializer test data case 4",[ { title: 'Hello "There"', text: 'Abacus', type: 'text/vnd.tiddlywiki' }, { title: 'Hello "There"', text: 'Calculator'} ]); - executeTestCase("dezerializer test data case 3",[ { title: 'Hello "There"', text: 'Abacus', type: 'text/vnd.tiddlywiki' } ]); - - executeTestCase("dezerializer test data case 4",[ { title: 'Hello "There"', text: 'Abacus', type: 'text/vnd.tiddlywiki' }, { title: 'Hello "There"', text: 'Calculator'} ]); - - executeTestCase("dezerializer test data case 5",[ { title: 'Hello "There"', text: 'Abacus', type: 'text/vnd.tiddlywiki' }, { title: 'Hello "There"', text: 'Calculator'} , { title: 'Hello "There"', text: 'Protractor'} ]); - -}); + executeTestCase("dezerializer test data case 5",[ { title: 'Hello "There"', text: 'Abacus', type: 'text/vnd.tiddlywiki' }, { title: 'Hello "There"', text: 'Calculator'} , { title: 'Hello "There"', text: 'Protractor'} ]); + + }); diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 29c36cdd9..96100e2f7 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -7,332 +7,328 @@ Tests the filtering mechanism. \*/ -/* jslint node: true, browser: true */ -/* eslint-env node, browser, jasmine */ -/* eslint no-mixed-spaces-and-tabs: ["error", "smart-tabs"]*/ -/* global $tw, require */ -"use strict"; - -describe("Filter tests", function() { - - // Test filter parsing - it("should parse new-style rich operator suffixes", function() { - expect($tw.wiki.parseFilter("[search:: four, , five,, six [operand]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'search', suffix : ': four, , five,, six ', suffixes : [ [ ], [ 'four', 'five', 'six' ] ], operands: [ { text:'operand' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[search: one, two ,three :[operand]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'search', suffix : ' one, two ,three :', suffixes : [ [ 'one', 'two', 'three' ], [ ] ], operands: [ { text:'operand' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[search: one, two ,three :[operand]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'search', suffix : ' one, two ,three :', suffixes : [ [ 'one', 'two', 'three' ], [ ] ], operands: [ { text:'operand' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[search: one, two ,three : four, , five,, six [operand]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'search', suffix : ' one, two ,three : four, , five,, six ', suffixes : [ [ 'one', 'two', 'three' ], [ 'four', 'five', 'six' ] ], operands: [ { text:'operand' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[search: , : [operand]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'search', suffix : ' , : ', suffixes : [ [ ], [ ] ], operands: [ { text:'operand' } ] } ] } ] - ); - }); + "use strict"; + describe("Filter tests", function() { - it("should parse multiple operands for operators", function() { - expect($tw.wiki.parseFilter("[search: , : [operand],[operand2]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'search', suffix : ' , : ', suffixes : [ [ ], [ ] ], operands: [ { text:'operand' }, { text:'operand2' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[search: , : [oper,and],[operand2]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'search', suffix : ' , : ', suffixes : [ [ ], [ ] ], operands: [ { text:'oper,and' }, { text:'operand2' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[[GettingStarted]replace:[operand],[operand2]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'title', operands: [ { text:'GettingStarted' } ] }, { operator : 'replace', suffix : '', suffixes : [[]], operands: [ { text:'operand' }, { text:'operand2' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[[GettingStarted]replace[operand],[operand2]split[-]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'title', operands: [{ text:'GettingStarted' }] }, { operator : 'replace', operands: [{ text:'operand' }, { text:'operand2' }] }, { operator : 'split', operands: [ { text:'-' } ] } ] } ] - ); - expect($tw.wiki.parseFilter("[[GettingStarted]replace[operand],[operand2]split[-]split2[a],[b]]")).toEqual( - [ { prefix : '', operators : [ { operator : 'title', operands: [{ text:'GettingStarted' }] }, { operator : 'replace', operands: [ { text:'operand' }, { text:'operand2' } ] }, { operator : 'split', operands: [ {text:'-'} ] }, { operator : 'split2', operands: [ { text:'a' }, { text: 'b' }] } ] } ] - ); - expect($tw.wiki.parseFilter("[[GettingStarted]replace[operand],[operand2]split[-]split2[a],,{c}]")).toEqual( - [ { prefix : '', operators : [ { operator : 'title', operands: [{ text:'GettingStarted' }] }, { operator : 'replace', operands: [ { text:'operand' }, { text:'operand2' } ] }, { operator : 'split', operands: [ {text:'-'} ] }, { operator : 'split2', operands: [ { text:'a' }, { variable: true, text: 'b' }, { indirect: true, text: 'c' }] } ] } ] - ); - }); - - describe("With tiddlers in the store unsorted",function() { - testWithAndWithoutIndexers(); - }); - describe("With tiddlers in the store sorted ascending",function() { - testWithAndWithoutIndexers({sort: "ascending"}); - }); - describe("With tiddlers in the store sorted descending",function() { - testWithAndWithoutIndexers({sort: "descending"}); - }); - -function testWithAndWithoutIndexers(options) { - describe("With no indexers", function() { - var wiki = setupWiki(Object.assign({},options,{enableIndexers: []})); - it("should not create indexes when requested not to",function() { - expect(wiki.getIndexer("FieldIndexer")).toBe(null); + // Test filter parsing + it("should parse new-style rich operator suffixes", function() { + expect($tw.wiki.parseFilter("[search:: four, , five,, six [operand]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'search', suffix : ': four, , five,, six ', suffixes : [ [ ], [ 'four', 'five', 'six' ] ], operands: [ { text:'operand' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[search: one, two ,three :[operand]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'search', suffix : ' one, two ,three :', suffixes : [ [ 'one', 'two', 'three' ], [ ] ], operands: [ { text:'operand' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[search: one, two ,three :[operand]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'search', suffix : ' one, two ,three :', suffixes : [ [ 'one', 'two', 'three' ], [ ] ], operands: [ { text:'operand' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[search: one, two ,three : four, , five,, six [operand]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'search', suffix : ' one, two ,three : four, , five,, six ', suffixes : [ [ 'one', 'two', 'three' ], [ 'four', 'five', 'six' ] ], operands: [ { text:'operand' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[search: , : [operand]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'search', suffix : ' , : ', suffixes : [ [ ], [ ] ], operands: [ { text:'operand' } ] } ] } ] + ); + }); + + + it("should parse multiple operands for operators", function() { + expect($tw.wiki.parseFilter("[search: , : [operand],[operand2]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'search', suffix : ' , : ', suffixes : [ [ ], [ ] ], operands: [ { text:'operand' }, { text:'operand2' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[search: , : [oper,and],[operand2]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'search', suffix : ' , : ', suffixes : [ [ ], [ ] ], operands: [ { text:'oper,and' }, { text:'operand2' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[[GettingStarted]replace:[operand],[operand2]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'title', operands: [ { text:'GettingStarted' } ] }, { operator : 'replace', suffix : '', suffixes : [[]], operands: [ { text:'operand' }, { text:'operand2' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[[GettingStarted]replace[operand],[operand2]split[-]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'title', operands: [{ text:'GettingStarted' }] }, { operator : 'replace', operands: [{ text:'operand' }, { text:'operand2' }] }, { operator : 'split', operands: [ { text:'-' } ] } ] } ] + ); + expect($tw.wiki.parseFilter("[[GettingStarted]replace[operand],[operand2]split[-]split2[a],[b]]")).toEqual( + [ { prefix : '', operators : [ { operator : 'title', operands: [{ text:'GettingStarted' }] }, { operator : 'replace', operands: [ { text:'operand' }, { text:'operand2' } ] }, { operator : 'split', operands: [ {text:'-'} ] }, { operator : 'split2', operands: [ { text:'a' }, { text: 'b' }] } ] } ] + ); + expect($tw.wiki.parseFilter("[[GettingStarted]replace[operand],[operand2]split[-]split2[a],,{c}]")).toEqual( + [ { prefix : '', operators : [ { operator : 'title', operands: [{ text:'GettingStarted' }] }, { operator : 'replace', operands: [ { text:'operand' }, { text:'operand2' } ] }, { operator : 'split', operands: [ {text:'-'} ] }, { operator : 'split2', operands: [ { text:'a' }, { variable: true, text: 'b' }, { indirect: true, text: 'c' }] } ] } ] + ); + }); + + describe("With tiddlers in the store unsorted",function() { + testWithAndWithoutIndexers(); + }); + describe("With tiddlers in the store sorted ascending",function() { + testWithAndWithoutIndexers({sort: "ascending"}); + }); + describe("With tiddlers in the store sorted descending",function() { + testWithAndWithoutIndexers({sort: "descending"}); }); - runTests(wiki); - }); - describe("With all indexers", function() { - var wiki = setupWiki(options); - if(wiki.getIndexer("FieldIndexer")) { - wiki.getIndexer("FieldIndexer").setMaxIndexedValueLength(8); // Note that JoeBloggs is 9, and John is 5 - } - runTests(wiki); - }); -} - -function setupWiki(wikiOptions) { - wikiOptions = wikiOptions || {}; - // Create a wiki - var wiki = new $tw.Wiki(wikiOptions); - // Add a plugin containing some shadow tiddlers - var shadowTiddlers = { - tiddlers: { - "$:/TiddlerFive": { - title: "$:/TiddlerFive", - text: "Everything in federation", - tags: ["two"] - }, - "TiddlerSix": { - title: "TiddlerSix", - text: "Missing inaction from [[TiddlerOne]]", - filter: "[[one]] [[a a]] [subfilter{hasList!!list}]", - tags: [] - }, - "TiddlerSeventh": { - title: "TiddlerSeventh", - text: "", - list: "[[TiddlerOne]] [[Tiddler Three]] [[a fourth tiddler]] [[MissingTiddler]]", - tags: ["one"] - }, - "Tiddler8": { - title: "Tiddler8", - text: "Tidd", - tags: ["one"], - "test-field": "JoeBloggs" + function testWithAndWithoutIndexers(options) { + describe("With no indexers", function() { + var wiki = setupWiki(Object.assign({},options,{enableIndexers: []})); + it("should not create indexes when requested not to",function() { + expect(wiki.getIndexer("FieldIndexer")).toBe(null); + }); + runTests(wiki); + }); + + describe("With all indexers", function() { + var wiki = setupWiki(options); + if(wiki.getIndexer("FieldIndexer")) { + wiki.getIndexer("FieldIndexer").setMaxIndexedValueLength(8); // Note that JoeBloggs is 9, and John is 5 } + runTests(wiki); + }); + } + + function setupWiki(wikiOptions) { + wikiOptions = wikiOptions || {}; + // Create a wiki + var wiki = new $tw.Wiki(wikiOptions); + // Add a plugin containing some shadow tiddlers + var shadowTiddlers = { + tiddlers: { + "$:/TiddlerFive": { + title: "$:/TiddlerFive", + text: "Everything in federation", + tags: ["two"] + }, + "TiddlerSix": { + title: "TiddlerSix", + text: "Missing inaction from [[TiddlerOne]]", + filter: "[[one]] [[a a]] [subfilter{hasList!!list}]", + tags: [] + }, + "TiddlerSeventh": { + title: "TiddlerSeventh", + text: "", + list: "[[TiddlerOne]] [[Tiddler Three]] [[a fourth tiddler]] [[MissingTiddler]]", + tags: ["one"] + }, + "Tiddler8": { + title: "Tiddler8", + text: "Tidd", + tags: ["one"], + "test-field": "JoeBloggs" + } + } + }; + var tiddlers = [{ + title: "$:/ShadowPlugin", + text: JSON.stringify(shadowTiddlers), + "plugin-type": "plugin", + type: "application/json" + },{ + title: "TiddlerOne", + text: "The quick brown fox in $:/TiddlerTwo", + tags: ["one"], + cost: "123", + value: "120", + slug: "tiddler-one", + authors: "Joe Bloggs", + modifier: "JoeBloggs", + modified: "201304152222" + },{ + title: "$:/TiddlerTwo", + text: "The rain in Spain\nfalls mainly on the plain and [[a fourth tiddler]]", + tags: ["two"], + cost: "42", + value: "190", + slug: "tiddler-two", + authors: "[[John Doe]]", + modifier: "John", + modified: "201304152211" + },{ + title: "Tiddler Three", + text: "The speed of sound in light\n\nThere is no [[TiddlerZero]] but [[TiddlerSix]]", + tags: ["one","two"], + cost: "56", + value: "80", + modifier: "John", + modified: "201304162202" + },{ + title: "a fourth tiddler", + text: "The quality of mercy is not drained by [[Tiddler Three]]", + tags: [], + cost: "82", + value: "72", + empty: "not", + modifier: "John" + },{ + title: "one", + text: "This is the text of tiddler [[one]]", + list: "[[Tiddler Three]] [[TiddlerOne]]", + empty: "", + modifier: "John" + },{ + title: "hasList", + text: "This is the text of tiddler [[hasList]]", + list: "[[Tiddler Three]] [[TiddlerOne]]", + modifier: "PMario" + },{ + title: "has filter", + text: "This is the text of tiddler [[has filter]]", + filter: "[[Tiddler Three]] [[TiddlerOne]] [subfilter{hasList!!list}]", + modifier: "PMario" + },{ + title: "filter regexp test", + text: "Those strings have been used to create the `regexp = /[+|\-|~]?([[](?:[^\]])*\]+)|([+|-|~|\S]\S*)/;`", + filter: "+aaa -bbb ~ccc aaaaaabbbbbbbbaa \"bb'b\" 'cc\"c' [[abc]] [[tiddler with spaces]] [is[test]] [is[te st]] a s df [enlist] +[enlist:raw{test with spaces}] [enlist:raw{test with spaces}] [[a a]] [[ ] [ ]] [[ [hugo]] [subfilter{Story/Tower of Hanoi/A-C Sequence}]", + modifier: "PMario" + }]; + // Load the tiddlers in the required order + var fnCompare; + switch(wikiOptions.sort) { + case "ascending": + fnCompare = function(a,b) { + if(a.title < b.title) { + return -1; + } else if(a.title > b.title) { + return +1; + } else { + return 0; + } + }; + break; + case "descending": + fnCompare = function(a,b) { + if(a.title < b.title) { + return +1; + } else if(a.title > b.title) { + return -1; + } else { + return 0; + } + }; + break; } - }; - var tiddlers = [{ - title: "$:/ShadowPlugin", - text: JSON.stringify(shadowTiddlers), - "plugin-type": "plugin", - type: "application/json" - },{ - title: "TiddlerOne", - text: "The quick brown fox in $:/TiddlerTwo", - tags: ["one"], - cost: "123", - value: "120", - slug: "tiddler-one", - authors: "Joe Bloggs", - modifier: "JoeBloggs", - modified: "201304152222" - },{ - title: "$:/TiddlerTwo", - text: "The rain in Spain\nfalls mainly on the plain and [[a fourth tiddler]]", - tags: ["two"], - cost: "42", - value: "190", - slug: "tiddler-two", - authors: "[[John Doe]]", - modifier: "John", - modified: "201304152211" - },{ - title: "Tiddler Three", - text: "The speed of sound in light\n\nThere is no [[TiddlerZero]] but [[TiddlerSix]]", - tags: ["one","two"], - cost: "56", - value: "80", - modifier: "John", - modified: "201304162202" - },{ - title: "a fourth tiddler", - text: "The quality of mercy is not drained by [[Tiddler Three]]", - tags: [], - cost: "82", - value: "72", - empty: "not", - modifier: "John" - },{ - title: "one", - text: "This is the text of tiddler [[one]]", - list: "[[Tiddler Three]] [[TiddlerOne]]", - empty: "", - modifier: "John" - },{ - title: "hasList", - text: "This is the text of tiddler [[hasList]]", - list: "[[Tiddler Three]] [[TiddlerOne]]", - modifier: "PMario" - },{ - title: "has filter", - text: "This is the text of tiddler [[has filter]]", - filter: "[[Tiddler Three]] [[TiddlerOne]] [subfilter{hasList!!list}]", - modifier: "PMario" - },{ - title: "filter regexp test", - text: "Those strings have been used to create the `regexp = /[+|\-|~]?([[](?:[^\]])*\]+)|([+|-|~|\S]\S*)/;`", - filter: "+aaa -bbb ~ccc aaaaaabbbbbbbbaa \"bb'b\" 'cc\"c' [[abc]] [[tiddler with spaces]] [is[test]] [is[te st]] a s df [enlist] +[enlist:raw{test with spaces}] [enlist:raw{test with spaces}] [[a a]] [[ ] [ ]] [[ [hugo]] [subfilter{Story/Tower of Hanoi/A-C Sequence}]", - modifier: "PMario" - }]; - // Load the tiddlers in the required order - var fnCompare; - switch(wikiOptions.sort) { - case "ascending": - fnCompare = function(a,b) { - if(a.title < b.title) { - return -1; - } else if(a.title > b.title) { - return +1; - } else { - return 0; - } - }; - break; - case "descending": - fnCompare = function(a,b) { - if(a.title < b.title) { - return +1; - } else if(a.title > b.title) { - return -1; - } else { - return 0; - } - }; - break; + if(fnCompare) { + tiddlers.sort(fnCompare); + } + wiki.addTiddlers(tiddlers); + // Unpack plugin tiddlers + wiki.readPluginInfo(); + wiki.registerPluginTiddlers("plugin"); + wiki.unpackPluginTiddlers(); + wiki.addIndexersToWiki(); + return wiki; } - if(fnCompare) { - tiddlers.sort(fnCompare); - } - wiki.addTiddlers(tiddlers); - // Unpack plugin tiddlers - wiki.readPluginInfo(); - wiki.registerPluginTiddlers("plugin"); - wiki.unpackPluginTiddlers(); - wiki.addIndexersToWiki(); - return wiki; -} - -// Our tests -function runTests(wiki) { - - it("should handle the enlist operator", function() { - expect(wiki.filterTiddlers("[enlist[one two three]addsuffix[!]]").join(",")).toBe("one!,two!,three!"); - }); - it("should handle the enlist-input operator", function() { - expect(wiki.filterTiddlers("[[one two three]enlist-input[]]").join(",")).toBe("one,two,three"); - expect(wiki.filterTiddlers("[[one two two three]enlist-input[]]").join(",")).toBe("one,two,three"); - expect(wiki.filterTiddlers("[[one two two three]enlist-input:dedupe[]]").join(",")).toBe("one,two,three"); - expect(wiki.filterTiddlers("[[one two two three]enlist-input:raw[]]").join(",")).toBe("one,two,two,three"); - expect(wiki.filterTiddlers("[[one two three]] [[four five six]] +[enlist-input[]]").join(",")).toBe("one,two,three,four,five,six"); - expect(wiki.filterTiddlers("[[one two three]] [[four five six]] [[seven eight]] +[enlist-input[]]").join(",")).toBe("one,two,three,four,five,six,seven,eight"); - expect(wiki.filterTiddlers("[[]] +[enlist-input[]]").join(",")).toBe(""); - }); + // Our tests + function runTests(wiki) { - it("should handle the then and else operators", function() { - expect(wiki.filterTiddlers("[modifier[JoeBloggs]then[Susi]]").join(",")).toBe("Susi"); - expect(wiki.filterTiddlers("[!modifier[JoeBloggs]then[Susi]]").join(",")).toBe("Susi,Susi,Susi,Susi,Susi,Susi,Susi,Susi"); - expect(wiki.filterTiddlers("[modifier[DaveBloggs]then[Susi]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[modifier[JoeBloggs]else[Susi]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[!modifier[JoeBloggs]else[Susi]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); - expect(wiki.filterTiddlers("[modifier[DaveBloggs]else[Susi]]").join(",")).toBe("Susi"); - }); + it("should handle the enlist operator", function() { + expect(wiki.filterTiddlers("[enlist[one two three]addsuffix[!]]").join(",")).toBe("one!,two!,three!"); + }); + + it("should handle the enlist-input operator", function() { + expect(wiki.filterTiddlers("[[one two three]enlist-input[]]").join(",")).toBe("one,two,three"); + expect(wiki.filterTiddlers("[[one two two three]enlist-input[]]").join(",")).toBe("one,two,three"); + expect(wiki.filterTiddlers("[[one two two three]enlist-input:dedupe[]]").join(",")).toBe("one,two,three"); + expect(wiki.filterTiddlers("[[one two two three]enlist-input:raw[]]").join(",")).toBe("one,two,two,three"); + expect(wiki.filterTiddlers("[[one two three]] [[four five six]] +[enlist-input[]]").join(",")).toBe("one,two,three,four,five,six"); + expect(wiki.filterTiddlers("[[one two three]] [[four five six]] [[seven eight]] +[enlist-input[]]").join(",")).toBe("one,two,three,four,five,six,seven,eight"); + expect(wiki.filterTiddlers("[[]] +[enlist-input[]]").join(",")).toBe(""); + }); + + it("should handle the then and else operators", function() { + expect(wiki.filterTiddlers("[modifier[JoeBloggs]then[Susi]]").join(",")).toBe("Susi"); + expect(wiki.filterTiddlers("[!modifier[JoeBloggs]then[Susi]]").join(",")).toBe("Susi,Susi,Susi,Susi,Susi,Susi,Susi,Susi"); + expect(wiki.filterTiddlers("[modifier[DaveBloggs]then[Susi]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[modifier[JoeBloggs]else[Susi]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[!modifier[JoeBloggs]else[Susi]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); + expect(wiki.filterTiddlers("[modifier[DaveBloggs]else[Susi]]").join(",")).toBe("Susi"); + }); + + it("should handle the ~ prefix", function() { + expect(wiki.filterTiddlers("[modifier[JoeBloggs]] ~[[No such tiddler]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[modifier[Susi]] ~[[No such tiddler]]").join(",")).toBe("No such tiddler"); + expect(wiki.filterTiddlers("~[[No such tiddler]]").join(",")).toBe("No such tiddler"); + expect(wiki.filterTiddlers("[my-field[present]] ~[[No such tiddler]]").join(",")).toBe("No such tiddler"); + }); + + it("should handle the lookup operator", function() { + expect(wiki.filterTiddlers("Six Seventh 8 +[lookup[Tiddler]]").join(",")).toBe("Missing inaction from [[TiddlerOne]],,Tidd"); + expect(wiki.filterTiddlers("Six Seventh 8 +[lookup:8[Tiddler]]").join(",")).toBe("Missing inaction from [[TiddlerOne]],8,Tidd"); + expect(wiki.filterTiddlers("Six Seventh 8 +[lookup:8[Tiddler],[text]]").join(",")).toBe("Missing inaction from [[TiddlerOne]],8,Tidd"); + expect(wiki.filterTiddlers("Six Seventh 8 +[lookup[Tiddler],[tags]]").join(",")).toBe(",one,one"); + }); + + it("should retrieve shadow tiddlers", function() { + expect(wiki.getTiddlerText("Tiddler8")).toBe("Tidd"); + }); + + it("should handle the title operator", function() { + expect(wiki.filterTiddlers("TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three"); + expect(wiki.filterTiddlers("[!title[Tiddler Three]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne"); + expect(wiki.filterTiddlers("TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]] [[A Missing Tiddler]]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three,A Missing Tiddler"); + }); + + it("should handle the field operator", function() { + expect(wiki.filterTiddlers("[modifier[JoeBloggs]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[!modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); + expect(wiki.filterTiddlers("[!is[system]!modifier[JoeBloggs]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); + expect(wiki.filterTiddlers("[field:modifier[JoeBloggs]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[!field:modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); + expect(wiki.filterTiddlers("[!is[system]!field:modifier[JoeBloggs]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); + expect(wiki.filterTiddlers("[modifier[John]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three"); + expect(wiki.filterTiddlers("[!modifier[John]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,TiddlerOne"); + expect(wiki.filterTiddlers("[!is[system]!modifier[John]]").join(",")).toBe("filter regexp test,has filter,hasList,TiddlerOne"); + expect(wiki.filterTiddlers("[field:modifier[John]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three"); + expect(wiki.filterTiddlers("[!field:modifier[John]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,TiddlerOne"); + expect(wiki.filterTiddlers("[!is[system]!field:modifier[John]]").join(",")).toBe("filter regexp test,has filter,hasList,TiddlerOne"); + }); + + it("should handle the regexp operator", function() { + expect(wiki.filterTiddlers("[regexp[id]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[!regexp[id]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,one"); + expect(wiki.filterTiddlers("[regexp[Tid]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[regexp[(?i)Tid]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[!regexp[Tid(?i)]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,one"); + }); + + // The following 2 tests should write a log -> WARNING: Filter modifier has a deprecated regexp operand XXXX + // The test should pass anyway. + it("should handle the field operator with a regular expression operand", function() { + spyOn(console, 'log'); + expect(wiki.filterTiddlers("[modifier/JoeBloggs/]").join(",")).toBe("TiddlerOne"); + expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /JoeBloggs/); + console.log.calls.reset(); + expect(wiki.filterTiddlers("[modifier/Jo/]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne"); + expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /Jo/); + }); - it("should handle the ~ prefix", function() { - expect(wiki.filterTiddlers("[modifier[JoeBloggs]] ~[[No such tiddler]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[modifier[Susi]] ~[[No such tiddler]]").join(",")).toBe("No such tiddler"); - expect(wiki.filterTiddlers("~[[No such tiddler]]").join(",")).toBe("No such tiddler"); - expect(wiki.filterTiddlers("[my-field[present]] ~[[No such tiddler]]").join(",")).toBe("No such tiddler"); - }); + it("should handle regular expression operands without crashing", function() { + spyOn(console, 'log'); + // We don't really care about the results. Just don't get RSoD. + expect(() => wiki.filterTiddlers("[all/current/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[prefix/anything/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[title/anything/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[/anything/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[//]")).not.toThrow(); + }); + + it("should handle the prefix operator", function() { + expect(wiki.filterTiddlers("[prefix[Tiddler]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[prefix:casesensitive[tiddler]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[prefix:caseinsensitive[tiddler]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[prefix[nothing]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[enlist[ABCDE abcde]prefix[]]").join(",")).toBe("ABCDE,abcde"); + }); - it("should handle the lookup operator", function() { - expect(wiki.filterTiddlers("Six Seventh 8 +[lookup[Tiddler]]").join(",")).toBe("Missing inaction from [[TiddlerOne]],,Tidd"); - expect(wiki.filterTiddlers("Six Seventh 8 +[lookup:8[Tiddler]]").join(",")).toBe("Missing inaction from [[TiddlerOne]],8,Tidd"); - expect(wiki.filterTiddlers("Six Seventh 8 +[lookup:8[Tiddler],[text]]").join(",")).toBe("Missing inaction from [[TiddlerOne]],8,Tidd"); - expect(wiki.filterTiddlers("Six Seventh 8 +[lookup[Tiddler],[tags]]").join(",")).toBe(",one,one"); - }); + it("should handle the suffix operator", function() { + expect(wiki.filterTiddlers("[suffix[One]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[suffix:casesensitive[one]]").join(",")).toBe("one"); + expect(wiki.filterTiddlers("[suffix:caseinsensitive[one]]").join(",")).toBe("one,TiddlerOne"); + expect(wiki.filterTiddlers("[suffix[nothing]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[enlist[ABCDE abcde]suffix[]]").join(",")).toBe("ABCDE,abcde"); + }); - it("should retrieve shadow tiddlers", function() { - expect(wiki.getTiddlerText("Tiddler8")).toBe("Tidd"); - }); - - it("should handle the title operator", function() { - expect(wiki.filterTiddlers("TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three"); - expect(wiki.filterTiddlers("[!title[Tiddler Three]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne"); - expect(wiki.filterTiddlers("TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]] [[A Missing Tiddler]]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three,A Missing Tiddler"); - }); - - it("should handle the field operator", function() { - expect(wiki.filterTiddlers("[modifier[JoeBloggs]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[!modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); - expect(wiki.filterTiddlers("[!is[system]!modifier[JoeBloggs]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); - expect(wiki.filterTiddlers("[field:modifier[JoeBloggs]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[!field:modifier[JoeBloggs]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); - expect(wiki.filterTiddlers("[!is[system]!field:modifier[JoeBloggs]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three"); - expect(wiki.filterTiddlers("[modifier[John]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three"); - expect(wiki.filterTiddlers("[!modifier[John]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,TiddlerOne"); - expect(wiki.filterTiddlers("[!is[system]!modifier[John]]").join(",")).toBe("filter regexp test,has filter,hasList,TiddlerOne"); - expect(wiki.filterTiddlers("[field:modifier[John]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three"); - expect(wiki.filterTiddlers("[!field:modifier[John]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,TiddlerOne"); - expect(wiki.filterTiddlers("[!is[system]!field:modifier[John]]").join(",")).toBe("filter regexp test,has filter,hasList,TiddlerOne"); - }); - - it("should handle the regexp operator", function() { - expect(wiki.filterTiddlers("[regexp[id]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[!regexp[id]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,one"); - expect(wiki.filterTiddlers("[regexp[Tid]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[regexp[(?i)Tid]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[!regexp[Tid(?i)]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,has filter,hasList,one"); - }); - - // The following 2 tests should write a log -> WARNING: Filter modifier has a deprecated regexp operand XXXX - // The test should pass anyway. - it("should handle the field operator with a regular expression operand", function() { - spyOn(console, 'log'); - expect(wiki.filterTiddlers("[modifier/JoeBloggs/]").join(",")).toBe("TiddlerOne"); - expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /JoeBloggs/); - console.log.calls.reset(); - expect(wiki.filterTiddlers("[modifier/Jo/]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne"); - expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /Jo/); - }); - - it("should handle regular expression operands without crashing", function() { - spyOn(console, 'log'); - // We don't really care about the results. Just don't get RSoD. - expect(() => wiki.filterTiddlers("[all/current/]")).not.toThrow(); - expect(() => wiki.filterTiddlers("[prefix/anything/]")).not.toThrow(); - expect(() => wiki.filterTiddlers("[title/anything/]")).not.toThrow(); - expect(() => wiki.filterTiddlers("[/anything/]")).not.toThrow(); - expect(() => wiki.filterTiddlers("[//]")).not.toThrow(); - }); - - it("should handle the prefix operator", function() { - expect(wiki.filterTiddlers("[prefix[Tiddler]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[prefix:casesensitive[tiddler]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[prefix:caseinsensitive[tiddler]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[prefix[nothing]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[enlist[ABCDE abcde]prefix[]]").join(",")).toBe("ABCDE,abcde"); - }); - - it("should handle the suffix operator", function() { - expect(wiki.filterTiddlers("[suffix[One]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[suffix:casesensitive[one]]").join(",")).toBe("one"); - expect(wiki.filterTiddlers("[suffix:caseinsensitive[one]]").join(",")).toBe("one,TiddlerOne"); - expect(wiki.filterTiddlers("[suffix[nothing]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[enlist[ABCDE abcde]suffix[]]").join(",")).toBe("ABCDE,abcde"); - }); - - it("should handle the removeprefix operator", function() { - expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix[ABC]]").join(",")).toBe("DE"); - expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix:casesensitive[ABC]]").join(",")).toBe("DE"); - expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix:caseinsensitive[abc]]").join(",")).toBe("DE,de"); - expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix[]]").join(",")).toBe("ABCDE,abcde"); - }); + it("should handle the removeprefix operator", function() { + expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix[ABC]]").join(",")).toBe("DE"); + expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix:casesensitive[ABC]]").join(",")).toBe("DE"); + expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix:caseinsensitive[abc]]").join(",")).toBe("DE,de"); + expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removeprefix[]]").join(",")).toBe("ABCDE,abcde"); + }); it("should handle the removesuffix operator", function() { expect(wiki.filterTiddlers("[enlist[ABCDE abcde]removesuffix[DE]]").join(",")).toBe("ABC"); @@ -468,356 +464,356 @@ function runTests(wiki) { expect(wiki.filterTiddlers("[tag[one]list[TiddlerSeventh]sort[title]]").join(",")).toBe("a fourth tiddler,MissingTiddler,Tiddler Three,TiddlerOne"); }); - it("should handle the listed operator", function() { - expect(wiki.filterTiddlers("TiddlerOne MissingTiddler +[listed[]]").join(",")).toBe('hasList,one'); - expect(wiki.filterTiddlers("one two +[listed[tags]]").join(",")).toBe('TiddlerOne,$:/TiddlerTwo,Tiddler Three'); - }); - - it("should handle the next operator", function() { - expect(wiki.filterTiddlers("[[Tiddler Three]next[TiddlerSeventh]]").join(",")).toBe("a fourth tiddler"); - expect(wiki.filterTiddlers("[[MissingTiddler]next[TiddlerSeventh]]").join(",")).toBe(""); - }); - - it("should handle the previous operator", function() { - expect(wiki.filterTiddlers("[[Tiddler Three]previous[TiddlerSeventh]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[[TiddlerOne]previous[TiddlerSeventh]]").join(",")).toBe(""); - }); - - it("should handle the search operator", function() { - expect(wiki.filterTiddlers("[search[the]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search{Tiddler8}sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,has filter,hasList,one,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:modifier[og]sort[title]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[search:modifier,authors:casesensitive[Do]sort[title]]").join(",")).toBe("$:/TiddlerTwo"); - expect(wiki.filterTiddlers("[search:modifier,authors:casesensitive[do]sort[title]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[search:authors:casesensitive,whitespace[John Doe]sort[title]]").join(",")).toBe("$:/TiddlerTwo"); - expect(wiki.filterTiddlers("[search:modifier:regexp[(d|bl)o(ggs|e)]sort[title]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[search:-modifier,authors:[g]sort[title]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,Tiddler Three"); - expect(wiki.filterTiddlers("[search:*:[g]sort[title]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:text:anchored[the]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); - }); - - it("should yield search results where 'default' search finds at least 1 token", function() { - expect(wiki.filterTiddlers("[search::some[one two]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,one,Tiddler Three,TiddlerOne"); - }); - - it("should yield search results where 'title' finds at least one token", function() { - expect(wiki.filterTiddlers("[search:title:some[tiddler]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:title:some[tiddler one]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne"); - }); - - it("should yield search results where 'tags' finds at least one token", function() { - expect(wiki.filterTiddlers("[search:tags:some[one]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:tags:some[two]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); - expect(wiki.filterTiddlers("[search:tags:some[two one]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne"); - }); - - it("should yield search results where 'tags' finds at least one token / casesensitive", function() { - expect(wiki.filterTiddlers("[search:tags:some[ONE]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:tags:some,casesensitive[two ONE]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); - }); - - it("should yield search results where 'tags' finds at least one token / anchored", function() { - expect(wiki.filterTiddlers("[search:tags:some,anchored[one]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:tags:some,anchored[two]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); - // search:title - expect(wiki.filterTiddlers("[search:title:some,anchored[tiddler]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:title:some,anchored[tiddler one]sort[title]]").join(",")).toBe("one,Tiddler Three,TiddlerOne"); - }); - - it("should yield search results where 'tags' finds at least one token / anchored & casesensitive", function() { - expect(wiki.filterTiddlers("[search:title:some,anchored,casesensitive[Tiddler one]sort[title]]").join(",")).toBe("one,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[search:title:some,anchored,casesensitive[Tiddler ONE]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - }); - - it("should yield search results that have search tokens spread across different fields", function() { - expect(wiki.filterTiddlers("[search[fox one]sort[title]]").join(",")).toBe("TiddlerOne"); - }); - - it("should handle the each operator", function() { - expect(wiki.filterTiddlers("[each[modifier]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,filter regexp test,TiddlerOne"); - expect(wiki.filterTiddlers("[each:list-item[tags]sort[title]]").join(",")).toBe("one,two"); - expect(wiki.filterTiddlers("[each:list-item[authors]sort[title]]").join(",")).toBe("Bloggs,Joe,John Doe"); - }); - - it("should handle the eachday operator", function() { - expect(wiki.filterTiddlers("[eachday[modified]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); - }); - - it("should handle the sameday operator", function() { - expect(wiki.filterTiddlers("[sameday[201304152200]sort[title]]").join(",")).toBe("$:/TiddlerTwo,TiddlerOne"); - }); - - describe("testing the is operator",function() { - - it("should handle the '[is[current]]' operator", function() { - var fakeWidget = {getVariable: function() {return "Tiddler Three";}}; - expect(wiki.filterTiddlers("[is[current]]",fakeWidget).join(",")).toBe("Tiddler Three"); - expect(wiki.filterTiddlers("[[Tiddler Three]is[current]]",fakeWidget).join(",")).toBe("Tiddler Three"); - expect(wiki.filterTiddlers("[[$:/TiddlerTwo]is[current]]",fakeWidget).join(",")).toBe(""); - expect(wiki.filterTiddlers("[!is[current]sort[title]]",fakeWidget).join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne"); + it("should handle the listed operator", function() { + expect(wiki.filterTiddlers("TiddlerOne MissingTiddler +[listed[]]").join(",")).toBe('hasList,one'); + expect(wiki.filterTiddlers("one two +[listed[tags]]").join(",")).toBe('TiddlerOne,$:/TiddlerTwo,Tiddler Three'); }); - - it("should handle the '[is[system]]' operator", function() { - expect(wiki.filterTiddlers("[is[system]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo"); - expect(wiki.filterTiddlers("[!is[system]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); - }); - - it("should handle the '[is[shadow]]' operator", function() { - expect(wiki.filterTiddlers("[all[shadows]sort[title]]").join(",")).toBe("$:/TiddlerFive,Tiddler8,TiddlerSeventh,TiddlerSix"); - expect(wiki.filterTiddlers("[!is[shadow]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); - }); - - it("should handle the '[is[missing]]' operator", function() { - expect(wiki.filterTiddlers("[all[]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[all[missing]]").join(",")).toBe("TiddlerZero"); - expect(wiki.filterTiddlers("[!is[missing]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[[TiddlerOne]is[missing]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[[TiddlerZero]is[missing]]").join(",")).toBe("TiddlerZero"); - expect(wiki.filterTiddlers("[!title[Tiddler Three]is[missing]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[!title[Tiddler Three]!is[missing]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne"); - }); - - it("should handle the '[is[orphan]]' operator", function() { - expect(wiki.filterTiddlers("[is[orphan]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,TiddlerOne"); - expect(wiki.filterTiddlers("[!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,has filter,hasList,one,Tiddler Three"); - expect(wiki.filterTiddlers("[[TiddlerOne]is[orphan]]").join(",")).toBe("TiddlerOne"); - expect(wiki.filterTiddlers("[[TiddlerOne]!is[orphan]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[!title[Tiddler Three]is[orphan]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,TiddlerOne"); - expect(wiki.filterTiddlers("[!title[Tiddler Three]!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,has filter,hasList,one"); - }); - - it("should handle the '[is[draft]]' operator", function() { - var wiki = new $tw.Wiki(); - wiki.addTiddlers([ - {title: "A"}, - {title: "Draft of 'A'", "draft.of": "A", "draft.title": "A"}, - {title: "B"}, - {title: "Draft of 'B'", "draft.of": "B"}, - {title: "C"}, - // Not a true draft. Doesn't have draft.of - {title: "Draft of 'C'", "draft.title": "C"}, - {title: "E"}, - // Broken. Has draft.of, but it's empty. Still a draft - {title: "Draft of 'E'", "draft.of": "", "draft.title": ""} - // Not a draft. It doesn't exist. - //{title: "F"} // This one is deliberately missing - ]); - // is analagous to [has[draft.of]], - // except they handle empty draft.of differently - expect(wiki.filterTiddlers("[all[]] F +[is[draft]]").join(",")).toEqual("Draft of 'A',Draft of 'B',Draft of 'E'"); - expect(wiki.filterTiddlers("[all[]] F +[!is[draft]]").join(",")).toEqual("A,B,C,Draft of 'C',E,F"); - // [is[draft]] and [!is[draft]] are proper complements - var included = wiki.filterTiddlers("[all[]] F +[is[draft]]") - var excluded = wiki.filterTiddlers("[all[]] F +[!is[draft]]") - var all = [].concat(included, excluded).sort(); - // combined, they should have exactly one of everything. - expect(wiki.filterTiddlers("[all[]] F +[sort[]]")).toEqual(all); - }); - - }); - - it("should handle the operand prefixes", function() { - expect(wiki.filterTiddlers("[prefix[Tiddler]] +[sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - }); - - it("should handle indirect operands", function() { - expect(wiki.filterTiddlers("[{!!missing}]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[{!!title}]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[prefix{Tiddler8}] +[sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[modifier{Tiddler8!!test-field}] +[sort[title]]").join(",")).toBe("TiddlerOne"); - var fakeWidget = {wiki: wiki, getVariable: function(name) {return name === "currentTiddler" ? "Tiddler Three": undefined;}}; - expect(wiki.filterTiddlers("[modifier{!!modifier}] +[sort[title]]",fakeWidget).join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three"); - }); - - it("should handle variable operands", function() { - - var widget = require("$:/core/modules/widgets/widget.js"); - // Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers - var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] }, - { wiki:wiki, document:$tw.document}); - rootWidget.makeChildWidgets(); - var anchorWidget = rootWidget.children[0]; - rootWidget.setVariable("myVar","Tidd"); - rootWidget.setVariable("myVar2","JoeBloggs"); - expect(wiki.filterTiddlers("[prefix] +[sort[title]]",anchorWidget).join(",")).toBe("Tiddler Three,TiddlerOne"); - expect(wiki.filterTiddlers("[modifier] +[sort[title]]",anchorWidget).join(",")).toBe("TiddlerOne"); - }); - - it("should handle the before and after operators", function() { - expect(wiki.filterTiddlers("[list[TiddlerSeventh]after[TiddlerOne]]").join(",")).toBe("Tiddler Three"); - expect(wiki.filterTiddlers("[list[TiddlerSeventh]after[a fourth tiddler]]").join(",")).toBe("MissingTiddler"); - expect(wiki.filterTiddlers("[list[TiddlerSeventh]after[MissingTiddler]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[list[TiddlerSeventh]before[TiddlerOne]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("[list[TiddlerSeventh]before[a fourth tiddler]]").join(",")).toBe("Tiddler Three"); - expect(wiki.filterTiddlers("[list[TiddlerSeventh]before[MissingTiddler]]").join(",")).toBe("a fourth tiddler"); - }); - - it("should handle the range operator", function() { - expect(wiki.filterTiddlers("[range[10:0:2]]").join(",")).toBe("10,8,6,4,2,0"); - expect(wiki.filterTiddlers("[range[10;0;2]]").join(",")).toBe("10,8,6,4,2,0"); - expect(wiki.filterTiddlers("[range[1.001,5,1]]").join(",")).toBe("1.001,2.001,3.001,4.001"); - expect(wiki.filterTiddlers("[range[0,10]]").join(",")).toBe("0,1,2,3,4,5,6,7,8,9,10"); - expect(wiki.filterTiddlers("[range[0],[10]]").join(",")).toBe("0,1,2,3,4,5,6,7,8,9,10"); - expect(wiki.filterTiddlers("[range[10,0]]").join(",")).toBe("10,9,8,7,6,5,4,3,2,1,0"); - expect(wiki.filterTiddlers("[range[10],[0]]").join(",")).toBe("10,9,8,7,6,5,4,3,2,1,0"); - expect(wiki.filterTiddlers("[range[0,10,2]]").join(",")).toBe("0,2,4,6,8,10"); - expect(wiki.filterTiddlers("[range[0],[10],[2]]").join(",")).toBe("0,2,4,6,8,10"); - expect(wiki.filterTiddlers("[range[10,0,2]]").join(",")).toBe("10,8,6,4,2,0"); - expect(wiki.filterTiddlers("[range[10],[0],[2]]").join(",")).toBe("10,8,6,4,2,0"); - }); - - it("should handle the string operators", function() { - expect(wiki.filterTiddlers("John Paul George Ringo +[length[]]").join(",")).toBe("4,4,6,5"); - expect(wiki.filterTiddlers("John Paul George Ringo +[uppercase[]]").join(",")).toBe("JOHN,PAUL,GEORGE,RINGO"); - expect(wiki.filterTiddlers("John Paul George Ringo +[lowercase[]]").join(",")).toBe("john,paul,george,ringo"); - expect(wiki.filterTiddlers("John Paul George Ringo +[split[]]").join(",")).toBe("J,o,h,n,P,a,u,l,G,e,o,r,g,e,R,i,n,g,o"); - expect(wiki.filterTiddlers("[[John. Paul. George. Ringo.]] +[split[.]trim[]]").join(",")).toBe("John,Paul,George,Ringo,"); - expect(wiki.filterTiddlers("John Paul George Ringo +[split[e]]").join(",")).toBe("John,Paul,G,org,,Ringo"); - expect(wiki.filterTiddlers("John Paul George Ringo +[join[ ]split[e]join[ee]split[ ]]").join(",")).toBe("John,Paul,Geeorgee,Ringo"); - // Ensure that join doesn't return null if passed empty list - expect(wiki.filterTiddlers("Test +[butlast[]join[ ]]")).toEqual([]); - // Ensure that join correctly handles empty strings in source - expect(wiki.filterTiddlers("[[]] Paul +[join[-]]").join(",")).toBe("-Paul"); - expect(wiki.filterTiddlers("[[ John ]] [[Paul ]] [[ George]] Ringo +[trim[]join[-]]").join(",")).toBe("John-Paul-George-Ringo"); - expect(wiki.filterTiddlers("[[ abc ]] [[def ]] [[ ghi]] +[trim[]]").join(",")).toBe("abc,def,ghi"); - expect(wiki.filterTiddlers("[[ abc ]] [[def ]] [[ ghi]] +[trim:prefix[]]").join(",")).toBe("abc ,def ,ghi"); - expect(wiki.filterTiddlers("[[ abc ]] [[def ]] [[ ghi]] +[trim:suffix[]]").join(",")).toBe(" abc,def, ghi"); - expect(wiki.filterTiddlers("[[ abacus ]] [[ baobab ]] +[trim[ab]]").join(",")).toBe(" abacus , baobab "); - expect(wiki.filterTiddlers("[[ abacus ]] [[ baobab ]] +[trim[a]]").join(",")).toBe(" abacus , baobab "); - expect(wiki.filterTiddlers("abacus baobab +[trim[a]]").join(",")).toBe("bacus,baobab"); - expect(wiki.filterTiddlers("abacus baobab +[trim[ab]]").join(",")).toBe("acus,baob"); - expect(wiki.filterTiddlers("abacus baobab +[trim:prefix[ab]]").join(",")).toBe("acus,baobab"); - expect(wiki.filterTiddlers("abacus baobab +[trim:suffix[ab]]").join(",")).toBe("abacus,baob"); - // Trim doesn't hiccup on regexp special characters - expect(wiki.filterTiddlers("[[.*abacus.*]] [[.+baobab.+]] +[trim[.*]]").join(",")).toBe("abacus,.+baobab.+"); - expect(wiki.filterTiddlers("[[.*abacus.*]] [[.+baobab.+]] +[trim[.+]]").join(",")).toBe(".*abacus.*,baobab"); - }); - - it("should handle the mathematics operators", function() { - expect(wiki.filterTiddlers("[[2]add[2]]").join(",")).toBe("4"); - expect(wiki.filterTiddlers("[[4]subtract[2]]").join(",")).toBe("2"); - expect(wiki.filterTiddlers("[[24]divide[8]]").join(",")).toBe("3"); - expect(wiki.filterTiddlers("[[355]divide[113]sign[]multiply[4]]").join(",")).toBe("4"); - expect(wiki.filterTiddlers("[[355]divide[113]add[0.5]round[]multiply[4]]").join(",")).toBe("16"); - expect(wiki.filterTiddlers("1 2 3 4 +[sum[]]").join(",")).toBe("10"); - expect(wiki.filterTiddlers("1 2 3 4 +[product[]]").join(",")).toBe("24"); - expect(wiki.filterTiddlers("1 2 3 4 +[maxall[]]").join(",")).toBe("4"); - expect(wiki.filterTiddlers("1 2 3 4 +[minall[]]").join(",")).toBe("1"); - expect(wiki.filterTiddlers("1 2 3 4 +[max[2]]").join(",")).toBe("2,2,3,4"); - expect(wiki.filterTiddlers("1 2 3 4 +[min[2]]").join(",")).toBe("1,2,2,2"); - }); - -/* listops filters */ - it("should handle the allafter operator", function() { - expect(wiki.filterTiddlers("1 2 3 4 +[allafter[]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter[1]]").join(",")).toBe("2,3,4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[1]]").join(",")).toBe("1,2,3,4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter[2]]").join(",")).toBe("3,4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[2]]").join(",")).toBe("2,3,4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter[3]]").join(",")).toBe("4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[3]]").join(",")).toBe("3,4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter[4]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[4]]").join(",")).toBe("4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter[5]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[5]]").join(",")).toBe(""); - }); + it("should handle the next operator", function() { + expect(wiki.filterTiddlers("[[Tiddler Three]next[TiddlerSeventh]]").join(",")).toBe("a fourth tiddler"); + expect(wiki.filterTiddlers("[[MissingTiddler]next[TiddlerSeventh]]").join(",")).toBe(""); + }); + + it("should handle the previous operator", function() { + expect(wiki.filterTiddlers("[[Tiddler Three]previous[TiddlerSeventh]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[[TiddlerOne]previous[TiddlerSeventh]]").join(",")).toBe(""); + }); + + it("should handle the search operator", function() { + expect(wiki.filterTiddlers("[search[the]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search{Tiddler8}sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,has filter,hasList,one,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:modifier[og]sort[title]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[search:modifier,authors:casesensitive[Do]sort[title]]").join(",")).toBe("$:/TiddlerTwo"); + expect(wiki.filterTiddlers("[search:modifier,authors:casesensitive[do]sort[title]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[search:authors:casesensitive,whitespace[John Doe]sort[title]]").join(",")).toBe("$:/TiddlerTwo"); + expect(wiki.filterTiddlers("[search:modifier:regexp[(d|bl)o(ggs|e)]sort[title]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[search:-modifier,authors:[g]sort[title]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,Tiddler Three"); + expect(wiki.filterTiddlers("[search:*:[g]sort[title]]").join(",")).toBe("$:/ShadowPlugin,filter regexp test,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:text:anchored[the]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); + }); - it("should handle the allbefore operator", function() { - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[1]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[1]]").join(",")).toBe("1"); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[2]]").join(",")).toBe("1"); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[2]]").join(",")).toBe("1,2"); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[3]]").join(",")).toBe("1,2"); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[3]]").join(",")).toBe("1,2,3"); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[4]]").join(",")).toBe("1,2,3"); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[4]]").join(",")).toBe("1,2,3,4"); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[5]]").join(",")).toBe(""); - expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[5]]").join(",")).toBe(""); - }); + it("should yield search results where 'default' search finds at least 1 token", function() { + expect(wiki.filterTiddlers("[search::some[one two]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,one,Tiddler Three,TiddlerOne"); + }); - it("should handle the append operator", function() { - expect(wiki.filterTiddlers("a b c +[append[d e]]").join(",")).toBe("a,b,c,d,e"); - expect(wiki.filterTiddlers("a b c +[append:1[d e]]").join(",")).toBe("a,b,c,d"); - expect(wiki.filterTiddlers("a b c +[append{TiddlerSeventh!!list}]").join(",")).toBe("a,b,c,TiddlerOne,Tiddler Three,a fourth tiddler,MissingTiddler"); - expect(wiki.filterTiddlers("a b c +[append:2{TiddlerSeventh!!list}]").join(",")).toBe("a,b,c,TiddlerOne,Tiddler Three"); + it("should yield search results where 'title' finds at least one token", function() { + expect(wiki.filterTiddlers("[search:title:some[tiddler]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:title:some[tiddler one]sort[title]]").join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three,TiddlerOne"); + }); + + it("should yield search results where 'tags' finds at least one token", function() { + expect(wiki.filterTiddlers("[search:tags:some[one]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:tags:some[two]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); + expect(wiki.filterTiddlers("[search:tags:some[two one]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne"); + }); + + it("should yield search results where 'tags' finds at least one token / casesensitive", function() { + expect(wiki.filterTiddlers("[search:tags:some[ONE]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:tags:some,casesensitive[two ONE]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); + }); + + it("should yield search results where 'tags' finds at least one token / anchored", function() { + expect(wiki.filterTiddlers("[search:tags:some,anchored[one]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:tags:some,anchored[two]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); + // search:title + expect(wiki.filterTiddlers("[search:title:some,anchored[tiddler]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:title:some,anchored[tiddler one]sort[title]]").join(",")).toBe("one,Tiddler Three,TiddlerOne"); + }); + + it("should yield search results where 'tags' finds at least one token / anchored & casesensitive", function() { + expect(wiki.filterTiddlers("[search:title:some,anchored,casesensitive[Tiddler one]sort[title]]").join(",")).toBe("one,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[search:title:some,anchored,casesensitive[Tiddler ONE]sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + }); + + it("should yield search results that have search tokens spread across different fields", function() { + expect(wiki.filterTiddlers("[search[fox one]sort[title]]").join(",")).toBe("TiddlerOne"); + }); + + it("should handle the each operator", function() { + expect(wiki.filterTiddlers("[each[modifier]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,filter regexp test,TiddlerOne"); + expect(wiki.filterTiddlers("[each:list-item[tags]sort[title]]").join(",")).toBe("one,two"); + expect(wiki.filterTiddlers("[each:list-item[authors]sort[title]]").join(",")).toBe("Bloggs,Joe,John Doe"); + }); + + it("should handle the eachday operator", function() { + expect(wiki.filterTiddlers("[eachday[modified]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three"); + }); + + it("should handle the sameday operator", function() { + expect(wiki.filterTiddlers("[sameday[201304152200]sort[title]]").join(",")).toBe("$:/TiddlerTwo,TiddlerOne"); + }); + + describe("testing the is operator",function() { + + it("should handle the '[is[current]]' operator", function() { + var fakeWidget = {getVariable: function() {return "Tiddler Three";}}; + expect(wiki.filterTiddlers("[is[current]]",fakeWidget).join(",")).toBe("Tiddler Three"); + expect(wiki.filterTiddlers("[[Tiddler Three]is[current]]",fakeWidget).join(",")).toBe("Tiddler Three"); + expect(wiki.filterTiddlers("[[$:/TiddlerTwo]is[current]]",fakeWidget).join(",")).toBe(""); + expect(wiki.filterTiddlers("[!is[current]sort[title]]",fakeWidget).join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne"); + }); + + it("should handle the '[is[system]]' operator", function() { + expect(wiki.filterTiddlers("[is[system]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo"); + expect(wiki.filterTiddlers("[!is[system]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); + }); + + it("should handle the '[is[shadow]]' operator", function() { + expect(wiki.filterTiddlers("[all[shadows]sort[title]]").join(",")).toBe("$:/TiddlerFive,Tiddler8,TiddlerSeventh,TiddlerSix"); + expect(wiki.filterTiddlers("[!is[shadow]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); + }); + + it("should handle the '[is[missing]]' operator", function() { + expect(wiki.filterTiddlers("[all[]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[all[missing]]").join(",")).toBe("TiddlerZero"); + expect(wiki.filterTiddlers("[!is[missing]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[[TiddlerOne]is[missing]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[[TiddlerZero]is[missing]]").join(",")).toBe("TiddlerZero"); + expect(wiki.filterTiddlers("[!title[Tiddler Three]is[missing]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[!title[Tiddler Three]!is[missing]sort[title]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne"); + }); + + it("should handle the '[is[orphan]]' operator", function() { + expect(wiki.filterTiddlers("[is[orphan]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,TiddlerOne"); + expect(wiki.filterTiddlers("[!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,has filter,hasList,one,Tiddler Three"); + expect(wiki.filterTiddlers("[[TiddlerOne]is[orphan]]").join(",")).toBe("TiddlerOne"); + expect(wiki.filterTiddlers("[[TiddlerOne]!is[orphan]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[!title[Tiddler Three]is[orphan]sort[title]]").join(",")).toBe("a fourth tiddler,filter regexp test,TiddlerOne"); + expect(wiki.filterTiddlers("[!title[Tiddler Three]!is[orphan]]").join(",")).toBe("$:/ShadowPlugin,$:/TiddlerTwo,has filter,hasList,one"); + }); + + it("should handle the '[is[draft]]' operator", function() { + var wiki = new $tw.Wiki(); + wiki.addTiddlers([ + {title: "A"}, + {title: "Draft of 'A'", "draft.of": "A", "draft.title": "A"}, + {title: "B"}, + {title: "Draft of 'B'", "draft.of": "B"}, + {title: "C"}, + // Not a true draft. Doesn't have draft.of + {title: "Draft of 'C'", "draft.title": "C"}, + {title: "E"}, + // Broken. Has draft.of, but it's empty. Still a draft + {title: "Draft of 'E'", "draft.of": "", "draft.title": ""} + // Not a draft. It doesn't exist. + //{title: "F"} // This one is deliberately missing + ]); + // is analagous to [has[draft.of]], + // except they handle empty draft.of differently + expect(wiki.filterTiddlers("[all[]] F +[is[draft]]").join(",")).toEqual("Draft of 'A',Draft of 'B',Draft of 'E'"); + expect(wiki.filterTiddlers("[all[]] F +[!is[draft]]").join(",")).toEqual("A,B,C,Draft of 'C',E,F"); + // [is[draft]] and [!is[draft]] are proper complements + var included = wiki.filterTiddlers("[all[]] F +[is[draft]]") + var excluded = wiki.filterTiddlers("[all[]] F +[!is[draft]]") + var all = [].concat(included, excluded).sort(); + // combined, they should have exactly one of everything. + expect(wiki.filterTiddlers("[all[]] F +[sort[]]")).toEqual(all); + }); + + }); + + it("should handle the operand prefixes", function() { + expect(wiki.filterTiddlers("[prefix[Tiddler]] +[sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + }); + + it("should handle indirect operands", function() { + expect(wiki.filterTiddlers("[{!!missing}]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[{!!title}]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[prefix{Tiddler8}] +[sort[title]]").join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[modifier{Tiddler8!!test-field}] +[sort[title]]").join(",")).toBe("TiddlerOne"); + var fakeWidget = {wiki: wiki, getVariable: function(name) {return name === "currentTiddler" ? "Tiddler Three": undefined;}}; + expect(wiki.filterTiddlers("[modifier{!!modifier}] +[sort[title]]",fakeWidget).join(",")).toBe("$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three"); + }); + + it("should handle variable operands", function() { + + var widget = require("$:/core/modules/widgets/widget.js"); + // Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers + var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] }, + { wiki:wiki, document:$tw.document}); + rootWidget.makeChildWidgets(); + var anchorWidget = rootWidget.children[0]; + rootWidget.setVariable("myVar","Tidd"); + rootWidget.setVariable("myVar2","JoeBloggs"); + expect(wiki.filterTiddlers("[prefix] +[sort[title]]",anchorWidget).join(",")).toBe("Tiddler Three,TiddlerOne"); + expect(wiki.filterTiddlers("[modifier] +[sort[title]]",anchorWidget).join(",")).toBe("TiddlerOne"); + }); + + it("should handle the before and after operators", function() { + expect(wiki.filterTiddlers("[list[TiddlerSeventh]after[TiddlerOne]]").join(",")).toBe("Tiddler Three"); + expect(wiki.filterTiddlers("[list[TiddlerSeventh]after[a fourth tiddler]]").join(",")).toBe("MissingTiddler"); + expect(wiki.filterTiddlers("[list[TiddlerSeventh]after[MissingTiddler]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[list[TiddlerSeventh]before[TiddlerOne]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("[list[TiddlerSeventh]before[a fourth tiddler]]").join(",")).toBe("Tiddler Three"); + expect(wiki.filterTiddlers("[list[TiddlerSeventh]before[MissingTiddler]]").join(",")).toBe("a fourth tiddler"); + }); + + it("should handle the range operator", function() { + expect(wiki.filterTiddlers("[range[10:0:2]]").join(",")).toBe("10,8,6,4,2,0"); + expect(wiki.filterTiddlers("[range[10;0;2]]").join(",")).toBe("10,8,6,4,2,0"); + expect(wiki.filterTiddlers("[range[1.001,5,1]]").join(",")).toBe("1.001,2.001,3.001,4.001"); + expect(wiki.filterTiddlers("[range[0,10]]").join(",")).toBe("0,1,2,3,4,5,6,7,8,9,10"); + expect(wiki.filterTiddlers("[range[0],[10]]").join(",")).toBe("0,1,2,3,4,5,6,7,8,9,10"); + expect(wiki.filterTiddlers("[range[10,0]]").join(",")).toBe("10,9,8,7,6,5,4,3,2,1,0"); + expect(wiki.filterTiddlers("[range[10],[0]]").join(",")).toBe("10,9,8,7,6,5,4,3,2,1,0"); + expect(wiki.filterTiddlers("[range[0,10,2]]").join(",")).toBe("0,2,4,6,8,10"); + expect(wiki.filterTiddlers("[range[0],[10],[2]]").join(",")).toBe("0,2,4,6,8,10"); + expect(wiki.filterTiddlers("[range[10,0,2]]").join(",")).toBe("10,8,6,4,2,0"); + expect(wiki.filterTiddlers("[range[10],[0],[2]]").join(",")).toBe("10,8,6,4,2,0"); + }); + + it("should handle the string operators", function() { + expect(wiki.filterTiddlers("John Paul George Ringo +[length[]]").join(",")).toBe("4,4,6,5"); + expect(wiki.filterTiddlers("John Paul George Ringo +[uppercase[]]").join(",")).toBe("JOHN,PAUL,GEORGE,RINGO"); + expect(wiki.filterTiddlers("John Paul George Ringo +[lowercase[]]").join(",")).toBe("john,paul,george,ringo"); + expect(wiki.filterTiddlers("John Paul George Ringo +[split[]]").join(",")).toBe("J,o,h,n,P,a,u,l,G,e,o,r,g,e,R,i,n,g,o"); + expect(wiki.filterTiddlers("[[John. Paul. George. Ringo.]] +[split[.]trim[]]").join(",")).toBe("John,Paul,George,Ringo,"); + expect(wiki.filterTiddlers("John Paul George Ringo +[split[e]]").join(",")).toBe("John,Paul,G,org,,Ringo"); + expect(wiki.filterTiddlers("John Paul George Ringo +[join[ ]split[e]join[ee]split[ ]]").join(",")).toBe("John,Paul,Geeorgee,Ringo"); + // Ensure that join doesn't return null if passed empty list + expect(wiki.filterTiddlers("Test +[butlast[]join[ ]]")).toEqual([]); + // Ensure that join correctly handles empty strings in source + expect(wiki.filterTiddlers("[[]] Paul +[join[-]]").join(",")).toBe("-Paul"); + expect(wiki.filterTiddlers("[[ John ]] [[Paul ]] [[ George]] Ringo +[trim[]join[-]]").join(",")).toBe("John-Paul-George-Ringo"); + expect(wiki.filterTiddlers("[[ abc ]] [[def ]] [[ ghi]] +[trim[]]").join(",")).toBe("abc,def,ghi"); + expect(wiki.filterTiddlers("[[ abc ]] [[def ]] [[ ghi]] +[trim:prefix[]]").join(",")).toBe("abc ,def ,ghi"); + expect(wiki.filterTiddlers("[[ abc ]] [[def ]] [[ ghi]] +[trim:suffix[]]").join(",")).toBe(" abc,def, ghi"); + expect(wiki.filterTiddlers("[[ abacus ]] [[ baobab ]] +[trim[ab]]").join(",")).toBe(" abacus , baobab "); + expect(wiki.filterTiddlers("[[ abacus ]] [[ baobab ]] +[trim[a]]").join(",")).toBe(" abacus , baobab "); + expect(wiki.filterTiddlers("abacus baobab +[trim[a]]").join(",")).toBe("bacus,baobab"); + expect(wiki.filterTiddlers("abacus baobab +[trim[ab]]").join(",")).toBe("acus,baob"); + expect(wiki.filterTiddlers("abacus baobab +[trim:prefix[ab]]").join(",")).toBe("acus,baobab"); + expect(wiki.filterTiddlers("abacus baobab +[trim:suffix[ab]]").join(",")).toBe("abacus,baob"); + // Trim doesn't hiccup on regexp special characters + expect(wiki.filterTiddlers("[[.*abacus.*]] [[.+baobab.+]] +[trim[.*]]").join(",")).toBe("abacus,.+baobab.+"); + expect(wiki.filterTiddlers("[[.*abacus.*]] [[.+baobab.+]] +[trim[.+]]").join(",")).toBe(".*abacus.*,baobab"); + }); + + it("should handle the mathematics operators", function() { + expect(wiki.filterTiddlers("[[2]add[2]]").join(",")).toBe("4"); + expect(wiki.filterTiddlers("[[4]subtract[2]]").join(",")).toBe("2"); + expect(wiki.filterTiddlers("[[24]divide[8]]").join(",")).toBe("3"); + expect(wiki.filterTiddlers("[[355]divide[113]sign[]multiply[4]]").join(",")).toBe("4"); + expect(wiki.filterTiddlers("[[355]divide[113]add[0.5]round[]multiply[4]]").join(",")).toBe("16"); + expect(wiki.filterTiddlers("1 2 3 4 +[sum[]]").join(",")).toBe("10"); + expect(wiki.filterTiddlers("1 2 3 4 +[product[]]").join(",")).toBe("24"); + expect(wiki.filterTiddlers("1 2 3 4 +[maxall[]]").join(",")).toBe("4"); + expect(wiki.filterTiddlers("1 2 3 4 +[minall[]]").join(",")).toBe("1"); + expect(wiki.filterTiddlers("1 2 3 4 +[max[2]]").join(",")).toBe("2,2,3,4"); + expect(wiki.filterTiddlers("1 2 3 4 +[min[2]]").join(",")).toBe("1,2,2,2"); + }); + + /* listops filters */ - expect(wiki.filterTiddlers("a [[b c]] +[append{TiddlerSix!!filter}]").join(",")).toBe("a,b c,one,a a,[subfilter{hasList!!list}]"); - }); + it("should handle the allafter operator", function() { + expect(wiki.filterTiddlers("1 2 3 4 +[allafter[]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter[1]]").join(",")).toBe("2,3,4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[1]]").join(",")).toBe("1,2,3,4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter[2]]").join(",")).toBe("3,4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[2]]").join(",")).toBe("2,3,4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter[3]]").join(",")).toBe("4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[3]]").join(",")).toBe("3,4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter[4]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[4]]").join(",")).toBe("4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter[5]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allafter:include[5]]").join(",")).toBe(""); + }); + + it("should handle the allbefore operator", function() { + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[1]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[1]]").join(",")).toBe("1"); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[2]]").join(",")).toBe("1"); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[2]]").join(",")).toBe("1,2"); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[3]]").join(",")).toBe("1,2"); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[3]]").join(",")).toBe("1,2,3"); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[4]]").join(",")).toBe("1,2,3"); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[4]]").join(",")).toBe("1,2,3,4"); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore[5]]").join(",")).toBe(""); + expect(wiki.filterTiddlers("1 2 3 4 +[allbefore:include[5]]").join(",")).toBe(""); + }); + + it("should handle the append operator", function() { + expect(wiki.filterTiddlers("a b c +[append[d e]]").join(",")).toBe("a,b,c,d,e"); + expect(wiki.filterTiddlers("a b c +[append:1[d e]]").join(",")).toBe("a,b,c,d"); + expect(wiki.filterTiddlers("a b c +[append{TiddlerSeventh!!list}]").join(",")).toBe("a,b,c,TiddlerOne,Tiddler Three,a fourth tiddler,MissingTiddler"); + expect(wiki.filterTiddlers("a b c +[append:2{TiddlerSeventh!!list}]").join(",")).toBe("a,b,c,TiddlerOne,Tiddler Three"); + + expect(wiki.filterTiddlers("a [[b c]] +[append{TiddlerSix!!filter}]").join(",")).toBe("a,b c,one,a a,[subfilter{hasList!!list}]"); + }); - it("should handle the insertafter operator", function() { - var widget = require("$:/core/modules/widgets/widget.js"); - var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] }, - { wiki:wiki, document:$tw.document}); - rootWidget.makeChildWidgets(); - var anchorWidget = rootWidget.children[0]; - rootWidget.setVariable("myVar","c"); - rootWidget.setVariable("tidTitle","e"); - rootWidget.setVariable("tidList","one tid with spaces"); + it("should handle the insertafter operator", function() { + var widget = require("$:/core/modules/widgets/widget.js"); + var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] }, + { wiki:wiki, document:$tw.document}); + rootWidget.makeChildWidgets(); + var anchorWidget = rootWidget.children[0]; + rootWidget.setVariable("myVar","c"); + rootWidget.setVariable("tidTitle","e"); + rootWidget.setVariable("tidList","one tid with spaces"); - // Position title specified as suffix. - expect(wiki.filterTiddlers("a b c d e f +[insertafter:myVar[f]]",anchorWidget).join(",")).toBe("a,b,c,f,d,e"); - expect(wiki.filterTiddlers("a b c d e f +[insertafter:myVar]",anchorWidget).join(",")).toBe("a,b,c,e,d,f"); - expect(wiki.filterTiddlers("a b c d e f +[insertafter:myVar[gg gg]]",anchorWidget).join(",")).toBe("a,b,c,gg gg,d,e,f"); - expect(wiki.filterTiddlers("a b c d e +[insertafter:myVar]",anchorWidget).join(",")).toBe("a,b,c,one tid with spaces,d,e"); - expect(wiki.filterTiddlers("a b c d e f +[insertafter:tidTitle{TiddlerOne!!tags}]",anchorWidget).join(",")).toBe("a,b,c,d,e,one,f"); + // Position title specified as suffix. + expect(wiki.filterTiddlers("a b c d e f +[insertafter:myVar[f]]",anchorWidget).join(",")).toBe("a,b,c,f,d,e"); + expect(wiki.filterTiddlers("a b c d e f +[insertafter:myVar]",anchorWidget).join(",")).toBe("a,b,c,e,d,f"); + expect(wiki.filterTiddlers("a b c d e f +[insertafter:myVar[gg gg]]",anchorWidget).join(",")).toBe("a,b,c,gg gg,d,e,f"); + expect(wiki.filterTiddlers("a b c d e +[insertafter:myVar]",anchorWidget).join(",")).toBe("a,b,c,one tid with spaces,d,e"); + expect(wiki.filterTiddlers("a b c d e f +[insertafter:tidTitle{TiddlerOne!!tags}]",anchorWidget).join(",")).toBe("a,b,c,d,e,one,f"); - // Position title specified as parameter. - expect(wiki.filterTiddlers("a b c d e +[insertafter[f],[a]]",anchorWidget).join(",")).toBe("a,f,b,c,d,e"); - expect(wiki.filterTiddlers("a b c d e +[insertafter[f],]",anchorWidget).join(",")).toBe("a,b,c,f,d,e"); + // Position title specified as parameter. + expect(wiki.filterTiddlers("a b c d e +[insertafter[f],[a]]",anchorWidget).join(",")).toBe("a,f,b,c,d,e"); + expect(wiki.filterTiddlers("a b c d e +[insertafter[f],]",anchorWidget).join(",")).toBe("a,b,c,f,d,e"); - // Parameter takes precedence over suffix. - expect(wiki.filterTiddlers("a b c d e +[insertafter:myVar[f],[a]]",anchorWidget).join(",")).toBe("a,f,b,c,d,e"); + // Parameter takes precedence over suffix. + expect(wiki.filterTiddlers("a b c d e +[insertafter:myVar[f],[a]]",anchorWidget).join(",")).toBe("a,f,b,c,d,e"); - // No position title. - expect(wiki.filterTiddlers("a b c [[with space]] +[insertafter[b]]").join(",")).toBe("a,c,with space,b"); + // No position title. + expect(wiki.filterTiddlers("a b c [[with space]] +[insertafter[b]]").join(",")).toBe("a,c,with space,b"); - // Position title does not exist, and no suffix given. - expect(wiki.filterTiddlers("a b c d e +[insertafter:foo[b]]").join(",")).toBe("a,c,d,e,b"); - expect(wiki.filterTiddlers("a b c d e +[insertafter[b],[foo]]").join(",")).toBe("a,c,d,e,b"); - expect(wiki.filterTiddlers("a b c d e +[insertafter[b],]").join(",")).toBe("a,c,d,e,b"); + // Position title does not exist, and no suffix given. + expect(wiki.filterTiddlers("a b c d e +[insertafter:foo[b]]").join(",")).toBe("a,c,d,e,b"); + expect(wiki.filterTiddlers("a b c d e +[insertafter[b],[foo]]").join(",")).toBe("a,c,d,e,b"); + expect(wiki.filterTiddlers("a b c d e +[insertafter[b],]").join(",")).toBe("a,c,d,e,b"); - // Position title does not exist, but "start" or "end" given as suffix - expect(wiki.filterTiddlers("a b c d e +[insertafter:start[b],[foo]]").join(",")).toBe("b,a,c,d,e"); - expect(wiki.filterTiddlers("a b c d e +[insertafter:start[b],]").join(",")).toBe("b,a,c,d,e"); - expect(wiki.filterTiddlers("a b c d e +[insertafter:end[b],[foo]]").join(",")).toBe("a,c,d,e,b"); - expect(wiki.filterTiddlers("a b c d e +[insertafter:end[b],]").join(",")).toBe("a,c,d,e,b"); - }); + // Position title does not exist, but "start" or "end" given as suffix + expect(wiki.filterTiddlers("a b c d e +[insertafter:start[b],[foo]]").join(",")).toBe("b,a,c,d,e"); + expect(wiki.filterTiddlers("a b c d e +[insertafter:start[b],]").join(",")).toBe("b,a,c,d,e"); + expect(wiki.filterTiddlers("a b c d e +[insertafter:end[b],[foo]]").join(",")).toBe("a,c,d,e,b"); + expect(wiki.filterTiddlers("a b c d e +[insertafter:end[b],]").join(",")).toBe("a,c,d,e,b"); + }); - it("should handle the insertbefore operator", function() { - var widget = require("$:/core/modules/widgets/widget.js"); - var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] }, - { wiki:wiki, document:$tw.document}); - rootWidget.makeChildWidgets(); - var anchorWidget = rootWidget.children[0]; - rootWidget.setVariable("myVar","c"); - rootWidget.setVariable("tidTitle","e"); - rootWidget.setVariable("tidList","one tid with spaces"); - - // Position title specified as suffix. - expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar[f]]",anchorWidget).join(",")).toBe("a,b,f,c,d,e"); - expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar]",anchorWidget).join(",")).toBe("a,b,e,c,d,f"); - expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar[gg gg]]",anchorWidget).join(",")).toBe("a,b,gg gg,c,d,e,f"); - expect(wiki.filterTiddlers("a b c d e +[insertbefore:myVar]",anchorWidget).join(",")).toBe("a,b,one tid with spaces,c,d,e"); - expect(wiki.filterTiddlers("a b c d e f +[insertbefore:tidTitle{TiddlerOne!!tags}]",anchorWidget).join(",")).toBe("a,b,c,d,one,e,f"); + it("should handle the insertbefore operator", function() { + var widget = require("$:/core/modules/widgets/widget.js"); + var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] }, + { wiki:wiki, document:$tw.document}); + rootWidget.makeChildWidgets(); + var anchorWidget = rootWidget.children[0]; + rootWidget.setVariable("myVar","c"); + rootWidget.setVariable("tidTitle","e"); + rootWidget.setVariable("tidList","one tid with spaces"); + + // Position title specified as suffix. + expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar[f]]",anchorWidget).join(",")).toBe("a,b,f,c,d,e"); + expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar]",anchorWidget).join(",")).toBe("a,b,e,c,d,f"); + expect(wiki.filterTiddlers("a b c d e f +[insertbefore:myVar[gg gg]]",anchorWidget).join(",")).toBe("a,b,gg gg,c,d,e,f"); + expect(wiki.filterTiddlers("a b c d e +[insertbefore:myVar]",anchorWidget).join(",")).toBe("a,b,one tid with spaces,c,d,e"); + expect(wiki.filterTiddlers("a b c d e f +[insertbefore:tidTitle{TiddlerOne!!tags}]",anchorWidget).join(",")).toBe("a,b,c,d,one,e,f"); - // Position title specified as parameter. - expect(wiki.filterTiddlers("a b c d e +[insertbefore[f],[a]]",anchorWidget).join(",")).toBe("f,a,b,c,d,e"); - expect(wiki.filterTiddlers("a b c d e +[insertbefore[f],]",anchorWidget).join(",")).toBe("a,b,f,c,d,e"); + // Position title specified as parameter. + expect(wiki.filterTiddlers("a b c d e +[insertbefore[f],[a]]",anchorWidget).join(",")).toBe("f,a,b,c,d,e"); + expect(wiki.filterTiddlers("a b c d e +[insertbefore[f],]",anchorWidget).join(",")).toBe("a,b,f,c,d,e"); - // Parameter takes precedence over suffix. - expect(wiki.filterTiddlers("a b c d e +[insertbefore:myVar[f],[a]]",anchorWidget).join(",")).toBe("f,a,b,c,d,e"); + // Parameter takes precedence over suffix. + expect(wiki.filterTiddlers("a b c d e +[insertbefore:myVar[f],[a]]",anchorWidget).join(",")).toBe("f,a,b,c,d,e"); + + // No position title. + expect(wiki.filterTiddlers("a b c [[with space]] +[insertbefore[b]]").join(",")).toBe("a,c,with space,b"); - // No position title. - expect(wiki.filterTiddlers("a b c [[with space]] +[insertbefore[b]]").join(",")).toBe("a,c,with space,b"); - - // Position title does not exist, and no suffix given. - expect(wiki.filterTiddlers("a b c d e +[insertbefore:foo[b]]").join(",")).toBe("a,c,d,e,b"); - expect(wiki.filterTiddlers("a b c d e +[insertbefore[b],[foo]]").join(",")).toBe("a,c,d,e,b"); - expect(wiki.filterTiddlers("a b c d e +[insertbefore[b],]").join(",")).toBe("a,c,d,e,b"); + // Position title does not exist, and no suffix given. + expect(wiki.filterTiddlers("a b c d e +[insertbefore:foo[b]]").join(",")).toBe("a,c,d,e,b"); + expect(wiki.filterTiddlers("a b c d e +[insertbefore[b],[foo]]").join(",")).toBe("a,c,d,e,b"); + expect(wiki.filterTiddlers("a b c d e +[insertbefore[b],]").join(",")).toBe("a,c,d,e,b"); // Position title does not exist, but "start" or "end" given as suffix expect(wiki.filterTiddlers("a b c d e +[insertbefore:start[b],[foo]]").join(",")).toBe("b,a,c,d,e"); @@ -1147,5 +1143,3 @@ function runTests(wiki) { }); - })(); - diff --git a/editions/test/tiddlers/tests/test-html-parser.js b/editions/test/tiddlers/tests/test-html-parser.js index 4223aa54d..9fc108235 100644 --- a/editions/test/tiddlers/tests/test-html-parser.js +++ b/editions/test/tiddlers/tests/test-html-parser.js @@ -228,4 +228,3 @@ describe("HTML tag new parser tests", function() { }); }); - diff --git a/editions/test/tiddlers/tests/test-widget.js b/editions/test/tiddlers/tests/test-widget.js index 25d1194a4..7d1cbc329 100755 --- a/editions/test/tiddlers/tests/test-widget.js +++ b/editions/test/tiddlers/tests/test-widget.js @@ -857,7 +857,7 @@ describe("Widget module", function() { // Render the widget node to the DOM renderWidgetNode(widgetNode); var childNode = widgetNode; - while(childNode.children.length > 0) { + while (childNode.children.length > 0) { childNode = childNode.children[0]; } // First make sure A and B imported @@ -871,7 +871,7 @@ describe("Widget module", function() { wiki.addTiddler({title: "DE", text: "\\define D() D2"}); widgetNode.refresh({"ABC": {modified: true}, "DE": {modified: true}}); var childNode = widgetNode; - while(childNode.children.length > 0) { + while (childNode.children.length > 0) { childNode = childNode.children[0]; } // Make sure \import recognized changes and deletions diff --git a/editions/tw5.com/tiddlers/system/theme.tid b/editions/tw5.com/tiddlers/system/theme.tid index 6931f70b9..58690c397 100644 --- a/editions/tw5.com/tiddlers/system/theme.tid +++ b/editions/tw5.com/tiddlers/system/theme.tid @@ -1,6 +1,3 @@ -created: 20230707105616070 -modified: 20230707105617245 title: $:/theme -type: text/vnd.tiddlywiki $:/themes/tiddlywiki/snowwhite \ No newline at end of file diff --git a/plugins/tiddlywiki/bibtex/deserializer.js b/plugins/tiddlywiki/bibtex/deserializer.js index 2e4e0e121..116f05597 100644 --- a/plugins/tiddlywiki/bibtex/deserializer.js +++ b/plugins/tiddlywiki/bibtex/deserializer.js @@ -43,4 +43,3 @@ exports["application/x-bibtex"] = function(text,fields) { // Return the output tiddlers return results; }; - diff --git a/plugins/tiddlywiki/browser-sniff/browser.js b/plugins/tiddlywiki/browser-sniff/browser.js index 42c373101..31573fa7e 100644 --- a/plugins/tiddlywiki/browser-sniff/browser.js +++ b/plugins/tiddlywiki/browser-sniff/browser.js @@ -75,4 +75,3 @@ exports.getInfoTiddlerFields = function() { } return infoTiddlerFields; }; - diff --git a/plugins/tiddlywiki/browser-storage/rawmarkup.js b/plugins/tiddlywiki/browser-storage/rawmarkup.js index de9eb355d..d94d9d236 100644 --- a/plugins/tiddlywiki/browser-storage/rawmarkup.js +++ b/plugins/tiddlywiki/browser-storage/rawmarkup.js @@ -28,7 +28,7 @@ function hookBootTiddlersLoaded() { // Check that browser storage is available try { window.localStorage; - } catch (e) { + } catch(e) { return; } // Step through each browsder storage item @@ -43,7 +43,7 @@ function hookBootTiddlersLoaded() { if(jsonString) { try { jsonData = JSON.parse(jsonString); - } catch (e) {} + } catch(e) {} if(jsonData) { // Convert it to a tiddler var incomingTiddler = new $tw.Tiddler(jsonData); diff --git a/plugins/tiddlywiki/browser-storage/startup.js b/plugins/tiddlywiki/browser-storage/startup.js index 16cff19ca..9ab61620d 100644 --- a/plugins/tiddlywiki/browser-storage/startup.js +++ b/plugins/tiddlywiki/browser-storage/startup.js @@ -132,4 +132,3 @@ exports.startup = function() { }); }); }; - diff --git a/plugins/tiddlywiki/browser-storage/util.js b/plugins/tiddlywiki/browser-storage/util.js index 91f971c1a..5cdcfa398 100644 --- a/plugins/tiddlywiki/browser-storage/util.js +++ b/plugins/tiddlywiki/browser-storage/util.js @@ -7,7 +7,6 @@ Utility methods for browser-storage plugin \*/ - "use strict"; function BrowserStorageUtil(wiki,options) { @@ -106,4 +105,3 @@ BrowserStorageUtil.prototype.clearLocalStorage = function() { }; exports.BrowserStorageUtil = BrowserStorageUtil; - diff --git a/plugins/tiddlywiki/cecily/cecily.js b/plugins/tiddlywiki/cecily/cecily.js index 0f603e925..06c1d3084 100644 --- a/plugins/tiddlywiki/cecily/cecily.js +++ b/plugins/tiddlywiki/cecily/cecily.js @@ -138,4 +138,3 @@ CecilyStoryView.prototype.lookupTiddlerInMap = function(title,domNode) { }; exports.cecily = CecilyStoryView; - diff --git a/plugins/tiddlywiki/classictools/modules/recipe.js b/plugins/tiddlywiki/classictools/modules/recipe.js index 29466c392..7fa918f46 100644 --- a/plugins/tiddlywiki/classictools/modules/recipe.js +++ b/plugins/tiddlywiki/classictools/modules/recipe.js @@ -77,4 +77,3 @@ exports["text/vnd.tiddlywiki2-recipe"] = function(text,fields) { }); return tiddlers; }; - diff --git a/plugins/tiddlywiki/codemirror/edit-codemirror.js b/plugins/tiddlywiki/codemirror/edit-codemirror.js index c828a918a..53ed6efdd 100755 --- a/plugins/tiddlywiki/codemirror/edit-codemirror.js +++ b/plugins/tiddlywiki/codemirror/edit-codemirror.js @@ -13,4 +13,3 @@ var editTextWidgetFactory = require("$:/core/modules/editor/factory.js").editTex CodeMirrorEngine = require("$:/plugins/tiddlywiki/codemirror/engine.js").CodeMirrorEngine; exports["edit-codemirror"] = editTextWidgetFactory(CodeMirrorEngine,CodeMirrorEngine); - diff --git a/plugins/tiddlywiki/codemirror/engine.js b/plugins/tiddlywiki/codemirror/engine.js index 2a31d2035..38064fcd6 100755 --- a/plugins/tiddlywiki/codemirror/engine.js +++ b/plugins/tiddlywiki/codemirror/engine.js @@ -313,4 +313,3 @@ CodeMirrorEngine.prototype.executeTextOperation = function(operation) { }; exports.CodeMirrorEngine = $tw.browser ? CodeMirrorEngine : require("$:/core/modules/editor/engines/simple.js").SimpleEngine; - diff --git a/plugins/tiddlywiki/consent-banner/raw-widget.js b/plugins/tiddlywiki/consent-banner/raw-widget.js index 25deeea31..b6fd338a7 100644 --- a/plugins/tiddlywiki/consent-banner/raw-widget.js +++ b/plugins/tiddlywiki/consent-banner/raw-widget.js @@ -62,4 +62,3 @@ RawWidget.prototype.refresh = function(changedTiddlers) { }; exports.raw = RawWidget; - diff --git a/plugins/tiddlywiki/consent-banner/startup.js b/plugins/tiddlywiki/consent-banner/startup.js index 67113e186..9c2a269b3 100644 --- a/plugins/tiddlywiki/consent-banner/startup.js +++ b/plugins/tiddlywiki/consent-banner/startup.js @@ -100,4 +100,3 @@ exports.startup = function() { }); } }; - diff --git a/plugins/tiddlywiki/d3/barwidget.js b/plugins/tiddlywiki/d3/barwidget.js index dcdc349d5..0603dd7b4 100644 --- a/plugins/tiddlywiki/d3/barwidget.js +++ b/plugins/tiddlywiki/d3/barwidget.js @@ -197,4 +197,3 @@ BarWidget.prototype.refresh = function(changedTiddlers) { }; exports.d3bar = BarWidget; - diff --git a/plugins/tiddlywiki/d3/cloudwidget.js b/plugins/tiddlywiki/d3/cloudwidget.js index 57d08b6c8..69b297d90 100644 --- a/plugins/tiddlywiki/d3/cloudwidget.js +++ b/plugins/tiddlywiki/d3/cloudwidget.js @@ -126,4 +126,3 @@ CloudWidget.prototype.refresh = function(changedTiddlers) { }; exports.d3cloud = CloudWidget; - diff --git a/plugins/tiddlywiki/dynannotate/modules/dynannotate.js b/plugins/tiddlywiki/dynannotate/modules/dynannotate.js index dbb706929..537227776 100644 --- a/plugins/tiddlywiki/dynannotate/modules/dynannotate.js +++ b/plugins/tiddlywiki/dynannotate/modules/dynannotate.js @@ -430,4 +430,3 @@ DynannotateWidget.prototype.refresh = function(changedTiddlers) { }; exports.dynannotate = DynannotateWidget; - diff --git a/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js b/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js index 1087aac99..43fbe5148 100644 --- a/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js +++ b/plugins/tiddlywiki/dynannotate/modules/legacy-selection-tracker.js @@ -97,4 +97,3 @@ LegacySelectionTracker.prototype.findSelectionContainer = function findSelection }; exports.LegacySelectionTracker = LegacySelectionTracker; - diff --git a/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js b/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js index 0ee548b67..2ae328e5b 100644 --- a/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js +++ b/plugins/tiddlywiki/dynannotate/modules/selection-tracker.js @@ -164,4 +164,3 @@ SelectionTracker.prototype.performSelectionActions = function(chunks,variables,a }; exports.SelectionTracker = SelectionTracker; - diff --git a/plugins/tiddlywiki/dynannotate/modules/startup.js b/plugins/tiddlywiki/dynannotate/modules/startup.js index e4e3f0635..ea6549cd2 100644 --- a/plugins/tiddlywiki/dynannotate/modules/startup.js +++ b/plugins/tiddlywiki/dynannotate/modules/startup.js @@ -55,5 +55,3 @@ exports.startup = function() { $tw.dynannotate.elementSpotlight.shineSpotlight(selectors); }); }; - - \ No newline at end of file diff --git a/plugins/tiddlywiki/dynannotate/modules/textmap.js b/plugins/tiddlywiki/dynannotate/modules/textmap.js index 1b4ecc7d5..5e523a2cc 100644 --- a/plugins/tiddlywiki/dynannotate/modules/textmap.js +++ b/plugins/tiddlywiki/dynannotate/modules/textmap.js @@ -175,4 +175,3 @@ exports.TextMap.prototype.extractContext = function(startContainer,startOffset,t suffix: this.string.slice(startPos + text.length, Math.min(startPos + text.length + PREFIX_SUFFIX_LENGTH, this.string.length)) }; }; - diff --git a/plugins/tiddlywiki/dynaview/dynaview.js b/plugins/tiddlywiki/dynaview/dynaview.js index d14b40881..2f8af31f5 100644 --- a/plugins/tiddlywiki/dynaview/dynaview.js +++ b/plugins/tiddlywiki/dynaview/dynaview.js @@ -260,4 +260,3 @@ function saveViewportDimensions() { } } } - diff --git a/plugins/tiddlywiki/evernote/modules/enex-deserializer.js b/plugins/tiddlywiki/evernote/modules/enex-deserializer.js index 3fc6948c9..e3535c74d 100644 --- a/plugins/tiddlywiki/evernote/modules/enex-deserializer.js +++ b/plugins/tiddlywiki/evernote/modules/enex-deserializer.js @@ -44,7 +44,7 @@ exports["application/enex+xml"] = function(text,fields) { try { // may error if content is not valid XML contentNode = new DOMParser().parseFromString(contentText,"application/xml").querySelector("en-note") || contentNode; - } catch (e) { + } catch(e) { // ignore } } diff --git a/plugins/tiddlywiki/external-attachments/startup.js b/plugins/tiddlywiki/external-attachments/startup.js index e61496374..898c92e96 100644 --- a/plugins/tiddlywiki/external-attachments/startup.js +++ b/plugins/tiddlywiki/external-attachments/startup.js @@ -120,5 +120,3 @@ function test_makePathRelative() { test("\\\\SHARE\\Users\\me\\something\\file.png","/SHARE/Users/me/somethingelse/index.html","../something/file.png",{isWindows: true}); test("\\\\SHARE\\Users\\me\\something\\file.png","/C:/Users/me/something/index.html","/SHARE/Users/me/something/file.png",{isWindows: true}); } - - diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js index ff479a7e6..b5cc8fa61 100644 --- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js +++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js @@ -164,4 +164,3 @@ FileSystemAdaptor.prototype.removeTiddlerFileInfo = function(title) { if(fs) { exports.adaptorClass = FileSystemAdaptor; } - diff --git a/plugins/tiddlywiki/freelinks/plain-text.js b/plugins/tiddlywiki/freelinks/plain-text.js index 64984ee09..93572c3d4 100644 --- a/plugins/tiddlywiki/freelinks/plain-text.js +++ b/plugins/tiddlywiki/freelinks/plain-text.js @@ -55,4 +55,3 @@ PlainTextNodeWidget.prototype.refresh = function(changedTiddlers) { }; exports["plain-text"] = PlainTextNodeWidget; - diff --git a/plugins/tiddlywiki/freelinks/text.js b/plugins/tiddlywiki/freelinks/text.js index eb79bbf17..658a3ca96 100755 --- a/plugins/tiddlywiki/freelinks/text.js +++ b/plugins/tiddlywiki/freelinks/text.js @@ -161,4 +161,3 @@ TextNodeWidget.prototype.refresh = function(changedTiddlers) { }; exports.text = TextNodeWidget; - diff --git a/plugins/tiddlywiki/googleanalytics/googleanalytics.js b/plugins/tiddlywiki/googleanalytics/googleanalytics.js index e3b8515bd..4dfbb1ef5 100644 --- a/plugins/tiddlywiki/googleanalytics/googleanalytics.js +++ b/plugins/tiddlywiki/googleanalytics/googleanalytics.js @@ -52,6 +52,3 @@ exports.startup = function() { } } }; - - - diff --git a/plugins/tiddlywiki/highlight-legacy/highlightblock.js b/plugins/tiddlywiki/highlight-legacy/highlightblock.js index 8fd3e1dd7..9e295d013 100644 --- a/plugins/tiddlywiki/highlight-legacy/highlightblock.js +++ b/plugins/tiddlywiki/highlight-legacy/highlightblock.js @@ -13,7 +13,7 @@ var CodeBlockWidget = require("$:/core/modules/widgets/codeblock.js").codeblock; var hljs = require("$:/plugins/tiddlywiki/highlight-legacy/highlight.js"); -hljs.configure({tabReplace: " "}); +hljs.configure({tabReplace: " "}); CodeBlockWidget.prototype.postRender = function() { var domNode = this.domNodes[0], @@ -25,7 +25,7 @@ CodeBlockWidget.prototype.postRender = function() { if(language && hljs.getLanguage(language)) { domNode.className = language.toLowerCase() + " hljs"; if($tw.browser && !domNode.isTiddlyWikiFakeDom) { - hljs.highlightBlock(domNode); + hljs.highlightBlock(domNode); } else { var text = domNode.textContent; domNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language,text).value); @@ -34,5 +34,5 @@ CodeBlockWidget.prototype.postRender = function() { domNode.children[0].textInnerHTML = text; } } - } + } }; diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index 32d87536d..3bc515fd6 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -9,7 +9,9 @@ Wraps up the fenced code blocks parser for highlight and use in TiddlyWiki5 "use strict"; var TYPE_MAPPINGS_BASE = "$:/config/HighlightPlugin/TypeMappings/"; + var CodeBlockWidget = require("$:/core/modules/widgets/codeblock.js").codeblock; + var hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js"); if(hljs.getLanguage !== undefined) { @@ -17,6 +19,7 @@ if(hljs.getLanguage !== undefined) { $tw.utils.each($tw.modules.types["highlight"],function(moduleInfo,moduleName) { $tw.utils.evalSandboxed(moduleInfo.definition,{hljs:hljs, exports:{}},moduleName); }); + CodeBlockWidget.prototype.postRender = function() { var domNode = this.domNodes[0], language = this.language, diff --git a/plugins/tiddlywiki/innerwiki/innerwiki.js b/plugins/tiddlywiki/innerwiki/innerwiki.js index 7b957d7c3..2142a0316 100644 --- a/plugins/tiddlywiki/innerwiki/innerwiki.js +++ b/plugins/tiddlywiki/innerwiki/innerwiki.js @@ -344,4 +344,3 @@ InnerWikiWidget.prototype.saveScreenshot = function(options,callback) { }; exports.innerwiki = InnerWikiWidget; - diff --git a/plugins/tiddlywiki/innerwiki/screenshot.js b/plugins/tiddlywiki/innerwiki/screenshot.js index c4d95e832..954c8ead4 100644 --- a/plugins/tiddlywiki/innerwiki/screenshot.js +++ b/plugins/tiddlywiki/innerwiki/screenshot.js @@ -76,4 +76,3 @@ Command.prototype.findInnerWikiWidgets = function(widgetNode) { }; exports.Command = Command; - diff --git a/plugins/tiddlywiki/jasmine/jasmine-plugin.js b/plugins/tiddlywiki/jasmine/jasmine-plugin.js index 5660dcd40..a6b0be753 100644 --- a/plugins/tiddlywiki/jasmine/jasmine-plugin.js +++ b/plugins/tiddlywiki/jasmine/jasmine-plugin.js @@ -8,8 +8,6 @@ The main module of the Jasmine test plugin for TiddlyWiki5 \*/ -/*jslint node: true, browser: true */ -/*global $tw: true */ "use strict"; var TEST_TIDDLER_FILTER = "[all[tiddlers+shadows]type[application/javascript]tag[$:/tags/test-spec]]"; @@ -71,7 +69,7 @@ exports.runTests = function(callback,specFilter) { context.require = function(moduleTitle) { // mock out the 'glob' module required in // "$:/plugins/tiddlywiki/jasmine/jasmine/jasmine.js" - if(moduleTitle === "glob") { + if (moduleTitle === "glob") { return {}; } return $tw.modules.execute(moduleTitle,title); @@ -157,4 +155,3 @@ exports.runTests = function(callback,specFilter) { nodeJasmineWrapper.execute(null,specFilter); } }; - diff --git a/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js b/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js index 7b107b57f..52d86de77 100644 --- a/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js +++ b/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js @@ -96,4 +96,3 @@ describe("Wiki-based tests", function() { } }); - diff --git a/plugins/tiddlywiki/jasmine/startup.js b/plugins/tiddlywiki/jasmine/startup.js index f0f79e6f3..276381cff 100644 --- a/plugins/tiddlywiki/jasmine/startup.js +++ b/plugins/tiddlywiki/jasmine/startup.js @@ -8,8 +8,6 @@ The main module of the Jasmine test plugin for TiddlyWiki5 \*/ -/*jslint node: true, browser: true */ -/*global $tw: true */ "use strict"; var jasmine = require("./jasmine-plugin.js"); @@ -34,4 +32,3 @@ if($tw.browser) { // We make this check after the commands are run. exports.after = ["commands"]; } - diff --git a/plugins/tiddlywiki/jszip/startup.js b/plugins/tiddlywiki/jszip/startup.js index e0af3a8e0..812d90bc7 100644 --- a/plugins/tiddlywiki/jszip/startup.js +++ b/plugins/tiddlywiki/jszip/startup.js @@ -97,4 +97,3 @@ function downloadZipFile(title,filename) { document.body.removeChild(link); } } - diff --git a/plugins/tiddlywiki/katex/latex-parser.js b/plugins/tiddlywiki/katex/latex-parser.js index fc0ce9b87..78b6eee2e 100644 --- a/plugins/tiddlywiki/katex/latex-parser.js +++ b/plugins/tiddlywiki/katex/latex-parser.js @@ -62,4 +62,3 @@ exports.parse = function() { } }]; }; - diff --git a/plugins/tiddlywiki/katex/wrapper.js b/plugins/tiddlywiki/katex/wrapper.js index 5c2f8b008..05b820749 100644 --- a/plugins/tiddlywiki/katex/wrapper.js +++ b/plugins/tiddlywiki/katex/wrapper.js @@ -91,5 +91,3 @@ KaTeXWidget.prototype.refresh = function(changedTiddlers) { exports.latex = KaTeXWidget; exports.katex = KaTeXWidget; - - diff --git a/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js b/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js index 4e8564412..75f3cc574 100644 --- a/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js +++ b/plugins/tiddlywiki/markdown-legacy/editor-operations/make-markdown-link.js @@ -30,4 +30,3 @@ exports["make-markdown-link"] = function(event,operation) { operation.newSelStart = operation.selStart + operation.replacement.length; operation.newSelEnd = operation.newSelStart; }; - diff --git a/plugins/tiddlywiki/markdown-legacy/wrapper.js b/plugins/tiddlywiki/markdown-legacy/wrapper.js index f58f59a03..c1da539cc 100755 --- a/plugins/tiddlywiki/markdown-legacy/wrapper.js +++ b/plugins/tiddlywiki/markdown-legacy/wrapper.js @@ -334,4 +334,3 @@ var MarkdownParser = function(type, text, options) { exports["text/x-markdown"] = MarkdownParser; exports["text/markdown"] = MarkdownParser; - diff --git a/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js b/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js index 7adbc3b9e..5a3502695 100644 --- a/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js +++ b/plugins/tiddlywiki/markdown/editor-operations/make-markdown-link.js @@ -36,4 +36,3 @@ exports["make-markdown-link"] = function(event,operation) { operation.newSelStart = operation.selStart + operation.replacement.length; operation.newSelEnd = operation.newSelStart; }; - diff --git a/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js b/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js index 63aea6f4c..ad55daa75 100644 --- a/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js +++ b/plugins/tiddlywiki/markdown/markdown-it-tiddlywiki.js @@ -532,4 +532,3 @@ module.exports = function tiddlyWikiPlugin(markdown,options) { md.core.ruler.disable('text_join'); md.core.ruler.push('wikify',wikify); }; - diff --git a/plugins/tiddlywiki/mobiledragdrop/startup.js b/plugins/tiddlywiki/mobiledragdrop/startup.js index e8fb076ad..311bacc54 100644 --- a/plugins/tiddlywiki/mobiledragdrop/startup.js +++ b/plugins/tiddlywiki/mobiledragdrop/startup.js @@ -18,4 +18,3 @@ exports.synchronous = true; exports.startup = function() { window.addEventListener("touchmove", function() {}); }; - diff --git a/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js b/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js index fa8f4dbd6..85fe21ef5 100644 --- a/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js +++ b/plugins/tiddlywiki/nodewebkitsaver/nodewebkit.js @@ -57,4 +57,3 @@ Create an instance of this saver exports.create = function(wiki) { return new NodeWebKitSaver(wiki); }; - diff --git a/plugins/tiddlywiki/pluginlibrary/libraryserver.js b/plugins/tiddlywiki/pluginlibrary/libraryserver.js index 6b43e2ac1..01814d791 100644 --- a/plugins/tiddlywiki/pluginlibrary/libraryserver.js +++ b/plugins/tiddlywiki/pluginlibrary/libraryserver.js @@ -83,4 +83,3 @@ function httpGet(url,callback) { }; http.send(); } - diff --git a/plugins/tiddlywiki/qrcode/makeqr.js b/plugins/tiddlywiki/qrcode/makeqr.js index 315bfbbad..409af17c3 100644 --- a/plugins/tiddlywiki/qrcode/makeqr.js +++ b/plugins/tiddlywiki/qrcode/makeqr.js @@ -66,5 +66,3 @@ function generateQrCode(text,options) { margin = parseInt((size - qr.getModuleCount() * cellsize) / 2); return qr.createImgTag(cellsize, margin, size); } - - diff --git a/plugins/tiddlywiki/railroad/typed-parser.js b/plugins/tiddlywiki/railroad/typed-parser.js index 921ba5c5e..ac93bf8e1 100644 --- a/plugins/tiddlywiki/railroad/typed-parser.js +++ b/plugins/tiddlywiki/railroad/typed-parser.js @@ -20,5 +20,3 @@ console.log(text); }; exports["text/vnd.tiddlywiki.railroad"] = RailroadParser; - - diff --git a/plugins/tiddlywiki/savetrail/savetrail.js b/plugins/tiddlywiki/savetrail/savetrail.js index bbcc95a0c..a1f253ba3 100644 --- a/plugins/tiddlywiki/savetrail/savetrail.js +++ b/plugins/tiddlywiki/savetrail/savetrail.js @@ -146,4 +146,3 @@ function saveTiddlerFile(tiddler,options) { link.click(); document.body.removeChild(link); } - diff --git a/plugins/tiddlywiki/share/rawmarkup.js b/plugins/tiddlywiki/share/rawmarkup.js index de7502a9d..0c4c58b92 100644 --- a/plugins/tiddlywiki/share/rawmarkup.js +++ b/plugins/tiddlywiki/share/rawmarkup.js @@ -105,4 +105,3 @@ function removeWarningBanner() { warningWrapper.parentNode.removeChild(warningWrapper); stylesWrapper.parentNode.removeChild(stylesWrapper); } - diff --git a/plugins/tiddlywiki/tahoelafs/saver.js b/plugins/tiddlywiki/tahoelafs/saver.js index 01334c7c9..bfbe7f322 100644 --- a/plugins/tiddlywiki/tahoelafs/saver.js +++ b/plugins/tiddlywiki/tahoelafs/saver.js @@ -50,4 +50,3 @@ Create an instance of this saver exports.create = function(wiki) { return new TahoeSaver(wiki); }; - diff --git a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js index 39398a931..2debe95a8 100644 --- a/plugins/tiddlywiki/text-slicer/modules/commands/slice.js +++ b/plugins/tiddlywiki/text-slicer/modules/commands/slice.js @@ -51,4 +51,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - diff --git a/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js b/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js index 73fe27593..828a0599c 100644 --- a/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js +++ b/plugins/tiddlywiki/text-slicer/modules/filters/list-children.js @@ -31,4 +31,3 @@ exports["list-children"] = function(source,operator,options) { }); return Object.keys(children); }; - diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js index da02cead9..ad18b45fa 100644 --- a/plugins/tiddlywiki/text-slicer/modules/slicer.js +++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js @@ -471,4 +471,3 @@ Slicer.prototype.makeTitle = function(prefix) { }; exports.Slicer = Slicer; - diff --git a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js index a67a8e3c3..0fee86363 100644 --- a/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js +++ b/plugins/tiddlywiki/text-slicer/modules/startup/slicer-startup.js @@ -44,4 +44,3 @@ exports.startup = function() { }); }); }; - diff --git a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js index 3d8434cc1..b33d3b5e6 100644 --- a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js +++ b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js @@ -372,4 +372,3 @@ TiddlyWebAdaptor.prototype.parseEtag = function(etag) { if($tw.browser && document.location.protocol.substr(0,4) === "http" ) { exports.adaptorClass = TiddlyWebAdaptor; } - diff --git a/plugins/tiddlywiki/tw2parser/classictransclude.js b/plugins/tiddlywiki/tw2parser/classictransclude.js index 87ef5767d..6c91cd106 100644 --- a/plugins/tiddlywiki/tw2parser/classictransclude.js +++ b/plugins/tiddlywiki/tw2parser/classictransclude.js @@ -94,7 +94,7 @@ TranscludeWidget.prototype.execute = function() { this.setVariable("transclusion",recursionMarker); // Parse var text = this.wiki.getTiddlerText(this.transcludeTitle); - if(!!this.section||!!this.slice) { + if (!!this.section||!!this.slice) { text =this.refineTiddlerText(text, this.section, this.slice); } @@ -152,7 +152,7 @@ TranscludeWidget.prototype.getTextSlice = function(text,sliceName) TranscludeWidget.prototype.refineTiddlerText = function(text,section,slice) { var textsection = null; - if(slice) { + if (slice) { var textslice = this.getTextSlice(text,slice); if(textslice) return textslice; @@ -188,4 +188,3 @@ TranscludeWidget.prototype.refresh = function(changedTiddlers) { }; exports.classictransclude = TranscludeWidget; - diff --git a/plugins/tiddlywiki/tw2parser/wikitextparser.js b/plugins/tiddlywiki/tw2parser/wikitextparser.js index 0e5720fcc..81b56f94f 100644 --- a/plugins/tiddlywiki/tw2parser/wikitextparser.js +++ b/plugins/tiddlywiki/tw2parser/wikitextparser.js @@ -193,4 +193,3 @@ WikiTextParser.prototype.subWikifyTerm = function(output,terminatorRegExp) { }; exports["text/x-tiddlywiki"] = WikiTextParser; - diff --git a/plugins/tiddlywiki/tw2parser/wikitextrules.js b/plugins/tiddlywiki/tw2parser/wikitextrules.js index 65ddb40e7..1b590d314 100755 --- a/plugins/tiddlywiki/tw2parser/wikitextrules.js +++ b/plugins/tiddlywiki/tw2parser/wikitextrules.js @@ -821,4 +821,3 @@ var rules = [ ]; exports.rules = rules; - diff --git a/plugins/tiddlywiki/twitter-archivist/archivist.js b/plugins/tiddlywiki/twitter-archivist/archivist.js index 9928804f4..69b7e8153 100644 --- a/plugins/tiddlywiki/twitter-archivist/archivist.js +++ b/plugins/tiddlywiki/twitter-archivist/archivist.js @@ -312,4 +312,3 @@ function arrayBufferToBase64(arrayBuffer) { exports.TwitterArchivist = TwitterArchivist; exports.TwitterArchivistSourceNodeJs = TwitterArchivistSourceNodeJs; exports.TwitterArchivistSourceBrowser = TwitterArchivistSourceBrowser; - diff --git a/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js b/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js index 8244e11b2..5874fa3fa 100644 --- a/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js +++ b/plugins/tiddlywiki/twitter-archivist/loadtwitterarchive.js @@ -46,4 +46,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; - diff --git a/plugins/tiddlywiki/twitter-archivist/startup.js b/plugins/tiddlywiki/twitter-archivist/startup.js index c49549f48..47cc47dc7 100644 --- a/plugins/tiddlywiki/twitter-archivist/startup.js +++ b/plugins/tiddlywiki/twitter-archivist/startup.js @@ -31,4 +31,3 @@ exports.startup = function() { }); }); }; - diff --git a/plugins/tiddlywiki/twitter/startup.js b/plugins/tiddlywiki/twitter/startup.js index cb1cff976..9a28196a1 100644 --- a/plugins/tiddlywiki/twitter/startup.js +++ b/plugins/tiddlywiki/twitter/startup.js @@ -20,4 +20,3 @@ exports.startup = function() { logger.alert("The plugin 'tiddlywiki/twitter' is disabled until this wiki is saved and reloaded again"); } }; - diff --git a/plugins/tiddlywiki/twitter/twitter-widget.js b/plugins/tiddlywiki/twitter/twitter-widget.js index 316f99e21..6ee3e785a 100644 --- a/plugins/tiddlywiki/twitter/twitter-widget.js +++ b/plugins/tiddlywiki/twitter/twitter-widget.js @@ -137,4 +137,3 @@ TwitterWidget.prototype.refresh = function(changedTiddlers) { }; exports.twitter = TwitterWidget; - diff --git a/plugins/tiddlywiki/upgrade/config.js b/plugins/tiddlywiki/upgrade/config.js index ea16e270e..4010d53cf 100644 --- a/plugins/tiddlywiki/upgrade/config.js +++ b/plugins/tiddlywiki/upgrade/config.js @@ -19,4 +19,3 @@ exports.startup = function() { $tw.config.usePasswordVault = true; $tw.config.disableAutoSave = true; }; - diff --git a/plugins/tiddlywiki/xlsx-utils/deserializer.js b/plugins/tiddlywiki/xlsx-utils/deserializer.js index 8188b20b9..b27f41ccd 100644 --- a/plugins/tiddlywiki/xlsx-utils/deserializer.js +++ b/plugins/tiddlywiki/xlsx-utils/deserializer.js @@ -23,4 +23,3 @@ exports["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"] = f // Return the output tiddlers return importer.getResults(); }; - diff --git a/plugins/tiddlywiki/xlsx-utils/importer.js b/plugins/tiddlywiki/xlsx-utils/importer.js index f4512c2c3..28a735e47 100644 --- a/plugins/tiddlywiki/xlsx-utils/importer.js +++ b/plugins/tiddlywiki/xlsx-utils/importer.js @@ -198,4 +198,3 @@ XLSXImporter.prototype.findColumns = function(sheet,sheetSize) { }; exports.XLSXImporter = XLSXImporter; - diff --git a/plugins/tiddlywiki/xlsx-utils/startup.js b/plugins/tiddlywiki/xlsx-utils/startup.js index cbb879039..269a10ff4 100644 --- a/plugins/tiddlywiki/xlsx-utils/startup.js +++ b/plugins/tiddlywiki/xlsx-utils/startup.js @@ -22,4 +22,3 @@ exports.startup = function() { logger.alert("The plugin 'xlsx-utils' requires the 'jszip' plugin to be installed"); } }; - diff --git a/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js index 31261c016..b71787c00 100644 --- a/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js +++ b/plugins/tiddlywiki/xlsx-utils/xlsx-import-command.js @@ -39,4 +39,3 @@ Command.prototype.execute = function() { }; exports.Command = Command; -