1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-01-23 03:14:40 +00:00

Compare commits

..

12 Commits

Author SHA1 Message Date
Jeremy Ruston
f879313d9b Merge branch 'master' into media-query-tracker 2025-01-23 18:11:33 +00:00
Jeremy Ruston
d97a163e30 Merge branch 'master' into media-query-tracker 2025-01-23 14:37:32 +00:00
Jeremy Ruston
365b734a22 Add another background action demo 2025-01-21 16:34:38 +00:00
Jeremy Ruston
818a9977a3 Introduce background actions
Background actions are invoked when the results of a filter change.

The sample background action is just for demo purposes to show how an automatic dark/light mode feature would be powered
2025-01-07 15:09:13 +00:00
Jeremy Ruston
508c74f8e4 Refactor filter tracker
1. Pass params as an options object
2. Add fnProcess which is called during processing after enter, leave and change have been called
2025-01-07 14:53:38 +00:00
Jeremy Ruston
806960afc7 Remove duplicates from filter tracker results 2025-01-06 16:43:02 +00:00
Jeremy Ruston
ed2c7c90de Be more defensive about missing parameters 2025-01-06 11:38:12 +00:00
Jeremy Ruston
964ced35ff Add untrack method to filter tracker 2025-01-06 11:37:58 +00:00
Jeremy Ruston
e78d3ae04e Introduce new generic filter tracker
The new filter tracker is a generic JS mechanism for tracking changes to the results of filters and changes to the tiddlers identified by those results.

The rationale for the new mechanism is that it is a generalisation of code that is already present in the keyboard manager. The intention is to refactor the keyboard manager to use the filter tracker in due course
2025-01-05 17:32:15 +00:00
Jeremy Ruston
ea2426eea1 Merge branch 'master' into media-query-tracker 2025-01-04 14:26:14 +00:00
Jeremy Ruston
7f9b8bf0c1 Fixes suggested by @pmario 2024-08-27 17:40:07 +01:00
Jeremy Ruston
ba17e342b2 Introduce new MediaQueryTrackerMechanism, and use it for dark mode 2024-08-27 16:34:58 +01:00
1339 changed files with 5818 additions and 39506 deletions

View File

@@ -1,55 +0,0 @@
name: Calculate PR build size
on:
pull_request_target:
types: [opened, reopened, synchronize]
paths:
- 'boot/**'
- 'core/**'
- 'themes/tiddlywiki/snowwhite/**'
- 'themes/tiddlywiki/vanilla/**'
jobs:
calculate-build-size:
runs-on: ubuntu-latest
permissions:
pull-requests: read
contents: read
outputs:
pr_size: ${{ steps.get_sizes.outputs.pr_size }}
base_size: ${{ steps.get_sizes.outputs.base_size }}
steps:
- name: build-size-check
id: get_sizes
uses: TiddlyWiki/cerebrus@v4
with:
pr_number: ${{ github.event.pull_request.number }}
repo: ${{ github.repository }}
base_ref: ${{ github.event.pull_request.base.ref }}
github_token: ${{ secrets.GITHUB_TOKEN }}
mode: size:calc
dispatch-followup:
needs: calculate-build-size
runs-on: ubuntu-latest
permissions:
actions: write # Required to dispatch another workflow
pull-requests: write
contents: read
steps:
- name: Trigger follow-up workflow
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'pr-comment-build-size.yml',
ref: 'master',
inputs: {
pr_number: '${{ github.event.pull_request.number }}',
base_ref: '${{ github.event.pull_request.base.ref }}',
pr_size: '${{ needs.calculate-build-size.outputs.pr_size }}',
base_size: '${{ needs.calculate-build-size.outputs.base_size }}'
}
});

View File

@@ -1,36 +0,0 @@
name: Comment on PR build size (Trusted workflow)
on:
workflow_dispatch:
inputs:
pr_number:
required: true
type: string
base_ref:
required: true
type: string
pr_size:
required: true
type: string
base_size:
required: true
type: string
jobs:
comment-on-pr:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- name: Build and check size
uses: TiddlyWiki/cerebrus@v4
with:
pr_number: ${{ inputs.pr_number }}
repo: ${{ github.repository }}
base_ref: ${{ inputs.base_ref }}
github_token: ${{ secrets.GITHUB_TOKEN }}
mode: size:comment
pr_size: ${{ inputs.pr_size }}
base_size: ${{ inputs.base_size }}

View File

@@ -1,18 +0,0 @@
name: Validate PR Paths
on:
pull_request_target:
types: [opened, reopened, synchronize]
jobs:
validate-pr:
runs-on: ubuntu-latest
steps:
- name: Validate PR
uses: TiddlyWiki/cerebrus@v4
with:
pr_number: ${{ github.event.pull_request.number }}
repo: ${{ github.repository }}
base_ref: ${{ github.base_ref }}
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -5,7 +5,7 @@
# Default to the current version number for building the plugin library
if [ -z "$TW5_BUILD_VERSION" ]; then
TW5_BUILD_VERSION=v5.3.8
TW5_BUILD_VERSION=v5.3.7
fi
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
@@ -105,7 +105,6 @@ node $TW5_BUILD_TIDDLYWIKI \
fi
# /index.html Main site
# /external-(version).html External core version of main site
# /favicon.ico Favicon for main site
# /static.html Static rendering of default tiddlers
# /alltiddlers.html Static rendering of all tiddlers
@@ -118,7 +117,7 @@ node $TW5_BUILD_TIDDLYWIKI \
--version \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--build favicon static index external-js \
--build favicon static index \
|| exit 1
# /empty.html Empty
@@ -156,14 +155,7 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \
./editions/tour \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js tour.html text/plain \
|| exit 1
# /surveys.html surveys edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/tiddlywiki-surveys \
--output $TW5_BUILD_OUTPUT \
--build index \
--rendertiddler $:/core/save/all tour.html text/plain \
|| exit 1
# /share.html Custom edition for sharing via the URL
@@ -202,7 +194,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/xlsx-utils \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/xlsx-utils/ \
--build external \
--build index \
|| exit 1
# /editions/resumebuilder/index.html Resume builder edition
@@ -218,7 +210,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/text-slicer \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/text-slicer/ \
--build external \
--build index \
|| exit 1
# /editions/translators/index.html Translators edition
@@ -250,7 +242,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/tw5.com-docs \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/tw5.com-docs/ \
--build external \
--build index \
|| exit 1
# /editions/twitter-archivist/index.html Twitter Archivist edition
@@ -273,7 +265,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/innerwikidemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/innerwiki/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/innerwiki/index.html text/plain \
|| exit 1
# /plugins/tiddlywiki/dynaview/index.html Demo wiki with DynaView plugin
@@ -283,7 +275,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/dynaviewdemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/dynaview/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/dynaview/index.html text/plain \
--rendertiddler $:/core/save/empty plugins/tiddlywiki/dynaview/empty.html text/plain \
|| exit 1
@@ -297,7 +289,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/katexdemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/katex/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/katex/index.html text/plain \
--rendertiddler $:/core/save/empty plugins/tiddlywiki/katex/empty.html text/plain \
|| exit 1
@@ -327,7 +319,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/codemirrordemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/codemirror/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/codemirror/index.html text/plain \
--rendertiddler $:/core/save/empty plugins/tiddlywiki/codemirror/empty.html text/plain \
|| exit 1
@@ -337,7 +329,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/markdowndemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/markdown/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/markdown/index.html text/plain \
--rendertiddler $:/core/save/empty plugins/tiddlywiki/markdown/empty.html text/plain \
|| exit 1
@@ -347,7 +339,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/classicparserdemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/tw2parser/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/tw2parser/index.html text/plain \
--rendertiddler $:/core/save/empty plugins/tiddlywiki/tw2parser/empty.html text/plain \
|| exit 1
@@ -357,7 +349,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/highlightdemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/highlight/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/highlight/index.html text/plain \
--rendertiddler $:/core/save/empty plugins/tiddlywiki/highlight/empty.html text/plain \
|| exit 1
@@ -367,7 +359,7 @@ node $TW5_BUILD_TIDDLYWIKI \
./editions/geospatialdemo \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all-external-js plugins/tiddlywiki/geospatial/index.html text/plain \
--rendertiddler $:/core/save/all plugins/tiddlywiki/geospatial/index.html text/plain \
--rendertiddler $:/core/save/empty plugins/tiddlywiki/geospatial/empty.html text/plain \
|| exit 1

View File

@@ -232,10 +232,10 @@ $tw.utils.error = function(err) {
var link = dm("a"),
text = JSON.stringify(tiddlers);
if(Blob !== undefined) {
var blob = new Blob([text], {type: "application/json"});
var blob = new Blob([text], {type: "text/html"});
link.setAttribute("href", URL.createObjectURL(blob));
} else {
link.setAttribute("href","data:application/json," + encodeURIComponent(text));
link.setAttribute("href","data:text/html," + encodeURIComponent(text));
}
link.setAttribute("download","emergency-tiddlers-" + (new Date()) + ".json");
document.body.appendChild(link);
@@ -1902,16 +1902,8 @@ $tw.loadTiddlersFromFile = function(filepath,fields) {
extensionInfo = $tw.utils.getFileExtensionInfo(ext),
type = extensionInfo ? extensionInfo.type : null,
typeInfo = type ? $tw.config.contentTypeInfo[type] : null,
fileSize = fs.statSync(filepath).size,
data;
if(fileSize > $tw.config.maxEditFileSize) {
data = "File " + filepath + "not loaded because it is too large";
console.log("Warning: " + data);
ext = ".txt";
} else {
data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8");
}
var tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields),
data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"),
tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields),
metadata = $tw.loadMetadataForFile(filepath);
if(metadata) {
if(type === "application/json") {
@@ -2000,7 +1992,7 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) {
var value = tiddler[name];
switch(fieldInfo.source) {
case "subdirectories":
value = $tw.utils.stringifyList(path.relative(rootPath, filename).split(path.sep).slice(0, -1));
value = path.relative(rootPath, filename).split(path.sep).slice(0, -1);
break;
case "filepath":
value = path.relative(rootPath, filename).split(path.sep).join('/');
@@ -2021,10 +2013,10 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) {
value = path.extname(filename);
break;
case "created":
value = $tw.utils.stringifyDate(new Date(fs.statSync(pathname).birthtime));
value = new Date(fs.statSync(pathname).birthtime);
break;
case "modified":
value = $tw.utils.stringifyDate(new Date(fs.statSync(pathname).mtime));
value = new Date(fs.statSync(pathname).mtime);
break;
}
if(fieldInfo.prefix) {
@@ -2471,15 +2463,13 @@ $tw.boot.initStartup = function(options) {
$tw.utils.registerFileType("image/webp","base64",".webp",{flags:["image"]});
$tw.utils.registerFileType("image/heic","base64",".heic",{flags:["image"]});
$tw.utils.registerFileType("image/heif","base64",".heif",{flags:["image"]});
$tw.utils.registerFileType("image/avif","base64",".avif",{flags:["image"]});
$tw.utils.registerFileType("image/svg+xml","utf8",".svg",{flags:["image"]});
$tw.utils.registerFileType("image/vnd.microsoft.icon","base64",".ico",{flags:["image"]});
$tw.utils.registerFileType("image/x-icon","base64",".ico",{flags:["image"]});
$tw.utils.registerFileType("application/wasm","base64",".wasm");
$tw.utils.registerFileType("font/woff","base64",".woff");
$tw.utils.registerFileType("font/woff2","base64",".woff2");
$tw.utils.registerFileType("font/ttf","base64",".ttf");
$tw.utils.registerFileType("font/otf","base64",".otf");
$tw.utils.registerFileType("application/font-woff","base64",".woff");
$tw.utils.registerFileType("application/x-font-ttf","base64",".woff");
$tw.utils.registerFileType("application/font-woff2","base64",".woff2");
$tw.utils.registerFileType("audio/ogg","base64",".ogg");
$tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]);
$tw.utils.registerFileType("video/ogg","base64",[".ogm",".ogv",".ogg"]);

View File

@@ -19,10 +19,6 @@ var _bootprefix = (function($tw) {
$tw = $tw || Object.create(null);
$tw.boot = $tw.boot || Object.create(null);
// Config
$tw.config = $tw.config || Object.create(null);
$tw.config.maxEditFileSize = 100 * 1024 * 1024; // 100MB
// Detect platforms
if(!("browser" in $tw)) {
$tw.browser = typeof(window) !== "undefined" && typeof(document) !== "undefined" ? {} : null;

View File

@@ -4,4 +4,8 @@ TiddlyWiki incorporates code from these fine OpenSource projects:
* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]
* [[The Jasmine JavaScript Test Framework|https://jasmine.github.io/]]
* [[modern-normalize by Sindre Sorhus|https://github.com/sindresorhus/modern-normalize]]
* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]
And media from these projects:
* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]

View File

@@ -1,5 +0,0 @@
title: $:/core/images/language
tags: $:/tags/Image
\parameters (size:"22pt")
<svg width=<<size>> height=<<size>> class="tc-image-language tc-image-button" viewBox="0 0 92 92"><path d="M0 0h2480.32v3507.87H0z" style="fill:none" transform="scale(.03696 .02613)"/><path d="M71.508 62.298c-1.243 15.83-16.758 28.344-35.714 28.344-5.713 0-11.113-1.136-15.905-3.158-2.977 2.498-8.618 4.183-15.088 4.183-.929 0-1.84-.034-2.73-.102 4.499-1.5 7.989-4.886 9.298-9.099C4.373 76.918 0 69.016 0 60.246 0 49.773 6.237 40.537 15.729 35.07c1.235 7.764 5.492 14.713 11.724 19.953l-7.269 18.453c-.393.976-.676 1.737-.847 2.285a5.326 5.326 0 0 0-.256 1.591c0 .89.368 1.686 1.103 2.388.736.702 1.583 1.052 2.542 1.052 1.13 0 1.942-.33 2.438-.988.497-.659 1.096-1.93 1.797-3.812l1.797-4.826h15.3l1.797 4.723c.239.582.526 1.254.86 2.015.333.762.646 1.327.936 1.695.291.368.65.659 1.078.873.428.213.942.32 1.54.32a3.586 3.586 0 0 0 2.632-1.09c.727-.728 1.09-1.528 1.09-2.4 0-.84-.384-2.183-1.154-4.031l-3.545-8.755c2.142.3 4.34.455 6.58.455 5.541 0 10.824-.951 15.636-2.674Zm-30.563.247 1.059 2.898H30.76l2.32-6.467a43.152 43.152 0 0 0 7.865 3.569Z"/><path d="M71.778 57.635c-4.793 2.023-10.191 3.157-15.907 3.157-19.767 0-35.793-13.61-35.793-30.396S36.104.001 55.87.001c19.772 0 35.797 13.61 35.797 30.395 0 8.77-4.373 16.674-11.371 22.221 1.309 4.211 4.8 7.6 9.299 9.1-.89.067-1.802.1-2.73.1-6.47 0-12.11-1.686-15.088-4.182Zm-15.59-15.887a44.237 44.237 0 0 0 3.3 2.496c4.284 2.942 9.06 5.381 14.33 7.315l2.334-3.517c-5.134-1.871-9.696-4.125-13.69-6.763a42.558 42.558 0 0 1-3.37-2.483c4.247-4.806 7.374-10.43 9.38-16.869h6.698V17.78h-16.7a47.226 47.226 0 0 0-1.528-2.959 52.943 52.943 0 0 0-2.885-4.562l-4.218 1.554a36.467 36.467 0 0 1 2.971 3.983c.427.661.833 1.323 1.217 1.984H36.394v4.148h6.77a36.878 36.878 0 0 0 5.422 11.56 42.918 42.918 0 0 0 4.591 5.497c-4.687 4.017-10.548 6.932-17.582 8.744l2.247 3.709c7.746-2.44 13.861-5.67 18.347-9.689Zm-9.047-19.82h16.991c-1.86 5.668-4.528 10.402-8 14.204a42.526 42.526 0 0 1-4.247-4.922c-2.126-2.883-3.71-5.977-4.744-9.283Z"/></svg>

View File

@@ -131,14 +131,15 @@ Saving/GitService/Gitea/Caption: Gitea Saver
Saving/GitService/Gitea/Password: Personal access token for API (via Giteas web interface: `Settings | Applications | Generate New Token`)
Saving/TiddlySpot/Advanced/Heading: Advanced Settings
Saving/TiddlySpot/BackupDir: Backup Directory
Saving/TiddlySpot/ControlPanel: ~TiddlyHost Control Panel
Saving/TiddlySpot/ControlPanel: ~TiddlySpot Control Panel
Saving/TiddlySpot/Backups: Backups
Saving/TiddlySpot/Caption: ~TiddlyHost Saver
Saving/TiddlySpot/Description: These settings are only used when saving to [[TiddlyHost|https://tiddlyhost.com]] or a compatible remote server. See [[here|https://github.com/simonbaird/tiddlyhost/wiki/TiddlySpot-Saver-configuration-for-Tiddlyhost-and-Tiddlyspot]] for information on ~TiddlyHost saving configuration
Saving/TiddlySpot/Caption: ~TiddlySpot Saver
Saving/TiddlySpot/Description: These settings are only used when saving to [[TiddlySpot|http://tiddlyspot.com]], [[TiddlyHost|https://tiddlyhost.com]], or a compatible remote server. See [[here|https://github.com/simonbaird/tiddlyhost/wiki/TiddlySpot-Saver-configuration-for-Tiddlyhost-and-Tiddlyspot]] for information on ~TiddlySpot and ~TiddlyHost saving configuration.
Saving/TiddlySpot/Filename: Upload Filename
Saving/TiddlySpot/Heading: ~TiddlyHost
Saving/TiddlySpot/Hint: //The server URL defaults to `http://<wikiname>.tiddlyspot.com/` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//
Saving/TiddlySpot/Heading: ~TiddlySpot
Saving/TiddlySpot/Hint: //The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//
Saving/TiddlySpot/Password: Password
Saving/TiddlySpot/ReadOnly: Note that [[TiddlySpot|http://tiddlyspot.com]] no longer allows the creation of new sites. For new sites, you can use [[TiddlyHost|https://tiddlyhost.com]], a new hosting service that replaces ~TiddlySpot.
Saving/TiddlySpot/ServerURL: Server URL
Saving/TiddlySpot/UploadDir: Upload Directory
Saving/TiddlySpot/UserName: Wiki Name
@@ -189,8 +190,6 @@ Settings/DefaultSidebarTab/Caption: Default Sidebar Tab
Settings/DefaultSidebarTab/Hint: Specify which sidebar tab is displayed by default
Settings/DefaultMoreSidebarTab/Caption: Default More Sidebar Tab
Settings/DefaultMoreSidebarTab/Hint: Specify which More sidebar tab is displayed by default
Settings/DefaultTiddlerInfoTab/Caption: Default Tiddler Info Tab
Settings/DefaultTiddlerInfoTab/Hint: Specify which tab is displayed by default when tiddler info panel is opened
Settings/LinkToBehaviour/Caption: Tiddler Opening Behaviour
Settings/LinkToBehaviour/InsideRiver/Hint: Navigation from //within// the story river
Settings/LinkToBehaviour/OutsideRiver/Hint: Navigation from //outside// the story river
@@ -252,6 +251,3 @@ ViewTemplateSubtitle/Caption: View Template Subtitle
ViewTemplateSubtitle/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the subtitle of a tiddler.
ViewTemplateTags/Caption: View Template Tags
ViewTemplateTags/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the tags area of a tiddler.
WikiInformation/Caption: Wiki Information
WikiInformation/Hint: This page summarises high level information about the configuration of this ~TiddlyWiki. It is designed to enable users to quickly share relevant aspects of the configuration of their ~TiddlyWiki with others, for example when seeking help in one of the forums. No private or personal information is included, and nothing is shared without being explicitly copied and pasted elsewhere
WikiInformation/Drag/Caption: Drag this link to copy this tool to another wiki

View File

@@ -4,12 +4,12 @@ _canonical_uri: The full URI of an external image tiddler
author: Name of the author of a plugin
bag: The name of the bag from which a tiddler came
caption: The text to be displayed on a tab or button
class: The CSS class applied to a tiddler when rendering it. Also used for Modals
class: The CSS class applied to a tiddler when rendering it - see [[Custom styles by user-class]]. Also used for [[Modals]]
code-body: The view template will display the tiddler as code if set to ''yes''
color: The CSS color value associated with a tiddler
component: The name of the component responsible for an alert tiddler
component: The name of the component responsible for an [[alert tiddler|AlertMechanism]]
core-version: For a plugin, indicates what version of TiddlyWiki with which it is compatible
current-tiddler: Used to cache the top tiddler in a history list
current-tiddler: Used to cache the top tiddler in a [[history list|HistoryMechanism]]
created: The date a tiddler was created
creator: The name of the person who created a tiddler
dependents: For a plugin, lists the dependent plugin titles

View File

@@ -0,0 +1,13 @@
title: $:/languages/en-GB/icon
type: image/svg+xml
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 30" width="1200" height="600">
<clipPath id="t">
<path d="M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"/>
</clipPath>
<path d="M0,0 v30 h60 v-30 z" fill="#00247d"/>
<path d="M0,0 L60,30 M60,0 L0,30" stroke="#fff" stroke-width="6"/>
<path d="M0,0 L60,30 M60,0 L0,30" clip-path="url(#t)" stroke="#cf142b" stroke-width="4"/>
<path d="M30,0 v30 M0,15 h60" stroke="#fff" stroke-width="10"/>
<path d="M30,0 v30 M0,15 h60" stroke="#cf142b" stroke-width="6"/>
</svg>

View File

@@ -0,0 +1,117 @@
/*\
title: $:/core/modules/background-actions.js
type: application/javascript
module-type: global
Class to dispatch actions when filters change
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
function BackgroundActionDispatcher(filterTracker,wiki) {
var self = this;
this.filterTracker = filterTracker;
this.wiki = wiki;
this.nextTrackedFilterId = 1;
this.trackedFilters = Object.create(null); // Hashmap by id
// Track the filter for the background actions
this.filterTracker.track({
filterString: "[all[tiddlers+shadows]tag[$:/tags/BackgroundAction]!is[draft]]",
fnEnter: function fnEnter(title) {
return self.trackFilter(title);
},
fnLeave: function fnLeave(title,enterValue) {
self.untrackFilter(enterValue);
},
fnChange: function fnChange(title,enterValue) {
self.untrackFilter(enterValue);
return self.trackFilter(title);
},
fnProcess: function fnProcess(changes) {
self.process(changes);
}
});
}
BackgroundActionDispatcher.prototype.trackFilter = function(title) {
var tiddler = this.wiki.getTiddler(title),
id = this.nextTrackedFilterId++,
tracker = new BackgroundActionTracker({
wiki: this.wiki,
title: title,
trackFilter: tiddler.fields["track-filter"],
actions: tiddler.fields.text
});
this.trackedFilters[id] = tracker;
return id;
};
BackgroundActionDispatcher.prototype.untrackFilter = function(enterValue) {
var tracker = this.trackedFilters[enterValue];
if(tracker) {
tracker.destroy();
}
delete this.trackedFilters[enterValue];
};
BackgroundActionDispatcher.prototype.process = function(changes) {
for(var id in this.trackedFilters) {
this.trackedFilters[id].process(changes);
}
};
/*
Represents an individual tracked filter. Options include:
wiki: wiki to use
title: title of the tiddler being tracked
trackFilter: filter string to track changes
actions: actions to be executed when the filter changes
*/
function BackgroundActionTracker(options) {
var self = this;
this.wiki = options.wiki;
this.title = options.title;
this.trackFilter = options.trackFilter;
this.actions = options.actions
this.filterTracker = new $tw.FilterTracker(this.wiki);
this.hasChanged = false;
this.trackerID = this.filterTracker.track({
filterString: this.trackFilter,
fnEnter: function(title) {
self.hasChanged = true;
},
fnLeave: function(title,enterValue) {
self.hasChanged = true;
},
fnProcess: function(changes) {
if(self.hasChanged) {
self.hasChanged = false;
self.wiki.invokeActionString(
self.actions,
null,
{
title: self.title
},{
parentWidget: $tw.rootWidget
}
);
}
}
});
}
BackgroundActionTracker.prototype.process = function(changes) {
this.filterTracker.handleChangeEvent(changes);
};
BackgroundActionTracker.prototype.destroy = function() {
this.filterTracker.untrack(this.trackerID);
};
exports.BackgroundActionDispatcher = BackgroundActionDispatcher;
})();

View File

@@ -6,7 +6,10 @@ module-type: global
The $tw.Commander class is a command interpreter
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -170,3 +173,5 @@ Commander.initCommands = function(moduleType) {
};
exports.Commander = Commander;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to build a build target
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -45,3 +48,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Clear password for crypto operations
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -26,3 +29,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -7,6 +7,10 @@ Runs the commands returned from a filter
\*/
(function() {
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -34,3 +38,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to delete tiddlers
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -35,3 +38,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to list the available editions
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -32,3 +35,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Commands to fetch external tiddlers
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -168,3 +171,5 @@ Command.prototype.processBody = function(body,type,options,url) {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Help command
\*/
(function(){
/*jshint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -34,3 +37,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to import tiddlers from a file
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -41,3 +44,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to initialise an empty wiki folder
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -52,3 +55,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Listen for HTTP requests and serve tiddlers
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var Server = require("$:/core/modules/server/server.js").Server;
@@ -41,3 +44,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to load tiddlers from a file or directory
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -44,3 +47,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to pack all of the plugins in the library into a plugin tiddler of type "library"
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -38,3 +41,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to set the default output location (defaults to current working directory)
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -31,3 +34,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Save password for crypto operations
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -29,3 +32,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Render individual tiddlers and save the results to the specified files
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js");
@@ -63,3 +66,6 @@ Render individual tiddlers and save the results to the specified files
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to render a tiddler and save it to a file
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -50,3 +53,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to render several tiddlers to a folder of files
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js");
@@ -62,3 +65,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Saves individual tiddlers in their raw text or binary format to the specified files
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -61,3 +64,6 @@ Saves individual tiddlers in their raw text or binary format to the specified fi
};
exports.Command = Command;
})();

View File

@@ -16,7 +16,10 @@ The pathname specifies the pathname to the folder in which the JSON files should
The skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -91,3 +94,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to save the content of a tiddler to a file
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -44,3 +47,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to save several tiddlers to a folder of files
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js");
@@ -49,3 +52,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -15,7 +15,10 @@ The following options are supported:
Supports backward compatibility with --savewikifolder <wikifolderpath> [<filter>] [ [<name>=<value>] ]*
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -218,3 +221,5 @@ WikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Deprecated legacy command for serving tiddlers
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var Server = require("$:/core/modules/server/server.js").Server;
@@ -48,3 +51,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js");
@@ -51,3 +54,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Command to extract the shadow tiddlers from within a plugin
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -37,3 +40,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Verbose command
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -27,3 +30,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: command
Version command
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
@@ -25,3 +28,5 @@ Command.prototype.execute = function() {
};
exports.Command = Command;
})();

View File

@@ -6,7 +6,10 @@ module-type: config
Core configuration constants
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.preferences = {};
@@ -34,3 +37,5 @@ 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(",");
})();

View File

@@ -6,7 +6,10 @@ module-type: tiddlerdeserializer
Functions to deserialise tiddlers from a block of text
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["application/x-tiddler-html-div"] = function(text,fields) {
@@ -178,3 +181,5 @@ var deserializeTiddlerDiv = function(text /* [,fields] */) {
}
return undefined;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: library
Text editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea
\*/
(function(){
/*jslint node: true,browser: true */
/*global $tw: false */
"use strict";
var HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height";
@@ -270,3 +273,5 @@ FramedEngine.prototype.executeTextOperation = function(operation) {
};
exports.FramedEngine = FramedEngine;
})();

View File

@@ -6,7 +6,10 @@ module-type: library
Text editor engine based on a simple input or textarea tag
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var HEIGHT_VALUE_TITLE = "$:/config/TextEditor/EditorHeight/Height";
@@ -169,3 +172,5 @@ SimpleEngine.prototype.executeTextOperation = function(operation) {
};
exports.SimpleEngine = SimpleEngine;
})();

View File

@@ -6,7 +6,10 @@ module-type: library
Factory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var DEFAULT_MIN_TEXT_AREA_HEIGHT = "100px"; // Minimum height of textareas in pixels
@@ -383,3 +386,5 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
}
exports.editTextWidgetFactory = editTextWidgetFactory;
})();

View File

@@ -6,7 +6,10 @@ module-type: bitmapeditoroperation
Bitmap editor operation to clear the image
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["clear"] = function(event) {
@@ -17,3 +20,5 @@ exports["clear"] = function(event) {
// Save changes
this.strokeEnd();
};
})();

View File

@@ -6,7 +6,10 @@ module-type: bitmapeditoroperation
Bitmap editor operation to resize the image
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["resize"] = function(event) {
@@ -22,3 +25,5 @@ exports["resize"] = function(event) {
// Save the image into the tiddler
this.saveChanges();
};
})();

View File

@@ -6,7 +6,10 @@ module-type: bitmapeditoroperation
Bitmap editor operation to rotate the image left by 90 degrees
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["rotate-left"] = function(event) {
@@ -17,3 +20,5 @@ exports["rotate-left"] = function(event) {
// Save the image into the tiddler
this.saveChanges();
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to excise the selection to a new tiddler
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
function isMarkdown(mediaType) {
@@ -50,3 +53,5 @@ exports["excise"] = function(event,operation) {
operation.newSelStart = operation.selStart;
operation.newSelEnd = operation.selStart + operation.replacement.length;
};
})();

View File

@@ -4,9 +4,14 @@ type: application/javascript
module-type: texteditoroperation
Simply focus the Text editor
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["focus-editor"] = function(event,operation) {
operation = null;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation insert text at the caret position. If there is a selection it is replaced.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["insert-text"] = function(event,operation) {
@@ -16,3 +19,5 @@ exports["insert-text"] = function(event,operation) {
operation.newSelStart = operation.selStart + operation.replacement.length;
operation.newSelEnd = operation.newSelStart;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to make a link
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["make-link"] = function(event,operation) {
@@ -22,3 +25,5 @@ exports["make-link"] = function(event,operation) {
operation.newSelStart = operation.selStart + operation.replacement.length;
operation.newSelEnd = operation.newSelStart;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to add a prefix to the selected lines
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["prefix-lines"] = function(event,operation) {
@@ -48,3 +51,5 @@ exports["prefix-lines"] = function(event,operation) {
operation.newSelEnd = operation.newSelStart + operation.replacement.length;
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to replace the entire text
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["replace-all"] = function(event,operation) {
@@ -16,3 +19,5 @@ exports["replace-all"] = function(event,operation) {
operation.newSelStart = 0;
operation.newSelEnd = operation.replacement.length;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to replace the selection
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["replace-selection"] = function(event,operation) {
@@ -16,3 +19,5 @@ exports["replace-selection"] = function(event,operation) {
operation.newSelStart = operation.selStart;
operation.newSelEnd = operation.selStart + operation.replacement.length;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to save the current selection in a specified tiddler
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["save-selection"] = function(event,operation) {
@@ -16,3 +19,5 @@ exports["save-selection"] = function(event,operation) {
this.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to wrap the selected lines with a prefix and suffix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["wrap-lines"] = function(event,operation) {
@@ -40,3 +43,5 @@ exports["wrap-lines"] = function(event,operation) {
operation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: texteditoroperation
Text editor operation to wrap the selection with the specified prefix and suffix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["wrap-selection"] = function(event,operation) {
@@ -131,3 +134,5 @@ exports["wrap-selection"] = function(event,operation) {
addPrefixSuffix();
}
};
})();

View File

@@ -0,0 +1,108 @@
/*\
title: $:/core/modules/filter-tracker.js
type: application/javascript
module-type: global
Class to track the results of a filter string
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
function FilterTracker(wiki) {
this.wiki = wiki;
this.trackers = [];
this.nextTrackerId = 1;
}
FilterTracker.prototype.handleChangeEvent = function(changes) {
this.processTrackers();
this.processChanges(changes);
};
/*
Add a tracker to the filter tracker. Returns null if any of the parameters are invalid, or a tracker id if the tracker was added successfully. Options include:
filterString: the filter string to track
fnEnter: function to call when a title enters the filter results. Called even if the tiddler does not actually exist. Called as (title), and should return a truthy value that is stored in the tracker as the "enterValue"
fnLeave: function to call when a title leaves the filter results. Called as (title,enterValue)
fnChange: function to call when a tiddler changes in the filter results. Only called for filter results that identify a tiddler or shadow tiddler. Called as (title,enterValue), and may optionally return a replacement enterValue
fnProcess: function to call each time the tracker is processed, after any enter, leave or change functions are called. Called as (changes)
*/
FilterTracker.prototype.track = function(options) {
// Add the tracker details
var tracker = {
id: this.nextTrackerId++,
filterString: options.filterString,
fnEnter: options.fnEnter,
fnLeave: options.fnLeave,
fnChange: options.fnChange,
fnProcess: options.fnProcess,
previousResults: [], // Results from the previous time the tracker was processed
resultValues: {} // Map by title to the value returned by fnEnter
};
this.trackers.push(tracker);
// Process the tracker
this.processTracker(this.trackers.length - 1);
return tracker.id;
};
FilterTracker.prototype.untrack = function(id) {
for(var t=0; t<this.trackers.length; t++) {
if(this.trackers[t].id === id) {
this.trackers.splice(t,1);
break;
}
}
};
FilterTracker.prototype.processTrackers = function() {
for(var t=0; t<this.trackers.length; t++) {
this.processTracker(t);
}
};
FilterTracker.prototype.processTracker = function(index) {
var tracker = this.trackers[index];
var results = [];
// Evaluate the filter and remove duplicate results
$tw.utils.each(this.wiki.filterTiddlers(tracker.filterString),function(title) {
$tw.utils.pushTop(results,title);
});
// Process the newly entered results
$tw.utils.each(results,function(title) {
if(tracker.previousResults.indexOf(title) === -1 && !tracker.resultValues[title] && tracker.fnEnter) {
tracker.resultValues[title] = tracker.fnEnter(title) || true;
}
});
// Process the results that have just left
$tw.utils.each(tracker.previousResults,function(title) {
if(results.indexOf(title) === -1 && tracker.resultValues[title] && tracker.fnLeave) {
tracker.fnLeave(title,tracker.resultValues[title]);
delete tracker.resultValues[title];
}
});
// Update the previous results
tracker.previousResults = results;
};
FilterTracker.prototype.processChanges = function(changes) {
for(var t=0; t<this.trackers.length; t++) {
var tracker = this.trackers[t];
$tw.utils.each(changes,function(change,title) {
if(title && tracker.previousResults.indexOf(title) !== -1 && tracker.fnChange) {
// Call the change function and if it doesn't return a value then keep the old value
tracker.resultValues[title] = tracker.fnChange(title,tracker.resultValues[title]) || tracker.resultValues[title];
}
});
if(tracker.fnProcess) {
tracker.fnProcess(changes);
}
}
};
exports.FilterTracker = FilterTracker;
})();

View File

@@ -7,7 +7,10 @@ Union of sets without de-duplication.
Equivalent to = filter run prefix.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -18,3 +21,5 @@ exports.all = function(operationSubFunction) {
results.push.apply(results, operationSubFunction(source,widget));
};
};
})();

View File

@@ -7,7 +7,10 @@ Intersection of sets.
Equivalent to + filter run prefix.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -21,3 +24,5 @@ exports.and = function(operationSubFunction,options) {
results.pushTop(operationSubFunction(source,widget));
};
};
})();

View File

@@ -3,7 +3,10 @@ title: $:/core/modules/filterrunprefixes/cascade.js
type: application/javascript
module-type: filterrunprefix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -36,3 +39,5 @@ exports.cascade = function(operationSubFunction,options) {
}
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filterrunprefix
Equivalent to ~ filter run prefix.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -20,3 +23,5 @@ exports.else = function(operationSubFunction) {
}
};
};
})();

View File

@@ -7,7 +7,10 @@ Difference of sets.
Equivalent to - filter run prefix.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -18,3 +21,5 @@ exports.except = function(operationSubFunction) {
results.remove(operationSubFunction(source,widget));
};
};
})();

View File

@@ -4,7 +4,10 @@ type: application/javascript
module-type: filterrunprefix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -32,3 +35,5 @@ exports.filter = function(operationSubFunction,options) {
}
}
};
})();

View File

@@ -4,7 +4,10 @@ type: application/javascript
module-type: filterrunprefix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -24,3 +27,5 @@ exports.intersection = function(operationSubFunction) {
}
};
};
})();

View File

@@ -3,7 +3,10 @@ title: $:/core/modules/filterrunprefixes/map.js
type: application/javascript
module-type: filterrunprefix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -37,3 +40,5 @@ exports.map = function(operationSubFunction,options) {
}
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filterrunprefix
Equivalent to a filter run with no prefix.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -17,3 +20,5 @@ exports.or = function(operationSubFunction) {
results.pushTop(operationSubFunction(source,widget));
};
};
})();

View File

@@ -3,7 +3,10 @@ title: $:/core/modules/filterrunprefixes/reduce.js
type: application/javascript
module-type: filterrunprefix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -33,3 +36,5 @@ exports.reduce = function(operationSubFunction,options) {
}
}
};
})();

View File

@@ -4,7 +4,10 @@ type: application/javascript
module-type: filterrunprefix
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -45,3 +48,5 @@ exports.sort = function(operationSubFunction,options) {
}
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filterrunprefix
Replace results of previous runs unless empty
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -25,3 +28,5 @@ exports.then = function(operationSubFunction) {
}
};
};
})();

View File

@@ -6,7 +6,10 @@ module-type: wikimethod
Adds tiddler filtering methods to the $tw.Wiki object.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widgetClass = require("$:/core/modules/widgets/widget.js").widget;
@@ -248,7 +251,8 @@ exports.compileFilter = function(filterString) {
// Create a function for the chain of operators in the operation
var operationSubFunction = function(source,widget) {
var accumulator = source,
results = [];
results = [],
currTiddlerTitle = widget && widget.getVariable("currentTiddler");
$tw.utils.each(operation.operators,function(operator) {
var operands = [],
operatorFunction;
@@ -264,7 +268,6 @@ exports.compileFilter = function(filterString) {
}
$tw.utils.each(operator.operands,function(operand) {
if(operand.indirect) {
var currTiddlerTitle = widget && widget.getVariable("currentTiddler");
operand.value = self.getTextReference(operand.text,"",currTiddlerTitle);
} else if(operand.variable) {
var varTree = $tw.utils.parseFilterVariable(operand.text);
@@ -364,3 +367,5 @@ exports.compileFilter = function(filterString) {
this.filterCacheCount++;
return fnMeasured;
};
})();

View File

@@ -8,7 +8,10 @@ especially useful in contexts where only a filter expression is allowed
and macro substitution isn't available.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -21,3 +24,5 @@ exports.addprefix = function(source,operator,options) {
});
return results;
};
})();

View File

@@ -8,7 +8,10 @@ especially useful in contexts where only a filter expression is allowed
and macro substitution isn't available.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -21,3 +24,5 @@ exports.addsuffix = function(source,operator,options) {
});
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator returning the tiddler from the current list that is after the tiddler named in the operand.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -24,3 +27,5 @@ exports.after = function(source,operator,options) {
return [results[index + 1]];
}
};
})();

View File

@@ -8,7 +8,10 @@ Filter operator for selecting tiddlers
[all[shadows+tiddlers]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var allFilterOperators;
@@ -51,3 +54,5 @@ exports.all = function(source,operator,options) {
}
return results.makeTiddlerIterator(options.wiki);
};
})();

View File

@@ -6,7 +6,10 @@ module-type: allfilteroperator
Filter function for [all[current]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -20,3 +23,5 @@ exports.current = function(source,prefix,options) {
return [];
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: allfilteroperator
Filter function for [all[missing]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -15,3 +18,5 @@ Export our filter function
exports.missing = function(source,prefix,options) {
return options.wiki.getMissingTitles();
};
})();

View File

@@ -6,7 +6,10 @@ module-type: allfilteroperator
Filter function for [all[orphans]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -15,3 +18,5 @@ Export our filter function
exports.orphans = function(source,prefix,options) {
return options.wiki.getOrphanTitles();
};
})();

View File

@@ -6,7 +6,10 @@ module-type: allfilteroperator
Filter function for [all[shadows]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -15,3 +18,5 @@ Export our filter function
exports.shadows = function(source,prefix,options) {
return options.wiki.allShadowTitles();
};
})();

View File

@@ -6,7 +6,10 @@ module-type: allfilteroperator
Filter function for [all[tags]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -15,3 +18,5 @@ Export our filter function
exports.tags = function(source,prefix,options) {
return Object.keys(options.wiki.getTagMap());
};
})();

View File

@@ -6,7 +6,10 @@ module-type: allfilteroperator
Filter function for [all[tiddlers]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -15,3 +18,5 @@ Export our filter function
exports.tiddlers = function(source,prefix,options) {
return options.wiki.allTitles();
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for returning all the backlinks from a tiddler
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -19,3 +22,5 @@ exports.backlinks = function(source,operator,options) {
});
return results.makeTiddlerIterator(options.wiki);
};
})();

View File

@@ -6,6 +6,10 @@ module-type: filteroperator
Filter operator for returning all the backtranscludes from a tiddler
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -18,3 +22,5 @@ exports.backtranscludes = function(source,operator,options) {
});
return results.makeTiddlerIterator(options.wiki);
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator returning the tiddler from the current list that is before the tiddler named in the operand.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -24,3 +27,5 @@ exports.before = function(source,operator,options) {
return [results[index - 1]];
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for returning the names of the commands available in this wiki
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -20,3 +23,5 @@ exports.commands = function(source,operator,options) {
results.sort();
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
General purpose comparison operator
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.compare = function(source,operator,options) {
@@ -33,3 +36,5 @@ var modes = {
"lteq": function(value) {return value <= 0;},
"lt": function(value) {return value < 0;}
}
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for finding values in array fields
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -38,3 +41,5 @@ exports.contains = function(source,operator,options) {
}
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator returning the number of entries in the current list.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -19,3 +22,5 @@ exports.count = function(source,operator,options) {
});
return [count + ""];
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operators for cryptography, using the Stanford JavaScript library
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.sha256 = function(source,operator,options) {
@@ -17,3 +20,5 @@ exports.sha256 = function(source,operator,options) {
});
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator that selects tiddlers with a specified date field within a specified date interval.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -43,3 +46,5 @@ exports.days = function(source,operator,options) {
}
return results;
};
})();

View File

@@ -4,7 +4,10 @@ type: application/javascript
module-type: filteroperator
Filter operator for deserializing string data into JSON representing tiddlers
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports["deserialize"] = function(source,operator,options) {
@@ -32,3 +35,5 @@ exports["deserialize"] = function(source,operator,options) {
}
return results;
}
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for returning the names of the deserializers in this wiki
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -20,3 +23,5 @@ exports.deserializers = function(source,operator,options) {
results.sort();
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter function for [duplicateslugs[]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -29,3 +32,5 @@ exports.duplicateslugs = function(source,operator,options) {
});
return results;
};
})();

View File

@@ -7,7 +7,10 @@ Filter operator that selects one tiddler for each unique value of the specified
With suffix "list", selects all tiddlers that are values in a specified list field.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -60,3 +63,5 @@ exports.each = function(source,operator,options) {
}
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator that selects one tiddler for each unique day covered by the specified date field
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -32,3 +35,5 @@ exports.eachday = function(source,operator,options) {
});
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for returning the descriptions of the specified edition names
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -26,3 +29,5 @@ exports.editiondescription = function(source,operator,options) {
}
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for returning the names of the available editions in this wiki
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -25,3 +28,5 @@ exports.editions = function(source,operator,options) {
}
return results;
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for replacing an empty input list with a constant, passing a non-empty input list straight through
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -23,3 +26,5 @@ exports.else = function(source,operator,options) {
return results;
}
};
})();

View File

@@ -6,7 +6,10 @@ module-type: filteroperator
Filter operator for applying decodeURIComponent() to each item.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
@@ -113,3 +116,5 @@ exports.escapecss = function(source,operator,options) {
});
return results;
};
})();

Some files were not shown because too many files have changed in this diff Show More