mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-02-26 11:59:50 +00:00
Compare commits
23 Commits
debugging-
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0d99f3bd3 | ||
|
|
91e7a62c13 | ||
|
|
9f7763710e | ||
|
|
b673651103 | ||
|
|
49faefcca5 | ||
|
|
75c26b46c6 | ||
|
|
add3d425b5 | ||
|
|
c23a0bedfd | ||
|
|
36b20e02a3 | ||
|
|
ab6172981c | ||
|
|
431b7fa3bf | ||
|
|
1c1f157079 | ||
|
|
ac19f300a9 | ||
|
|
9012b00806 | ||
|
|
07634d6595 | ||
|
|
785086e0a5 | ||
|
|
08f2b8bdf4 | ||
|
|
c305eb01eb | ||
|
|
71462143bf | ||
|
|
8cd6bbc075 | ||
|
|
6fc65c1560 | ||
|
|
ab29f17d35 | ||
|
|
5ae4770317 |
2
.github/workflows/pr-check-build-size.yml
vendored
2
.github/workflows/pr-check-build-size.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: build-size-check
|
- name: build-size-check
|
||||||
id: get_sizes
|
id: get_sizes
|
||||||
uses: TiddlyWiki/cerebrus@v6
|
uses: TiddlyWiki/cerebrus@v7
|
||||||
with:
|
with:
|
||||||
pr_number: ${{ github.event.pull_request.number }}
|
pr_number: ${{ github.event.pull_request.number }}
|
||||||
repo: ${{ github.repository }}
|
repo: ${{ github.repository }}
|
||||||
|
|||||||
2
.github/workflows/pr-comment-build-size.yml
vendored
2
.github/workflows/pr-comment-build-size.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Build and check size
|
- name: Build and check size
|
||||||
uses: TiddlyWiki/cerebrus@v6
|
uses: TiddlyWiki/cerebrus@v7
|
||||||
with:
|
with:
|
||||||
pr_number: ${{ inputs.pr_number }}
|
pr_number: ${{ inputs.pr_number }}
|
||||||
repo: ${{ github.repository }}
|
repo: ${{ github.repository }}
|
||||||
|
|||||||
2
.github/workflows/pr-validation.yml
vendored
2
.github/workflows/pr-validation.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
|||||||
|
|
||||||
# Step 2: Validate change notes
|
# Step 2: Validate change notes
|
||||||
- name: Validate Change Notes
|
- name: Validate Change Notes
|
||||||
uses: TiddlyWiki/cerebrus@v6
|
uses: TiddlyWiki/cerebrus@v7
|
||||||
with:
|
with:
|
||||||
pr_number: ${{ github.event.pull_request.number }}
|
pr_number: ${{ github.event.pull_request.number }}
|
||||||
repo: ${{ github.repository }}
|
repo: ${{ github.repository }}
|
||||||
|
|||||||
@@ -15,40 +15,40 @@ var fs = require("fs"),
|
|||||||
{ optimize } = require("svgo"),
|
{ optimize } = require("svgo"),
|
||||||
config = {
|
config = {
|
||||||
plugins: [
|
plugins: [
|
||||||
'cleanupAttrs',
|
"cleanupAttrs",
|
||||||
'removeDoctype',
|
"removeDoctype",
|
||||||
'removeXMLProcInst',
|
"removeXMLProcInst",
|
||||||
'removeComments',
|
"removeComments",
|
||||||
'removeMetadata',
|
"removeMetadata",
|
||||||
'removeTitle',
|
"removeTitle",
|
||||||
'removeDesc',
|
"removeDesc",
|
||||||
'removeUselessDefs',
|
"removeUselessDefs",
|
||||||
'removeEditorsNSData',
|
"removeEditorsNSData",
|
||||||
'removeEmptyAttrs',
|
"removeEmptyAttrs",
|
||||||
'removeHiddenElems',
|
"removeHiddenElems",
|
||||||
'removeEmptyText',
|
"removeEmptyText",
|
||||||
'removeEmptyContainers',
|
"removeEmptyContainers",
|
||||||
// 'removeViewBox',
|
// 'removeViewBox',
|
||||||
'cleanupEnableBackground',
|
"cleanupEnableBackground",
|
||||||
'convertStyleToAttrs',
|
"convertStyleToAttrs",
|
||||||
'convertColors',
|
"convertColors",
|
||||||
'convertPathData',
|
"convertPathData",
|
||||||
'convertTransform',
|
"convertTransform",
|
||||||
'removeUnknownsAndDefaults',
|
"removeUnknownsAndDefaults",
|
||||||
'removeNonInheritableGroupAttrs',
|
"removeNonInheritableGroupAttrs",
|
||||||
'removeUselessStrokeAndFill',
|
"removeUselessStrokeAndFill",
|
||||||
'removeUnusedNS',
|
"removeUnusedNS",
|
||||||
'cleanupIDs',
|
"cleanupIDs",
|
||||||
'cleanupNumericValues',
|
"cleanupNumericValues",
|
||||||
'moveElemsAttrsToGroup',
|
"moveElemsAttrsToGroup",
|
||||||
'moveGroupAttrsToElems',
|
"moveGroupAttrsToElems",
|
||||||
'collapseGroups',
|
"collapseGroups",
|
||||||
// 'removeRasterImages',
|
// 'removeRasterImages',
|
||||||
'mergePaths',
|
"mergePaths",
|
||||||
'convertShapeToPath',
|
"convertShapeToPath",
|
||||||
'sortAttrs',
|
"sortAttrs",
|
||||||
//'removeDimensions',
|
//'removeDimensions',
|
||||||
{name: 'removeAttrs', params: { attrs: '(stroke|fill)' } }
|
{name: "removeAttrs", params: { attrs: "(stroke|fill)" } }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ files.forEach(function(filename) {
|
|||||||
var newSVG = header.join("\n") + "\n\n" + result.data.replace("<<now "DD">>","<<now \"DD\">>");
|
var newSVG = header.join("\n") + "\n\n" + result.data.replace("<<now "DD">>","<<now \"DD\">>");
|
||||||
fs.writeFileSync(filepath,newSVG);
|
fs.writeFileSync(filepath,newSVG);
|
||||||
} else {
|
} else {
|
||||||
console.log("Error " + err + " with " + filename)
|
console.log("Error " + err + " with " + filename);
|
||||||
process.exit();
|
process.exit();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
60
boot/boot.js
60
boot/boot.js
@@ -12,8 +12,6 @@ On the server this file is executed directly to boot TiddlyWiki. In the browser,
|
|||||||
|
|
||||||
var _boot = (function($tw) {
|
var _boot = (function($tw) {
|
||||||
|
|
||||||
/*jslint node: true, browser: true */
|
|
||||||
/*global modules: false, $tw: false */
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// Include bootprefix if we're not given module data
|
// Include bootprefix if we're not given module data
|
||||||
@@ -37,7 +35,7 @@ if($tw.node) {
|
|||||||
$tw.boot.log = function(str) {
|
$tw.boot.log = function(str) {
|
||||||
$tw.boot.logMessages = $tw.boot.logMessages || [];
|
$tw.boot.logMessages = $tw.boot.logMessages || [];
|
||||||
$tw.boot.logMessages.push(str);
|
$tw.boot.logMessages.push(str);
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Check if an object has a property
|
Check if an object has a property
|
||||||
@@ -47,7 +45,7 @@ $tw.utils.hop = function(object,property) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/** @deprecated Use Array.isArray instead */
|
/** @deprecated Use Array.isArray instead */
|
||||||
$tw.utils.isArray = value => Array.isArray(value);
|
$tw.utils.isArray = (value) => Array.isArray(value);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Check if an array is equal by value and by reference.
|
Check if an array is equal by value and by reference.
|
||||||
@@ -127,7 +125,7 @@ $tw.utils.pushTop = function(array,value) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/** @deprecated Use instanceof Date instead */
|
/** @deprecated Use instanceof Date instead */
|
||||||
$tw.utils.isDate = value => value instanceof Date;
|
$tw.utils.isDate = (value) => value instanceof Date;
|
||||||
|
|
||||||
/** @deprecated Use array iterative methods instead */
|
/** @deprecated Use array iterative methods instead */
|
||||||
$tw.utils.each = function(object,callback) {
|
$tw.utils.each = function(object,callback) {
|
||||||
@@ -138,7 +136,7 @@ $tw.utils.each = function(object,callback) {
|
|||||||
return next !== false;
|
return next !== false;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Object.entries(object).every(entry => {
|
Object.entries(object).every((entry) => {
|
||||||
const next = callback(entry[1], entry[0], object);
|
const next = callback(entry[1], entry[0], object);
|
||||||
return next !== false;
|
return next !== false;
|
||||||
});
|
});
|
||||||
@@ -565,7 +563,7 @@ using a lowercase extension only.
|
|||||||
*/
|
*/
|
||||||
$tw.utils.getFileExtensionInfo = function(ext) {
|
$tw.utils.getFileExtensionInfo = function(ext) {
|
||||||
return ext ? $tw.config.fileExtensionInfo[ext.toLowerCase()] : null;
|
return ext ? $tw.config.fileExtensionInfo[ext.toLowerCase()] : null;
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Given an extension, get the correct encoding for that file.
|
Given an extension, get the correct encoding for that file.
|
||||||
@@ -588,7 +586,7 @@ var globalCheck =[
|
|||||||
" delete Object.prototype.__temp__;",
|
" delete Object.prototype.__temp__;",
|
||||||
" }",
|
" }",
|
||||||
" delete Object.prototype.__temp__;",
|
" delete Object.prototype.__temp__;",
|
||||||
].join('\n');
|
].join("\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Run code globally with specified context variables in scope
|
Run code globally with specified context variables in scope
|
||||||
@@ -616,7 +614,7 @@ $tw.utils.evalGlobal = function(code,context,filename,sandbox,allowGlobals) {
|
|||||||
fn = Function("return " + code + "\n\n//# sourceURL=" + filename)(); // See https://github.com/TiddlyWiki/TiddlyWiki5/issues/6839
|
fn = Function("return " + code + "\n\n//# sourceURL=" + filename)(); // See https://github.com/TiddlyWiki/TiddlyWiki5/issues/6839
|
||||||
} else {
|
} else {
|
||||||
if(sandbox){
|
if(sandbox){
|
||||||
fn = vm.runInContext(code,sandbox,filename)
|
fn = vm.runInContext(code,sandbox,filename);
|
||||||
} else {
|
} else {
|
||||||
fn = vm.runInThisContext(code,filename);
|
fn = vm.runInThisContext(code,filename);
|
||||||
}
|
}
|
||||||
@@ -727,7 +725,7 @@ $tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
|||||||
var self = this;
|
var self = this;
|
||||||
form.addEventListener("submit",function(event) {
|
form.addEventListener("submit",function(event) {
|
||||||
// Collect the form data
|
// Collect the form data
|
||||||
var data = {},t;
|
var data = {};
|
||||||
$tw.utils.each(form.elements,function(element) {
|
$tw.utils.each(form.elements,function(element) {
|
||||||
if(element.name && element.value) {
|
if(element.name && element.value) {
|
||||||
data[element.name] = element.value;
|
data[element.name] = element.value;
|
||||||
@@ -773,7 +771,7 @@ $tw.utils.PasswordPrompt.prototype.removePrompt = function(promptInfo) {
|
|||||||
promptInfo.form.parentNode.removeChild(promptInfo.form);
|
promptInfo.form.parentNode.removeChild(promptInfo.form);
|
||||||
this.setWrapperDisplay();
|
this.setWrapperDisplay();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Crypto helper object for encrypted content. It maintains the password text in a closure, and provides methods to change
|
Crypto helper object for encrypted content. It maintains the password text in a closure, and provides methods to change
|
||||||
@@ -812,7 +810,7 @@ $tw.utils.Crypto = function() {
|
|||||||
};
|
};
|
||||||
this.hasPassword = function() {
|
this.hasPassword = function() {
|
||||||
return !!currentPassword;
|
return !!currentPassword;
|
||||||
}
|
};
|
||||||
this.encrypt = function(text,password) {
|
this.encrypt = function(text,password) {
|
||||||
// set default ks:256 -- see: http://bitwiseshiftleft.github.io/sjcl/doc/convenience.js.html
|
// set default ks:256 -- see: http://bitwiseshiftleft.github.io/sjcl/doc/convenience.js.html
|
||||||
return callSjcl("encrypt",text,password,{v:1,iter:10000,ks:256,ts:64,mode:"ccm",adata:"",cipher:"aes"});
|
return callSjcl("encrypt",text,password,{v:1,iter:10000,ks:256,ts:64,mode:"ccm",adata:"",cipher:"aes"});
|
||||||
@@ -830,7 +828,7 @@ Execute the module named 'moduleName'. The name can optionally be relative to th
|
|||||||
$tw.modules.execute = function(moduleName,moduleRoot) {
|
$tw.modules.execute = function(moduleName,moduleRoot) {
|
||||||
var name = moduleName;
|
var name = moduleName;
|
||||||
if(moduleName.charAt(0) === ".") {
|
if(moduleName.charAt(0) === ".") {
|
||||||
name = $tw.utils.resolvePath(moduleName,moduleRoot)
|
name = $tw.utils.resolvePath(moduleName,moduleRoot);
|
||||||
}
|
}
|
||||||
if(!$tw.modules.titles[name]) {
|
if(!$tw.modules.titles[name]) {
|
||||||
if($tw.modules.titles[name + ".js"]) {
|
if($tw.modules.titles[name + ".js"]) {
|
||||||
@@ -891,7 +889,6 @@ $tw.modules.execute = function(moduleName,moduleRoot) {
|
|||||||
if(!moduleInfo) {
|
if(!moduleInfo) {
|
||||||
// We could not find the module on this path
|
// We could not find the module on this path
|
||||||
// Try to defer to browserify etc, or node
|
// Try to defer to browserify etc, or node
|
||||||
var deferredModule;
|
|
||||||
if($tw.browser) {
|
if($tw.browser) {
|
||||||
if(window.require) {
|
if(window.require) {
|
||||||
try {
|
try {
|
||||||
@@ -1146,8 +1143,7 @@ enableIndexers - Array of indexer names to enable, or null to use all available
|
|||||||
*/
|
*/
|
||||||
$tw.Wiki = function(options) {
|
$tw.Wiki = function(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
var self = this,
|
var tiddlers = Object.create(null), // Hashmap of tiddlers
|
||||||
tiddlers = Object.create(null), // Hashmap of tiddlers
|
|
||||||
tiddlerTitles = null, // Array of tiddler titles
|
tiddlerTitles = null, // Array of tiddler titles
|
||||||
getTiddlerTitles = function() {
|
getTiddlerTitles = function() {
|
||||||
if(!tiddlerTitles) {
|
if(!tiddlerTitles) {
|
||||||
@@ -1201,7 +1197,7 @@ $tw.Wiki = function(options) {
|
|||||||
shadow: this.isShadowTiddler(title),
|
shadow: this.isShadowTiddler(title),
|
||||||
exists: this.tiddlerExists(title)
|
exists: this.tiddlerExists(title)
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
// Save the new tiddler
|
// Save the new tiddler
|
||||||
tiddlers[title] = tiddler;
|
tiddlers[title] = tiddler;
|
||||||
// Check we've got the title
|
// Check we've got the title
|
||||||
@@ -1211,7 +1207,7 @@ $tw.Wiki = function(options) {
|
|||||||
tiddler: tiddler,
|
tiddler: tiddler,
|
||||||
shadow: this.isShadowTiddler(title),
|
shadow: this.isShadowTiddler(title),
|
||||||
exists: this.tiddlerExists(title)
|
exists: this.tiddlerExists(title)
|
||||||
}
|
};
|
||||||
// Update indexes
|
// Update indexes
|
||||||
this.clearCache(title);
|
this.clearCache(title);
|
||||||
this.clearGlobalCache();
|
this.clearGlobalCache();
|
||||||
@@ -1236,7 +1232,7 @@ $tw.Wiki = function(options) {
|
|||||||
shadow: this.isShadowTiddler(title),
|
shadow: this.isShadowTiddler(title),
|
||||||
exists: this.tiddlerExists(title)
|
exists: this.tiddlerExists(title)
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
// Delete the tiddler
|
// Delete the tiddler
|
||||||
delete tiddlers[title];
|
delete tiddlers[title];
|
||||||
// Delete it from the list of titles
|
// Delete it from the list of titles
|
||||||
@@ -1251,7 +1247,7 @@ $tw.Wiki = function(options) {
|
|||||||
tiddler: this.getTiddler(title),
|
tiddler: this.getTiddler(title),
|
||||||
shadow: this.isShadowTiddler(title),
|
shadow: this.isShadowTiddler(title),
|
||||||
exists: this.tiddlerExists(title)
|
exists: this.tiddlerExists(title)
|
||||||
}
|
};
|
||||||
// Update indexes
|
// Update indexes
|
||||||
this.clearCache(title);
|
this.clearCache(title);
|
||||||
this.clearGlobalCache();
|
this.clearGlobalCache();
|
||||||
@@ -1439,8 +1435,7 @@ $tw.Wiki = function(options) {
|
|||||||
|
|
||||||
// Unregister the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting unregistering to an array of tiddler titles. Returns an array of the titles affected
|
// Unregister the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting unregistering to an array of tiddler titles. Returns an array of the titles affected
|
||||||
this.unregisterPluginTiddlers = function(pluginType,titles) {
|
this.unregisterPluginTiddlers = function(pluginType,titles) {
|
||||||
var self = this,
|
var unregisteredTitles = [];
|
||||||
unregisteredTitles = [];
|
|
||||||
// Remove any previous registered plugins of this type
|
// Remove any previous registered plugins of this type
|
||||||
for(var t=pluginTiddlers.length-1; t>=0; t--) {
|
for(var t=pluginTiddlers.length-1; t>=0; t--) {
|
||||||
var tiddler = pluginTiddlers[t];
|
var tiddler = pluginTiddlers[t];
|
||||||
@@ -1454,7 +1449,6 @@ $tw.Wiki = function(options) {
|
|||||||
|
|
||||||
// Unpack the currently registered plugins, creating shadow tiddlers for their constituent tiddlers
|
// Unpack the currently registered plugins, creating shadow tiddlers for their constituent tiddlers
|
||||||
this.unpackPluginTiddlers = function() {
|
this.unpackPluginTiddlers = function() {
|
||||||
var self = this;
|
|
||||||
// Sort the plugin titles by the `plugin-priority` field, if this field is missing, default to 1
|
// Sort the plugin titles by the `plugin-priority` field, if this field is missing, default to 1
|
||||||
pluginTiddlers.sort(function(a, b) {
|
pluginTiddlers.sort(function(a, b) {
|
||||||
var priorityA = "plugin-priority" in a.fields ? a.fields["plugin-priority"] : 1;
|
var priorityA = "plugin-priority" in a.fields ? a.fields["plugin-priority"] : 1;
|
||||||
@@ -1570,7 +1564,7 @@ $tw.Wiki.prototype.processSafeMode = function() {
|
|||||||
// Assemble a report tiddler
|
// Assemble a report tiddler
|
||||||
var titleReportTiddler = "TiddlyWiki Safe Mode",
|
var titleReportTiddler = "TiddlyWiki Safe Mode",
|
||||||
report = [];
|
report = [];
|
||||||
report.push("TiddlyWiki has been started in [[safe mode|https://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:")
|
report.push("TiddlyWiki has been started in [[safe mode|https://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:");
|
||||||
// Delete the overrides
|
// Delete the overrides
|
||||||
overrides.forEach(function(title) {
|
overrides.forEach(function(title) {
|
||||||
var tiddler = self.getTiddler(title),
|
var tiddler = self.getTiddler(title),
|
||||||
@@ -1579,7 +1573,7 @@ $tw.Wiki.prototype.processSafeMode = function() {
|
|||||||
self.addTiddler(new $tw.Tiddler(tiddler, {title: newTitle}));
|
self.addTiddler(new $tw.Tiddler(tiddler, {title: newTitle}));
|
||||||
report.push("* [[" + title + "|" + newTitle + "]]");
|
report.push("* [[" + title + "|" + newTitle + "]]");
|
||||||
});
|
});
|
||||||
report.push()
|
report.push();
|
||||||
this.addTiddler(new $tw.Tiddler({title: titleReportTiddler, text: report.join("\n\n")}));
|
this.addTiddler(new $tw.Tiddler({title: titleReportTiddler, text: report.join("\n\n")}));
|
||||||
// Set $:/DefaultTiddlers to point to our report
|
// Set $:/DefaultTiddlers to point to our report
|
||||||
this.addTiddler(new $tw.Tiddler({title: "$:/DefaultTiddlers", text: "[[" + titleReportTiddler + "]]"}));
|
this.addTiddler(new $tw.Tiddler({title: "$:/DefaultTiddlers", text: "[[" + titleReportTiddler + "]]"}));
|
||||||
@@ -2013,7 +2007,7 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) {
|
|||||||
value = $tw.utils.stringifyList(path.relative(rootPath, filename).split(path.sep).slice(0, -1));
|
value = $tw.utils.stringifyList(path.relative(rootPath, filename).split(path.sep).slice(0, -1));
|
||||||
break;
|
break;
|
||||||
case "filepath":
|
case "filepath":
|
||||||
value = path.relative(rootPath, filename).split(path.sep).join('/');
|
value = path.relative(rootPath, filename).split(path.sep).join("/");
|
||||||
break;
|
break;
|
||||||
case "filename":
|
case "filename":
|
||||||
value = path.basename(filename);
|
value = path.basename(filename);
|
||||||
@@ -2066,7 +2060,7 @@ $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
return arrayOfFiles;
|
return arrayOfFiles;
|
||||||
}
|
};
|
||||||
// Process the listed tiddlers
|
// Process the listed tiddlers
|
||||||
$tw.utils.each(filesInfo.tiddlers,function(tidInfo) {
|
$tw.utils.each(filesInfo.tiddlers,function(tidInfo) {
|
||||||
if(tidInfo.prefix && tidInfo.suffix) {
|
if(tidInfo.prefix && tidInfo.suffix) {
|
||||||
@@ -2175,7 +2169,7 @@ Returns the path of the plugin folder
|
|||||||
$tw.findLibraryItem = function(name,paths) {
|
$tw.findLibraryItem = function(name,paths) {
|
||||||
var pathIndex = 0;
|
var pathIndex = 0;
|
||||||
do {
|
do {
|
||||||
var pluginPath = path.resolve(paths[pathIndex],"./" + name)
|
var pluginPath = path.resolve(paths[pathIndex],"./" + name);
|
||||||
if(fs.existsSync(pluginPath) && fs.statSync(pluginPath).isDirectory()) {
|
if(fs.existsSync(pluginPath) && fs.statSync(pluginPath).isDirectory()) {
|
||||||
return pluginPath;
|
return pluginPath;
|
||||||
}
|
}
|
||||||
@@ -2534,7 +2528,7 @@ $tw.boot.initStartup = function(options) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
$tw.boot.loadStartup = function(options){
|
$tw.boot.loadStartup = function(options){
|
||||||
@@ -2551,7 +2545,7 @@ $tw.boot.loadStartup = function(options){
|
|||||||
}
|
}
|
||||||
// Give hooks a chance to modify the store
|
// Give hooks a chance to modify the store
|
||||||
$tw.hooks.invokeHook("th-boot-tiddlers-loaded");
|
$tw.hooks.invokeHook("th-boot-tiddlers-loaded");
|
||||||
}
|
};
|
||||||
$tw.boot.execStartup = function(options){
|
$tw.boot.execStartup = function(options){
|
||||||
// Unpack plugin tiddlers
|
// Unpack plugin tiddlers
|
||||||
$tw.wiki.readPluginInfo();
|
$tw.wiki.readPluginInfo();
|
||||||
@@ -2581,7 +2575,7 @@ $tw.boot.execStartup = function(options){
|
|||||||
$tw.boot.disabledStartupModules = $tw.boot.disabledStartupModules || [];
|
$tw.boot.disabledStartupModules = $tw.boot.disabledStartupModules || [];
|
||||||
// Repeatedly execute the next eligible task
|
// Repeatedly execute the next eligible task
|
||||||
$tw.boot.executeNextStartupTask(options.callback);
|
$tw.boot.executeNextStartupTask(options.callback);
|
||||||
}
|
};
|
||||||
/*
|
/*
|
||||||
Startup TiddlyWiki
|
Startup TiddlyWiki
|
||||||
*/
|
*/
|
||||||
@@ -2600,7 +2594,7 @@ $tw.addUnloadTask = function(task) {
|
|||||||
if($tw.unloadTasks.indexOf(task) === -1) {
|
if($tw.unloadTasks.indexOf(task) === -1) {
|
||||||
$tw.unloadTasks.push(task);
|
$tw.unloadTasks.push(task);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Execute the remaining eligible startup tasks
|
Execute the remaining eligible startup tasks
|
||||||
@@ -2647,7 +2641,7 @@ $tw.boot.executeNextStartupTask = function(callback) {
|
|||||||
}
|
}
|
||||||
taskIndex++;
|
taskIndex++;
|
||||||
}
|
}
|
||||||
if(typeof callback === 'function') {
|
if(typeof callback === "function") {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ Commander.prototype.executeNextCommand = function() {
|
|||||||
c = new command.Command(params,this);
|
c = new command.Command(params,this);
|
||||||
err = c.execute();
|
err = c.execute();
|
||||||
if(err && typeof err.then === "function") {
|
if(err && typeof err.then === "function") {
|
||||||
err.then(e => { e ? this.callback(e) : this.executeNextCommand(); });
|
err.then((e) => { e ? this.callback(e) : this.executeNextCommand(); });
|
||||||
} else if(err) {
|
} else if(err) {
|
||||||
this.callback(err);
|
this.callback(err);
|
||||||
} else {
|
} else {
|
||||||
@@ -120,7 +120,7 @@ Commander.prototype.executeNextCommand = function() {
|
|||||||
});
|
});
|
||||||
err = c.execute();
|
err = c.execute();
|
||||||
if(err && typeof err.then === "function") {
|
if(err && typeof err.then === "function") {
|
||||||
err.then(e => { if(e) this.callback(e); });
|
err.then((e) => { if(e) this.callback(e); });
|
||||||
} else if(err) {
|
} else if(err) {
|
||||||
this.callback(err);
|
this.callback(err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Command.prototype.execute = function() {
|
|||||||
if(!filter) {
|
if(!filter) {
|
||||||
return "No filter specified";
|
return "No filter specified";
|
||||||
}
|
}
|
||||||
var commands = this.commander.wiki.filterTiddlers(filter)
|
var commands = this.commander.wiki.filterTiddlers(filter);
|
||||||
if(commands.length === 0) {
|
if(commands.length === 0) {
|
||||||
return "No tiddlers found for filter '" + filter + "'";
|
return "No tiddlers found for filter '" + filter + "'";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ Command.prototype.execute = function() {
|
|||||||
if(this.params.length < 1) {
|
if(this.params.length < 1) {
|
||||||
return "Missing filter";
|
return "Missing filter";
|
||||||
}
|
}
|
||||||
var self = this,
|
var wiki = this.commander.wiki,
|
||||||
wiki = this.commander.wiki,
|
|
||||||
filter = this.params[0],
|
filter = this.params[0],
|
||||||
tiddlers = wiki.filterTiddlers(filter);
|
tiddlers = wiki.filterTiddlers(filter);
|
||||||
$tw.utils.each(tiddlers,function(title) {
|
$tw.utils.each(tiddlers,function(title) {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ Command.prototype.fetchFiles = function(options) {
|
|||||||
// Get the list of URLs
|
// Get the list of URLs
|
||||||
var urls;
|
var urls;
|
||||||
if(options.url) {
|
if(options.url) {
|
||||||
urls = [options.url]
|
urls = [options.url];
|
||||||
} else if(options.urlFilter) {
|
} else if(options.urlFilter) {
|
||||||
urls = this.commander.wiki.filterTiddlers(options.urlFilter);
|
urls = this.commander.wiki.filterTiddlers(options.urlFilter);
|
||||||
} else {
|
} else {
|
||||||
@@ -112,7 +112,7 @@ Command.prototype.fetchFile = function(url,options,callback,redirectCount) {
|
|||||||
if(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {
|
if(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {
|
||||||
return self.fetchFile(response.headers.location,options,callback,redirectCount + 1);
|
return self.fetchFile(response.headers.location,options,callback,redirectCount + 1);
|
||||||
} else {
|
} else {
|
||||||
return callback("Error " + response.statusCode + " retrieving " + url)
|
return callback("Error " + response.statusCode + " retrieving " + url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -153,18 +153,18 @@ Command.prototype.processBody = function(body,type,options,url) {
|
|||||||
if(options.transformFilter) {
|
if(options.transformFilter) {
|
||||||
var transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [""])[0];
|
var transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [""])[0];
|
||||||
if(transformedTitle) {
|
if(transformedTitle) {
|
||||||
self.commander.log("Importing " + title + " as " + transformedTitle)
|
self.commander.log("Importing " + title + " as " + transformedTitle);
|
||||||
newTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});
|
newTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
self.commander.log("Importing " + title)
|
self.commander.log("Importing " + title);
|
||||||
newTiddler = tiddler;
|
newTiddler = tiddler;
|
||||||
}
|
}
|
||||||
self.commander.wiki.importTiddler(newTiddler);
|
self.commander.wiki.importTiddler(newTiddler);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
self.commander.log("Imported " + count + " tiddlers")
|
self.commander.log("Imported " + count + " tiddlers");
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.Command = Command;
|
exports.Command = Command;
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ var Command = function(params,commander,callback) {
|
|||||||
|
|
||||||
Command.prototype.execute = function() {
|
Command.prototype.execute = function() {
|
||||||
var self = this,
|
var self = this,
|
||||||
fs = require("fs"),
|
fs = require("fs");
|
||||||
path = require("path");
|
|
||||||
if(this.params.length < 2) {
|
if(this.params.length < 2) {
|
||||||
return "Missing parameters";
|
return "Missing parameters";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,7 @@ var Command = function(params,commander) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Command.prototype.execute = function() {
|
Command.prototype.execute = function() {
|
||||||
var fs = require("fs"),
|
var fs = require("fs");
|
||||||
path = require("path");
|
|
||||||
// Check that we don't already have a valid wiki folder
|
// Check that we don't already have a valid wiki folder
|
||||||
if($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {
|
if($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {
|
||||||
return "Wiki folder is not empty";
|
return "Wiki folder is not empty";
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ exports.info = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var Command = function(params,commander,callback) {
|
var Command = function(params,commander,callback) {
|
||||||
var self = this;
|
|
||||||
this.params = params;
|
this.params = params;
|
||||||
this.commander = commander;
|
this.commander = commander;
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ var Command = function(params,commander,callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Command.prototype.execute = function() {
|
Command.prototype.execute = function() {
|
||||||
var self = this,
|
var self = this;
|
||||||
fs = require("fs"),
|
|
||||||
path = require("path");
|
|
||||||
if(this.params.length < 1) {
|
if(this.params.length < 1) {
|
||||||
return "Missing filename";
|
return "Missing filename";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ var Command = function(params,commander,callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Command.prototype.execute = function() {
|
Command.prototype.execute = function() {
|
||||||
var fs = require("fs"),
|
var path = require("path");
|
||||||
path = require("path");
|
|
||||||
if(this.params.length < 1) {
|
if(this.params.length < 1) {
|
||||||
return "Missing output path";
|
return "Missing output path";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ Render individual tiddlers and save the results to the specified files
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var widget = require("$:/core/modules/widgets/widget.js");
|
|
||||||
|
|
||||||
exports.info = {
|
exports.info = {
|
||||||
name: "render",
|
name: "render",
|
||||||
synchronous: true
|
synchronous: true
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ Command to render several tiddlers to a folder of files
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var widget = require("$:/core/modules/widgets/widget.js");
|
|
||||||
|
|
||||||
exports.info = {
|
exports.info = {
|
||||||
name: "rendertiddlers",
|
name: "rendertiddlers",
|
||||||
synchronous: true
|
synchronous: true
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ Saves individual tiddlers in their raw text or binary format to the specified fi
|
|||||||
return "Missing filename filter";
|
return "Missing filename filter";
|
||||||
}
|
}
|
||||||
var self = this,
|
var self = this,
|
||||||
fs = require("fs"),
|
|
||||||
path = require("path"),
|
path = require("path"),
|
||||||
result = null,
|
result = null,
|
||||||
wiki = this.commander.wiki,
|
wiki = this.commander.wiki,
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ Command to save several tiddlers to a folder of files
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var widget = require("$:/core/modules/widgets/widget.js");
|
|
||||||
|
|
||||||
exports.info = {
|
exports.info = {
|
||||||
name: "savetiddlers",
|
name: "savetiddlers",
|
||||||
synchronous: true
|
synchronous: true
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ WikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
WikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {
|
WikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {
|
||||||
var title = tiddler.fields.title, fileInfo, pathFilters, extFilters;
|
var fileInfo, pathFilters, extFilters;
|
||||||
if(this.wiki.tiddlerExists("$:/config/FileSystemPaths")) {
|
if(this.wiki.tiddlerExists("$:/config/FileSystemPaths")) {
|
||||||
pathFilters = this.wiki.getTiddlerText("$:/config/FileSystemPaths","").split("\n");
|
pathFilters = this.wiki.getTiddlerText("$:/config/FileSystemPaths","").split("\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ exports.info = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var Command = function(params,commander,callback) {
|
var Command = function(params,commander,callback) {
|
||||||
var self = this;
|
|
||||||
this.params = params;
|
this.params = params;
|
||||||
this.commander = commander;
|
this.commander = commander;
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ Command to modify selected tiddlers to set a field to the text of a template tid
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var widget = require("$:/core/modules/widgets/widget.js");
|
|
||||||
|
|
||||||
exports.info = {
|
exports.info = {
|
||||||
name: "setfield",
|
name: "setfield",
|
||||||
synchronous: true
|
synchronous: true
|
||||||
@@ -26,8 +24,7 @@ Command.prototype.execute = function() {
|
|||||||
if(this.params.length < 4) {
|
if(this.params.length < 4) {
|
||||||
return "Missing parameters";
|
return "Missing parameters";
|
||||||
}
|
}
|
||||||
var self = this,
|
var wiki = this.commander.wiki,
|
||||||
wiki = this.commander.wiki,
|
|
||||||
filter = this.params[0],
|
filter = this.params[0],
|
||||||
fieldname = this.params[1] || "text",
|
fieldname = this.params[1] || "text",
|
||||||
templatetitle = this.params[2],
|
templatetitle = this.params[2],
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ exports.getSubdirectories = function(dirPath) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
return subdirs;
|
return subdirs;
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Recursively (and synchronously) copy a directory and all its content
|
Recursively (and synchronously) copy a directory and all its content
|
||||||
@@ -46,8 +46,7 @@ exports.copyDirectory = function(srcPath,dstPath) {
|
|||||||
}
|
}
|
||||||
// Function to copy a folder full of files
|
// Function to copy a folder full of files
|
||||||
var copy = function(srcPath,dstPath) {
|
var copy = function(srcPath,dstPath) {
|
||||||
var srcStats = fs.lstatSync(srcPath),
|
var srcStats = fs.lstatSync(srcPath);
|
||||||
dstExists = fs.existsSync(dstPath);
|
|
||||||
if(srcStats.isFile()) {
|
if(srcStats.isFile()) {
|
||||||
$tw.utils.copyFile(srcPath,dstPath);
|
$tw.utils.copyFile(srcPath,dstPath);
|
||||||
} else if(srcStats.isDirectory()) {
|
} else if(srcStats.isDirectory()) {
|
||||||
@@ -345,18 +344,18 @@ exports.generateTiddlerFilepath = function(title,options) {
|
|||||||
// Replace any Windows control codes
|
// Replace any Windows control codes
|
||||||
filepath = filepath.replace(/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i,"_$1_");
|
filepath = filepath.replace(/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i,"_$1_");
|
||||||
// Replace any leading spaces with the same number of underscores
|
// Replace any leading spaces with the same number of underscores
|
||||||
filepath = filepath.replace(/^ +/,function (u) { return u.replace(/ /g, "_")});
|
filepath = filepath.replace(/^ +/,function (u) { return u.replace(/ /g, "_");});
|
||||||
//If the path does not start with "." or ".." && a path seperator, then
|
//If the path does not start with "." or ".." && a path seperator, then
|
||||||
if(!/^\.{1,2}[/\\]/g.test(filepath)) {
|
if(!/^\.{1,2}[/\\]/g.test(filepath)) {
|
||||||
// Don't let the filename start with any dots because such files are invisible on *nix
|
// Don't let the filename start with any dots because such files are invisible on *nix
|
||||||
filepath = filepath.replace(/^\.+/g,function (u) { return u.replace(/\./g, "_")});
|
filepath = filepath.replace(/^\.+/g,function (u) { return u.replace(/\./g, "_");});
|
||||||
}
|
}
|
||||||
// Replace any Unicode control codes
|
// Replace any Unicode control codes
|
||||||
filepath = filepath.replace(/[\x00-\x1f\x80-\x9f]/g,"_");
|
filepath = filepath.replace(/[\x00-\x1f\x80-\x9f]/g,"_");
|
||||||
// Replace any characters that can't be used in cross-platform filenames
|
// Replace any characters that can't be used in cross-platform filenames
|
||||||
filepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\:|\"|\||\?|\*|\^/g,"_"));
|
filepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\:|\"|\||\?|\*|\^/g,"_"));
|
||||||
// Replace any dots or spaces at the end of the extension with the same number of underscores
|
// Replace any dots or spaces at the end of the extension with the same number of underscores
|
||||||
extension = extension.replace(/[\. ]+$/, function (u) { return u.replace(/[\. ]/g, "_")});
|
extension = extension.replace(/[\. ]+$/, function (u) { return u.replace(/[\. ]/g, "_");});
|
||||||
// Truncate the extension if it is too long
|
// Truncate the extension if it is too long
|
||||||
if(extension.length > 32) {
|
if(extension.length > 32) {
|
||||||
extension = extension.substr(0,32);
|
extension = extension.substr(0,32);
|
||||||
|
|||||||
@@ -10,9 +10,7 @@ Authenticator for WWW basic authentication
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
if($tw.node) {
|
if($tw.node) {
|
||||||
var util = require("util"),
|
var fs = require("fs"),
|
||||||
fs = require("fs"),
|
|
||||||
url = require("url"),
|
|
||||||
path = require("path");
|
path = require("path");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,9 @@ Serve tiddlers over http
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
let fs, url, path, querystring, crypto, zlib;
|
||||||
|
|
||||||
if($tw.node) {
|
if($tw.node) {
|
||||||
var util = require("util"),
|
|
||||||
fs = require("fs"),
|
fs = require("fs"),
|
||||||
url = require("url"),
|
url = require("url"),
|
||||||
path = require("path"),
|
path = require("path"),
|
||||||
@@ -41,7 +42,7 @@ function Server(options) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Setup the default required plugins
|
// Setup the default required plugins
|
||||||
this.requiredPlugins = this.get("required-plugins").split(',');
|
this.requiredPlugins = this.get("required-plugins").split(",");
|
||||||
// Initialise CORS
|
// Initialise CORS
|
||||||
this.corsEnable = this.get("cors-enable") === "yes";
|
this.corsEnable = this.get("cors-enable") === "yes";
|
||||||
// Initialise CSRF
|
// Initialise CSRF
|
||||||
@@ -62,9 +63,9 @@ function Server(options) {
|
|||||||
this.authorizationPrincipals = {
|
this.authorizationPrincipals = {
|
||||||
readers: (this.get("readers") || authorizedUserName).split(",").map($tw.utils.trim),
|
readers: (this.get("readers") || authorizedUserName).split(",").map($tw.utils.trim),
|
||||||
writers: (this.get("writers") || authorizedUserName).split(",").map($tw.utils.trim)
|
writers: (this.get("writers") || authorizedUserName).split(",").map($tw.utils.trim)
|
||||||
}
|
};
|
||||||
if(this.get("admin") || authorizedUserName !== "(anon)") {
|
if(this.get("admin") || authorizedUserName !== "(anon)") {
|
||||||
this.authorizationPrincipals["admin"] = (this.get("admin") || authorizedUserName).split(',').map($tw.utils.trim)
|
this.authorizationPrincipals["admin"] = (this.get("admin") || authorizedUserName).split(",").map($tw.utils.trim);
|
||||||
}
|
}
|
||||||
// Load and initialise authenticators
|
// Load and initialise authenticators
|
||||||
$tw.modules.forEachModuleOfType("authenticator", function(title,authenticatorDefinition) {
|
$tw.modules.forEachModuleOfType("authenticator", function(title,authenticatorDefinition) {
|
||||||
@@ -91,7 +92,7 @@ function Server(options) {
|
|||||||
this.listenOptions = {
|
this.listenOptions = {
|
||||||
key: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),"utf8"),
|
key: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),"utf8"),
|
||||||
cert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),"utf8"),
|
cert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),"utf8"),
|
||||||
passphrase: tlsPassphrase || ''
|
passphrase: tlsPassphrase || ""
|
||||||
};
|
};
|
||||||
this.protocol = "https";
|
this.protocol = "https";
|
||||||
}
|
}
|
||||||
@@ -116,7 +117,7 @@ encoding: the encoding of the data to send (passed to the end method of the resp
|
|||||||
*/
|
*/
|
||||||
function sendResponse(request,response,statusCode,headers,data,encoding) {
|
function sendResponse(request,response,statusCode,headers,data,encoding) {
|
||||||
if(this.enableBrowserCache && (statusCode == 200)) {
|
if(this.enableBrowserCache && (statusCode == 200)) {
|
||||||
var hash = crypto.createHash('md5');
|
var hash = crypto.createHash("md5");
|
||||||
// Put everything into the hash that could change and invalidate the data that
|
// Put everything into the hash that could change and invalidate the data that
|
||||||
// the browser already stored. The headers the data and the encoding.
|
// the browser already stored. The headers the data and the encoding.
|
||||||
hash.update(data);
|
hash.update(data);
|
||||||
@@ -211,7 +212,6 @@ Server.prototype.addAuthenticator = function(AuthenticatorClass) {
|
|||||||
Server.prototype.findMatchingRoute = function(request,state) {
|
Server.prototype.findMatchingRoute = function(request,state) {
|
||||||
for(var t=0; t<this.routes.length; t++) {
|
for(var t=0; t<this.routes.length; t++) {
|
||||||
var potentialRoute = this.routes[t],
|
var potentialRoute = this.routes[t],
|
||||||
pathRegExp = potentialRoute.path,
|
|
||||||
pathname = state.urlInfo.pathname,
|
pathname = state.urlInfo.pathname,
|
||||||
match;
|
match;
|
||||||
if(state.pathPrefix) {
|
if(state.pathPrefix) {
|
||||||
@@ -250,7 +250,7 @@ Check whether a given user is authorized for the specified authorizationType ("r
|
|||||||
Server.prototype.isAuthorized = function(authorizationType,username) {
|
Server.prototype.isAuthorized = function(authorizationType,username) {
|
||||||
var principals = this.authorizationPrincipals[authorizationType] || [];
|
var principals = this.authorizationPrincipals[authorizationType] || [];
|
||||||
return principals.indexOf("(anon)") !== -1 || (username && (principals.indexOf("(authenticated)") !== -1 || principals.indexOf(username) !== -1));
|
return principals.indexOf("(anon)") !== -1 || (username && (principals.indexOf("(authenticated)") !== -1 || principals.indexOf(username) !== -1));
|
||||||
}
|
};
|
||||||
|
|
||||||
Server.prototype.requestHandler = function(request,response,options) {
|
Server.prototype.requestHandler = function(request,response,options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
@@ -337,7 +337,7 @@ Server.prototype.requestHandler = function(request,response,options) {
|
|||||||
request.on("end",function() {
|
request.on("end",function() {
|
||||||
state.data = Buffer.concat(data);
|
state.data = Buffer.concat(data);
|
||||||
route.handler(request,response,state);
|
route.handler(request,response,state);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
response.writeHead(400,"Invalid bodyFormat " + route.bodyFormat + " in route " + route.method + " " + route.path.source);
|
response.writeHead(400,"Invalid bodyFormat " + route.bodyFormat + " in route " + route.method + " " + route.path.source);
|
||||||
response.end();
|
response.end();
|
||||||
|
|||||||
@@ -11,20 +11,20 @@ Base64 UTF-8 utlity functions.
|
|||||||
|
|
||||||
const { TextEncoder, TextDecoder } = require("node:util");
|
const { TextEncoder, TextDecoder } = require("node:util");
|
||||||
|
|
||||||
exports.btoa = binstr => Buffer.from(binstr, "binary").toString("base64");
|
exports.btoa = (binstr) => Buffer.from(binstr, "binary").toString("base64");
|
||||||
|
|
||||||
exports.atob = b64 => Buffer.from(b64, "base64").toString("binary");
|
exports.atob = (b64) => Buffer.from(b64, "base64").toString("binary");
|
||||||
|
|
||||||
function base64ToBytes(base64) {
|
function base64ToBytes(base64) {
|
||||||
const binString = exports.atob(base64);
|
const binString = exports.atob(base64);
|
||||||
return Uint8Array.from(binString, m => m.codePointAt(0));
|
return Uint8Array.from(binString, (m) => m.codePointAt(0));
|
||||||
};
|
};
|
||||||
|
|
||||||
function bytesToBase64(bytes) {
|
function bytesToBase64(bytes) {
|
||||||
const binString = Array.from(bytes, byte => String.fromCodePoint(byte)).join("");
|
const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join("");
|
||||||
return exports.btoa(binString);
|
return exports.btoa(binString);
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.base64EncodeUtf8 = str => bytesToBase64(new TextEncoder().encode(str));
|
exports.base64EncodeUtf8 = (str) => bytesToBase64(new TextEncoder().encode(str));
|
||||||
|
|
||||||
exports.base64DecodeUtf8 = str => new TextDecoder().decode(base64ToBytes(str));
|
exports.base64DecodeUtf8 = (str) => new TextDecoder().decode(base64ToBytes(str));
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ ignoreEnvironmentVariables: defaults to false
|
|||||||
*/
|
*/
|
||||||
exports.getAllPlugins = function(options) {
|
exports.getAllPlugins = function(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
var fs = require("fs"),
|
var path = require("path"),
|
||||||
path = require("path"),
|
|
||||||
tiddlers = {};
|
tiddlers = {};
|
||||||
// Collect up the library plugins
|
// Collect up the library plugins
|
||||||
var collectPlugins = function(folder) {
|
var collectPlugins = function(folder) {
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ Listing/Preview/TextRaw: Text (Raw)
|
|||||||
Listing/Preview/Fields: Fields
|
Listing/Preview/Fields: Fields
|
||||||
Listing/Preview/Diff: Diff
|
Listing/Preview/Diff: Diff
|
||||||
Listing/Preview/DiffFields: Diff (Fields)
|
Listing/Preview/DiffFields: Diff (Fields)
|
||||||
|
Listing/ImportOptions/Caption: Import options
|
||||||
|
Listing/ImportOptions/NoMatch: No import options apply to these files.
|
||||||
Listing/Rename/Tooltip: Rename tiddler before importing
|
Listing/Rename/Tooltip: Rename tiddler before importing
|
||||||
Listing/Rename/Prompt: Rename to:
|
Listing/Rename/Prompt: Rename to:
|
||||||
Listing/Rename/ConfirmRename: Rename tiddler
|
Listing/Rename/ConfirmRename: Rename tiddler
|
||||||
|
|||||||
@@ -18,13 +18,13 @@ class BackgroundActionDispatcher {
|
|||||||
// Track the filter for the background actions
|
// Track the filter for the background actions
|
||||||
this.filterTracker.track({
|
this.filterTracker.track({
|
||||||
filterString: "[all[tiddlers+shadows]tag[$:/tags/BackgroundAction]!is[draft]]",
|
filterString: "[all[tiddlers+shadows]tag[$:/tags/BackgroundAction]!is[draft]]",
|
||||||
fnEnter: title => this.trackFilter(title),
|
fnEnter: (title) => this.trackFilter(title),
|
||||||
fnLeave: (title, enterValue) => this.untrackFilter(enterValue),
|
fnLeave: (title, enterValue) => this.untrackFilter(enterValue),
|
||||||
fnChange: (title, enterValue) => {
|
fnChange: (title, enterValue) => {
|
||||||
this.untrackFilter(enterValue);
|
this.untrackFilter(enterValue);
|
||||||
return this.trackFilter(title);
|
return this.trackFilter(title);
|
||||||
},
|
},
|
||||||
fnProcess: changes => this.process(changes)
|
fnProcess: (changes) => this.process(changes)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ class BackgroundActionTracker {
|
|||||||
filterString: this.trackFilter,
|
filterString: this.trackFilter,
|
||||||
fnEnter: () => { this.hasChanged = true; },
|
fnEnter: () => { this.hasChanged = true; },
|
||||||
fnLeave: () => { this.hasChanged = true; },
|
fnLeave: () => { this.hasChanged = true; },
|
||||||
fnProcess: changes => {
|
fnProcess: (changes) => {
|
||||||
if(this.hasChanged) {
|
if(this.hasChanged) {
|
||||||
this.hasChanged = false;
|
this.hasChanged = false;
|
||||||
console.log("Processing background action", this.title);
|
console.log("Processing background action", this.title);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Text editor operation to excise the selection to a new tiddler
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function isMarkdown(mediaType) {
|
function isMarkdown(mediaType) {
|
||||||
return mediaType === 'text/markdown' || mediaType === 'text/x-markdown';
|
return mediaType === "text/markdown" || mediaType === "text/x-markdown";
|
||||||
}
|
}
|
||||||
|
|
||||||
exports["excise"] = function(event,operation) {
|
exports["excise"] = function(event,operation) {
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ exports["wrap-selection"] = function(event,operation) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
};
|
||||||
|
|
||||||
function togglePrefixSuffix() {
|
function togglePrefixSuffix() {
|
||||||
if(o.text.substring(o.selStart - prefix.length, o.selStart + suffix.length) === prefix + suffix) {
|
if(o.text.substring(o.selStart - prefix.length, o.selStart + suffix.length) === prefix + suffix) {
|
||||||
|
|||||||
@@ -69,17 +69,17 @@ class FilterTracker {
|
|||||||
if(!tracker) return;
|
if(!tracker) return;
|
||||||
const results = [];
|
const results = [];
|
||||||
// Evaluate the filter and remove duplicate results
|
// Evaluate the filter and remove duplicate results
|
||||||
$tw.utils.each(this.wiki.filterTiddlers(tracker.filterString), title => {
|
$tw.utils.each(this.wiki.filterTiddlers(tracker.filterString), (title) => {
|
||||||
$tw.utils.pushTop(results, title);
|
$tw.utils.pushTop(results, title);
|
||||||
});
|
});
|
||||||
// Process the newly entered results
|
// Process the newly entered results
|
||||||
results.forEach(title => {
|
results.forEach((title) => {
|
||||||
if(!tracker.previousResults.includes(title) && !tracker.resultValues[title] && tracker.fnEnter) {
|
if(!tracker.previousResults.includes(title) && !tracker.resultValues[title] && tracker.fnEnter) {
|
||||||
tracker.resultValues[title] = tracker.fnEnter(title) || true;
|
tracker.resultValues[title] = tracker.fnEnter(title) || true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Process the results that have just left
|
// Process the results that have just left
|
||||||
tracker.previousResults.forEach(title => {
|
tracker.previousResults.forEach((title) => {
|
||||||
if(!results.includes(title) && tracker.resultValues[title] && tracker.fnLeave) {
|
if(!results.includes(title) && tracker.resultValues[title] && tracker.fnLeave) {
|
||||||
tracker.fnLeave(title, tracker.resultValues[title]);
|
tracker.fnLeave(title, tracker.resultValues[title]);
|
||||||
delete tracker.resultValues[title];
|
delete tracker.resultValues[title];
|
||||||
@@ -91,7 +91,7 @@ class FilterTracker {
|
|||||||
|
|
||||||
processChanges(changes) {
|
processChanges(changes) {
|
||||||
for(const tracker of this.trackers.values()) {
|
for(const tracker of this.trackers.values()) {
|
||||||
Object.keys(changes).forEach(title => {
|
Object.keys(changes).forEach((title) => {
|
||||||
if(title && tracker.previousResults.includes(title) && tracker.fnChange) {
|
if(title && tracker.previousResults.includes(title) && tracker.fnChange) {
|
||||||
tracker.resultValues[title] = tracker.fnChange(title, tracker.resultValues[title]) || tracker.resultValues[title];
|
tracker.resultValues[title] = tracker.fnChange(title, tracker.resultValues[title]) || tracker.resultValues[title];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ exports.cascade = function(operationSubFunction,options) {
|
|||||||
}
|
}
|
||||||
var output = filterFnList[index](options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
var output = filterFnList[index](options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
||||||
"currentTiddler": "" + title,
|
"currentTiddler": "" + title,
|
||||||
"..currentTiddler": widget.getVariable("currentTiddler","")
|
"..currentTiddler": widget.getVariable("currentTiddler",{defaultValue:""})
|
||||||
}));
|
}));
|
||||||
if(output.length !== 0) {
|
if(output.length !== 0) {
|
||||||
result = output[0];
|
result = output[0];
|
||||||
@@ -34,5 +34,5 @@ exports.cascade = function(operationSubFunction,options) {
|
|||||||
results.push(result);
|
results.push(result);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ exports.filter = function(operationSubFunction,options) {
|
|||||||
results.each(function(title) {
|
results.each(function(title) {
|
||||||
var filtered = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
var filtered = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
||||||
"currentTiddler": "" + title,
|
"currentTiddler": "" + title,
|
||||||
"..currentTiddler": widget.getVariable("currentTiddler",""),
|
"..currentTiddler": widget.getVariable("currentTiddler",{defaultValue:""}),
|
||||||
"index": "" + index,
|
"index": "" + index,
|
||||||
"revIndex": "" + (results.length - 1 - index),
|
"revIndex": "" + (results.length - 1 - index),
|
||||||
"length": "" + results.length
|
"length": "" + results.length
|
||||||
@@ -30,5 +30,5 @@ exports.filter = function(operationSubFunction,options) {
|
|||||||
});
|
});
|
||||||
results.remove(resultsToRemove);
|
results.remove(resultsToRemove);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,8 +7,6 @@ Assign a value to a variable
|
|||||||
|
|
||||||
\*/
|
\*/
|
||||||
|
|
||||||
/*jslint node: true, browser: true */
|
|
||||||
/*global $tw: false */
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ exports.map = function(operationSubFunction,options) {
|
|||||||
$tw.utils.each(inputTitles,function(title) {
|
$tw.utils.each(inputTitles,function(title) {
|
||||||
var filtered = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
var filtered = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
||||||
"currentTiddler": "" + title,
|
"currentTiddler": "" + title,
|
||||||
"..currentTiddler": widget.getVariable("currentTiddler",""),
|
"..currentTiddler": widget.getVariable("currentTiddler",{defaultValue:""}),
|
||||||
"index": "" + index,
|
"index": "" + index,
|
||||||
"revIndex": "" + (inputTitles.length - 1 - index),
|
"revIndex": "" + (inputTitles.length - 1 - index),
|
||||||
"length": "" + inputTitles.length
|
"length": "" + inputTitles.length
|
||||||
@@ -28,12 +28,12 @@ exports.map = function(operationSubFunction,options) {
|
|||||||
if(filtered.length && flatten) {
|
if(filtered.length && flatten) {
|
||||||
$tw.utils.each(filtered,function(value) {
|
$tw.utils.each(filtered,function(value) {
|
||||||
results.push(value);
|
results.push(value);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
results.push(filtered[0]||"");
|
results.push(filtered[0]||"");
|
||||||
}
|
}
|
||||||
++index;
|
++index;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ exports.reduce = function(operationSubFunction,options) {
|
|||||||
results.each(function(title) {
|
results.each(function(title) {
|
||||||
var list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
var list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
||||||
"currentTiddler": "" + title,
|
"currentTiddler": "" + title,
|
||||||
"..currentTiddler": widget.getVariable("currentTiddler"),
|
"..currentTiddler": widget.getVariable("currentTiddler",{defaultValue:""}),
|
||||||
"index": "" + index,
|
"index": "" + index,
|
||||||
"revIndex": "" + (results.length - 1 - index),
|
"revIndex": "" + (results.length - 1 - index),
|
||||||
"length": "" + results.length,
|
"length": "" + results.length,
|
||||||
@@ -31,5 +31,5 @@ exports.reduce = function(operationSubFunction,options) {
|
|||||||
results.clear();
|
results.clear();
|
||||||
results.push(accumulator);
|
results.push(accumulator);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ exports.sort = function(operationSubFunction,options) {
|
|||||||
results.each(function(title) {
|
results.each(function(title) {
|
||||||
var key = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
var key = operationSubFunction(options.wiki.makeTiddlerIterator([title]),widget.makeFakeWidgetWithVariables({
|
||||||
"currentTiddler": "" + title,
|
"currentTiddler": "" + title,
|
||||||
"..currentTiddler": widget.getVariable("currentTiddler")
|
"..currentTiddler": widget.getVariable("currentTiddler",{defaultValue:""})
|
||||||
}));
|
}));
|
||||||
sortKeys.push(key[0] || "");
|
sortKeys.push(key[0] || "");
|
||||||
});
|
});
|
||||||
@@ -43,5 +43,5 @@ exports.sort = function(operationSubFunction,options) {
|
|||||||
results.push(inputTitles[index]);
|
results.push(inputTitles[index]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ function parseFilterOperation(operators,filterString,p) {
|
|||||||
var bracket = filterString.charAt(nextBracketPos);
|
var bracket = filterString.charAt(nextBracketPos);
|
||||||
operator.operator = filterString.substring(p,nextBracketPos);
|
operator.operator = filterString.substring(p,nextBracketPos);
|
||||||
// Any suffix?
|
// Any suffix?
|
||||||
var colon = operator.operator.indexOf(':');
|
var colon = operator.operator.indexOf(":");
|
||||||
if(colon > -1) {
|
if(colon > -1) {
|
||||||
// The raw suffix for older filters
|
// The raw suffix for older filters
|
||||||
operator.suffix = operator.operator.substring(colon + 1);
|
operator.suffix = operator.operator.substring(colon + 1);
|
||||||
@@ -108,7 +108,7 @@ function parseFilterOperation(operators,filterString,p) {
|
|||||||
}
|
}
|
||||||
operator.operands.push(operand);
|
operator.operands.push(operand);
|
||||||
p = nextBracketPos + 1;
|
p = nextBracketPos + 1;
|
||||||
}
|
};
|
||||||
|
|
||||||
p = nextBracketPos + 1;
|
p = nextBracketPos + 1;
|
||||||
parseOperand(bracket);
|
parseOperand(bracket);
|
||||||
@@ -228,7 +228,7 @@ exports.getFilterRunPrefixes = function() {
|
|||||||
$tw.modules.applyMethods("filterrunprefix",this.filterRunPrefixes);
|
$tw.modules.applyMethods("filterrunprefix",this.filterRunPrefixes);
|
||||||
}
|
}
|
||||||
return this.filterRunPrefixes;
|
return this.filterRunPrefixes;
|
||||||
}
|
};
|
||||||
|
|
||||||
exports.filterTiddlers = function(filterString,widget,source) {
|
exports.filterTiddlers = function(filterString,widget,source) {
|
||||||
var fn = this.compileFilter(filterString);
|
var fn = this.compileFilter(filterString);
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ var modes = {
|
|||||||
"gt": function(value) {return value > 0;},
|
"gt": function(value) {return value > 0;},
|
||||||
"lteq": function(value) {return value <= 0;},
|
"lteq": function(value) {return value <= 0;},
|
||||||
"lt": function(value) {return value < 0;}
|
"lt": function(value) {return value < 0;}
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -31,4 +31,4 @@ exports["deserialize"] = function(source,operator,options) {
|
|||||||
return [$tw.language.getString("Error/DeserializeOperator/MissingOperand")];
|
return [$tw.language.getString("Error/DeserializeOperator/MissingOperand")];
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ exports.field = function(source,operator,options) {
|
|||||||
if(source.byField && operator.operand) {
|
if(source.byField && operator.operand) {
|
||||||
indexedResults = source.byField(fieldname,operator.operand);
|
indexedResults = source.byField(fieldname,operator.operand);
|
||||||
if(indexedResults) {
|
if(indexedResults) {
|
||||||
return indexedResults
|
return indexedResults;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ exports.filter = function(source,operator,options) {
|
|||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
var list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),options.widget.makeFakeWidgetWithVariables({
|
var list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),options.widget.makeFakeWidgetWithVariables({
|
||||||
"currentTiddler": "" + title,
|
"currentTiddler": "" + title,
|
||||||
"..currentTiddler": options.widget.getVariable("currentTiddler","")
|
"..currentTiddler": options.widget.getVariable("currentTiddler",{defaultValue:""})
|
||||||
}));
|
}));
|
||||||
if((list.length > 0) === target) {
|
if((list.length > 0) === target) {
|
||||||
results.push(title);
|
results.push(title);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ returns the value at a given index of datatiddlers
|
|||||||
Export our filter function
|
Export our filter function
|
||||||
*/
|
*/
|
||||||
exports.getindex = function(source,operator,options) {
|
exports.getindex = function(source,operator,options) {
|
||||||
var data,title,results = [];
|
var data,results = [];
|
||||||
if(operator.operand){
|
if(operator.operand){
|
||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
title = tiddler ? tiddler.fields.title : title;
|
title = tiddler ? tiddler.fields.title : title;
|
||||||
|
|||||||
@@ -157,13 +157,13 @@ function convertDataItemValueToStrings(item) {
|
|||||||
if(item === undefined) {
|
if(item === undefined) {
|
||||||
return undefined;
|
return undefined;
|
||||||
} else if(item === null) {
|
} else if(item === null) {
|
||||||
return ["null"]
|
return ["null"];
|
||||||
} else if(typeof item === "object") {
|
} else if(typeof item === "object") {
|
||||||
var results = [],i,t;
|
var results = [],i,t;
|
||||||
if(Array.isArray(item)) {
|
if(Array.isArray(item)) {
|
||||||
// Return all the items in arrays recursively
|
// Return all the items in arrays recursively
|
||||||
for(i=0; i<item.length; i++) {
|
for(i=0; i<item.length; i++) {
|
||||||
t = convertDataItemValueToStrings(item[i])
|
t = convertDataItemValueToStrings(item[i]);
|
||||||
if(t !== undefined) {
|
if(t !== undefined) {
|
||||||
results.push.apply(results,t);
|
results.push.apply(results,t);
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,7 @@ function getItemAtIndex(item,index) {
|
|||||||
return item[index];
|
return item[index];
|
||||||
} else if(Array.isArray(item)) {
|
} else if(Array.isArray(item)) {
|
||||||
index = $tw.utils.parseInt(index);
|
index = $tw.utils.parseInt(index);
|
||||||
if(index < 0) { index = index + item.length };
|
if(index < 0) { index = index + item.length; };
|
||||||
return item[index]; // Will be undefined if index was out-of-bounds
|
return item[index]; // Will be undefined if index was out-of-bounds
|
||||||
} else {
|
} else {
|
||||||
return undefined;
|
return undefined;
|
||||||
@@ -289,7 +289,7 @@ function setDataItem(data,indexes,value) {
|
|||||||
var lastIndex = indexes[indexes.length - 1];
|
var lastIndex = indexes[indexes.length - 1];
|
||||||
if(Array.isArray(current)) {
|
if(Array.isArray(current)) {
|
||||||
lastIndex = $tw.utils.parseInt(lastIndex);
|
lastIndex = $tw.utils.parseInt(lastIndex);
|
||||||
if(lastIndex < 0) { lastIndex = lastIndex + current.length };
|
if(lastIndex < 0) { lastIndex = lastIndex + current.length; };
|
||||||
}
|
}
|
||||||
// Only set indexes on objects and arrays
|
// Only set indexes on objects and arrays
|
||||||
if(typeof current === "object") {
|
if(typeof current === "object") {
|
||||||
@@ -316,7 +316,7 @@ function deleteDataItem(data,indexes) {
|
|||||||
var lastIndex = indexes[indexes.length - 1];
|
var lastIndex = indexes[indexes.length - 1];
|
||||||
if(Array.isArray(current) && current !== null) {
|
if(Array.isArray(current) && current !== null) {
|
||||||
lastIndex = $tw.utils.parseInt(lastIndex);
|
lastIndex = $tw.utils.parseInt(lastIndex);
|
||||||
if(lastIndex < 0) { lastIndex = lastIndex + current.length };
|
if(lastIndex < 0) { lastIndex = lastIndex + current.length; };
|
||||||
// Check if index is valid before splicing
|
// Check if index is valid before splicing
|
||||||
if(lastIndex >= 0 && lastIndex < current.length) {
|
if(lastIndex >= 0 && lastIndex < current.length) {
|
||||||
current.splice(lastIndex,1);
|
current.splice(lastIndex,1);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ exports.lookup = function(source,operator,options) {
|
|||||||
indexSuffix = (suffixes[1] && suffixes[1][0] === "index") ? true : false,
|
indexSuffix = (suffixes[1] && suffixes[1][0] === "index") ? true : false,
|
||||||
target;
|
target;
|
||||||
if(operator.operands.length == 2) {
|
if(operator.operands.length == 2) {
|
||||||
target = operator.operands[1]
|
target = operator.operands[1];
|
||||||
} else {
|
} else {
|
||||||
target = indexSuffix ? "0": "text";
|
target = indexSuffix ? "0": "text";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,35 +17,35 @@ Note that strings are converted to numbers automatically. Trailing non-digits ar
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
exports.negate = makeNumericBinaryOperator(
|
exports.negate = makeNumericBinaryOperator(
|
||||||
function(a) {return -a}
|
function(a) {return -a;}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.abs = makeNumericBinaryOperator(
|
exports.abs = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.abs(a)}
|
function(a) {return Math.abs(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.ceil = makeNumericBinaryOperator(
|
exports.ceil = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.ceil(a)}
|
function(a) {return Math.ceil(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.floor = makeNumericBinaryOperator(
|
exports.floor = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.floor(a)}
|
function(a) {return Math.floor(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.round = makeNumericBinaryOperator(
|
exports.round = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.round(a)}
|
function(a) {return Math.round(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.trunc = makeNumericBinaryOperator(
|
exports.trunc = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.trunc(a)}
|
function(a) {return Math.trunc(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.untrunc = makeNumericBinaryOperator(
|
exports.untrunc = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}
|
function(a) {return Math.ceil(Math.abs(a)) * Math.sign(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.sign = makeNumericBinaryOperator(
|
exports.sign = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.sign(a)}
|
function(a) {return Math.sign(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.add = makeNumericBinaryOperator(
|
exports.add = makeNumericBinaryOperator(
|
||||||
@@ -103,29 +103,29 @@ exports.log = makeNumericBinaryOperator(
|
|||||||
);
|
);
|
||||||
|
|
||||||
exports.sum = makeNumericReducingOperator(
|
exports.sum = makeNumericReducingOperator(
|
||||||
function(accumulator,value) {return accumulator + value},
|
function(accumulator,value) {return accumulator + value;},
|
||||||
0 // Initial value
|
0 // Initial value
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.product = makeNumericReducingOperator(
|
exports.product = makeNumericReducingOperator(
|
||||||
function(accumulator,value) {return accumulator * value},
|
function(accumulator,value) {return accumulator * value;},
|
||||||
1 // Initial value
|
1 // Initial value
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.maxall = makeNumericReducingOperator(
|
exports.maxall = makeNumericReducingOperator(
|
||||||
function(accumulator,value) {return Math.max(accumulator,value)},
|
function(accumulator,value) {return Math.max(accumulator,value);},
|
||||||
-Infinity // Initial value
|
-Infinity // Initial value
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.minall = makeNumericReducingOperator(
|
exports.minall = makeNumericReducingOperator(
|
||||||
function(accumulator,value) {return Math.min(accumulator,value)},
|
function(accumulator,value) {return Math.min(accumulator,value);},
|
||||||
Infinity // Initial value
|
Infinity // Initial value
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.median = makeNumericArrayOperator(
|
exports.median = makeNumericArrayOperator(
|
||||||
function(values) {
|
function(values) {
|
||||||
var len = values.length, median;
|
var len = values.length, median;
|
||||||
values.sort(function(a,b) {return a-b});
|
values.sort(function(a,b) {return a-b;});
|
||||||
if(len % 2) {
|
if(len % 2) {
|
||||||
// Odd, return the middle number
|
// Odd, return the middle number
|
||||||
median = values[(len - 1) / 2];
|
median = values[(len - 1) / 2];
|
||||||
@@ -138,7 +138,7 @@ exports.median = makeNumericArrayOperator(
|
|||||||
);
|
);
|
||||||
|
|
||||||
exports.average = makeNumericReducingOperator(
|
exports.average = makeNumericReducingOperator(
|
||||||
function(accumulator,value) {return accumulator + value},
|
function(accumulator,value) {return accumulator + value;},
|
||||||
0, // Initial value
|
0, // Initial value
|
||||||
function(finalValue,numberOfValues) {
|
function(finalValue,numberOfValues) {
|
||||||
return finalValue/numberOfValues;
|
return finalValue/numberOfValues;
|
||||||
@@ -146,7 +146,7 @@ exports.average = makeNumericReducingOperator(
|
|||||||
);
|
);
|
||||||
|
|
||||||
exports.variance = makeNumericReducingOperator(
|
exports.variance = makeNumericReducingOperator(
|
||||||
function(accumulator,value) {return accumulator + value},
|
function(accumulator,value) {return accumulator + value;},
|
||||||
0,
|
0,
|
||||||
function(finalValue,numberOfValues,originalValues) {
|
function(finalValue,numberOfValues,originalValues) {
|
||||||
return getVarianceFromArray(originalValues,finalValue/numberOfValues);
|
return getVarianceFromArray(originalValues,finalValue/numberOfValues);
|
||||||
@@ -154,7 +154,7 @@ exports.variance = makeNumericReducingOperator(
|
|||||||
);
|
);
|
||||||
|
|
||||||
exports["standard-deviation"] = makeNumericReducingOperator(
|
exports["standard-deviation"] = makeNumericReducingOperator(
|
||||||
function(accumulator,value) {return accumulator + value},
|
function(accumulator,value) {return accumulator + value;},
|
||||||
0,
|
0,
|
||||||
function(finalValue,numberOfValues,originalValues) {
|
function(finalValue,numberOfValues,originalValues) {
|
||||||
var variance = getVarianceFromArray(originalValues,finalValue/numberOfValues);
|
var variance = getVarianceFromArray(originalValues,finalValue/numberOfValues);
|
||||||
@@ -164,31 +164,31 @@ exports["standard-deviation"] = makeNumericReducingOperator(
|
|||||||
|
|
||||||
//trigonometry
|
//trigonometry
|
||||||
exports.cos = makeNumericBinaryOperator(
|
exports.cos = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.cos(a)}
|
function(a) {return Math.cos(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.sin = makeNumericBinaryOperator(
|
exports.sin = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.sin(a)}
|
function(a) {return Math.sin(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.tan = makeNumericBinaryOperator(
|
exports.tan = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.tan(a)}
|
function(a) {return Math.tan(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.acos = makeNumericBinaryOperator(
|
exports.acos = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.acos(a)}
|
function(a) {return Math.acos(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.asin = makeNumericBinaryOperator(
|
exports.asin = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.asin(a)}
|
function(a) {return Math.asin(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.atan = makeNumericBinaryOperator(
|
exports.atan = makeNumericBinaryOperator(
|
||||||
function(a) {return Math.atan(a)}
|
function(a) {return Math.atan(a);}
|
||||||
);
|
);
|
||||||
|
|
||||||
exports.atan2 = makeNumericBinaryOperator(
|
exports.atan2 = makeNumericBinaryOperator(
|
||||||
function(a,b) {return Math.atan2(a,b)}
|
function(a,b) {return Math.atan2(a,b);}
|
||||||
);
|
);
|
||||||
|
|
||||||
//Calculate the variance of a population of numbers in an array given its mean
|
//Calculate the variance of a population of numbers in an array given its mean
|
||||||
|
|||||||
@@ -209,14 +209,14 @@ Extended filter operators to manipulate the current list.
|
|||||||
results.push(operands[0]);
|
results.push(operands[0]);
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Toggles an item in the current list.
|
Toggles an item in the current list.
|
||||||
*/
|
*/
|
||||||
exports.toggle = function(source,operator) {
|
exports.toggle = function(source,operator) {
|
||||||
return cycleValueInArray(prepare_results(source),operator.operands);
|
return cycleValueInArray(prepare_results(source),operator.operands);
|
||||||
}
|
};
|
||||||
|
|
||||||
exports.cycle = function(source,operator) {
|
exports.cycle = function(source,operator) {
|
||||||
var results = prepare_results(source),
|
var results = prepare_results(source),
|
||||||
@@ -227,4 +227,4 @@ Extended filter operators to manipulate the current list.
|
|||||||
step = Math.abs(step);
|
step = Math.abs(step);
|
||||||
}
|
}
|
||||||
return cycleValueInArray(results,operands,step);
|
return cycleValueInArray(results,operands,step);
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ function BackSubIndexer(indexer,extractor) {
|
|||||||
BackSubIndexer.prototype.init = function() {
|
BackSubIndexer.prototype.init = function() {
|
||||||
// lazy init until first lookup
|
// lazy init until first lookup
|
||||||
this.index = null;
|
this.index = null;
|
||||||
}
|
};
|
||||||
|
|
||||||
BackSubIndexer.prototype._init = function() {
|
BackSubIndexer.prototype._init = function() {
|
||||||
this.index = Object.create(null);
|
this.index = Object.create(null);
|
||||||
@@ -60,11 +60,11 @@ BackSubIndexer.prototype._init = function() {
|
|||||||
self.index[target][sourceTitle] = true;
|
self.index[target][sourceTitle] = true;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
BackSubIndexer.prototype.rebuild = function() {
|
BackSubIndexer.prototype.rebuild = function() {
|
||||||
this.index = null;
|
this.index = null;
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get things that is being referenced in the text, e.g. tiddler names in the link syntax.
|
* Get things that is being referenced in the text, e.g. tiddler names in the link syntax.
|
||||||
@@ -78,7 +78,7 @@ BackSubIndexer.prototype._getTarget = function(tiddler) {
|
|||||||
return this.wiki[this.extractor](parser.tree, tiddler.fields.title);
|
return this.wiki[this.extractor](parser.tree, tiddler.fields.title);
|
||||||
}
|
}
|
||||||
return [];
|
return [];
|
||||||
}
|
};
|
||||||
|
|
||||||
BackSubIndexer.prototype.update = function(updateDescriptor) {
|
BackSubIndexer.prototype.update = function(updateDescriptor) {
|
||||||
// lazy init/update until first lookup
|
// lazy init/update until first lookup
|
||||||
@@ -106,7 +106,7 @@ BackSubIndexer.prototype.update = function(updateDescriptor) {
|
|||||||
}
|
}
|
||||||
self.index[target][updateDescriptor.new.tiddler.fields.title] = true;
|
self.index[target][updateDescriptor.new.tiddler.fields.title] = true;
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
BackSubIndexer.prototype.lookup = function(title) {
|
BackSubIndexer.prototype.lookup = function(title) {
|
||||||
if(!this.index) {
|
if(!this.index) {
|
||||||
@@ -117,6 +117,6 @@ BackSubIndexer.prototype.lookup = function(title) {
|
|||||||
} else {
|
} else {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
exports.BackIndexer = BackIndexer;
|
exports.BackIndexer = BackIndexer;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ FieldIndexer.prototype.init = function() {
|
|||||||
this.index = null;
|
this.index = null;
|
||||||
this.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;
|
this.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;
|
||||||
this.addIndexMethods();
|
this.addIndexMethods();
|
||||||
}
|
};
|
||||||
|
|
||||||
// Provided for testing
|
// Provided for testing
|
||||||
FieldIndexer.prototype.setMaxIndexedValueLength = function(length) {
|
FieldIndexer.prototype.setMaxIndexedValueLength = function(length) {
|
||||||
@@ -33,14 +33,14 @@ FieldIndexer.prototype.addIndexMethods = function() {
|
|||||||
this.wiki.each.byField = function(name,value) {
|
this.wiki.each.byField = function(name,value) {
|
||||||
var lookup = self.lookup(name,value);
|
var lookup = self.lookup(name,value);
|
||||||
return lookup && lookup.filter(function(title) {
|
return lookup && lookup.filter(function(title) {
|
||||||
return self.wiki.tiddlerExists(title)
|
return self.wiki.tiddlerExists(title);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
// get shadow tiddlers, including shadow tiddlers that is overwritten
|
// get shadow tiddlers, including shadow tiddlers that is overwritten
|
||||||
this.wiki.eachShadow.byField = function(name,value) {
|
this.wiki.eachShadow.byField = function(name,value) {
|
||||||
var lookup = self.lookup(name,value);
|
var lookup = self.lookup(name,value);
|
||||||
return lookup && lookup.filter(function(title) {
|
return lookup && lookup.filter(function(title) {
|
||||||
return self.wiki.isShadowTiddler(title)
|
return self.wiki.isShadowTiddler(title);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
this.wiki.eachTiddlerPlusShadows.byField = function(name,value) {
|
this.wiki.eachTiddlerPlusShadows.byField = function(name,value) {
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ exports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) {
|
|||||||
this.updateCallback = updateCallback;
|
this.updateCallback = updateCallback;
|
||||||
this.resizeHandlers = new Map();
|
this.resizeHandlers = new Map();
|
||||||
this.dimensionsInfo = [
|
this.dimensionsInfo = [
|
||||||
["outer/width", win => win.outerWidth],
|
["outer/width", (win) => win.outerWidth],
|
||||||
["outer/height", win => win.outerHeight],
|
["outer/height", (win) => win.outerHeight],
|
||||||
["inner/width", win => win.innerWidth],
|
["inner/width", (win) => win.innerWidth],
|
||||||
["inner/height", win => win.innerHeight],
|
["inner/height", (win) => win.innerHeight],
|
||||||
["client/width", win => win.document.documentElement.clientWidth],
|
["client/width", (win) => win.document.documentElement.clientWidth],
|
||||||
["client/height", win => win.document.documentElement.clientHeight]
|
["client/height", (win) => win.document.documentElement.clientHeight]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ function KeyboardManager(options) {
|
|||||||
this.shortcutParsedList = []; // Stores the parsed key descriptors
|
this.shortcutParsedList = []; // Stores the parsed key descriptors
|
||||||
this.shortcutPriorityList = []; // Stores the parsed shortcut priority
|
this.shortcutPriorityList = []; // Stores the parsed shortcut priority
|
||||||
this.lookupNames = ["shortcuts"];
|
this.lookupNames = ["shortcuts"];
|
||||||
this.lookupNames.push($tw.platform.isMac ? "shortcuts-mac" : "shortcuts-not-mac")
|
this.lookupNames.push($tw.platform.isMac ? "shortcuts-mac" : "shortcuts-not-mac");
|
||||||
this.lookupNames.push($tw.platform.isWindows ? "shortcuts-windows" : "shortcuts-not-windows");
|
this.lookupNames.push($tw.platform.isWindows ? "shortcuts-windows" : "shortcuts-not-windows");
|
||||||
this.lookupNames.push($tw.platform.isLinux ? "shortcuts-linux" : "shortcuts-not-linux");
|
this.lookupNames.push($tw.platform.isLinux ? "shortcuts-linux" : "shortcuts-not-linux");
|
||||||
this.updateShortcutLists(this.getShortcutTiddlerList());
|
this.updateShortcutLists(this.getShortcutTiddlerList());
|
||||||
@@ -161,7 +161,7 @@ KeyboardManager.prototype.getModifierKeys = function() {
|
|||||||
91, // Meta (left)
|
91, // Meta (left)
|
||||||
93, // Meta (right)
|
93, // Meta (right)
|
||||||
224 // Meta (Firefox)
|
224 // Meta (Firefox)
|
||||||
]
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -187,8 +187,7 @@ KeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor,options) {
|
|||||||
metaKey: false
|
metaKey: false
|
||||||
};
|
};
|
||||||
for(var t=0; t<components.length; t++) {
|
for(var t=0; t<components.length; t++) {
|
||||||
var s = components[t].toLowerCase(),
|
var s = components[t].toLowerCase();
|
||||||
c = s.charCodeAt(0);
|
|
||||||
// Look for modifier keys
|
// Look for modifier keys
|
||||||
if(s === "ctrl") {
|
if(s === "ctrl") {
|
||||||
info.ctrlKey = true;
|
info.ctrlKey = true;
|
||||||
@@ -266,7 +265,7 @@ KeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
};
|
||||||
|
|
||||||
KeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {
|
KeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {
|
||||||
return keyInfo &&
|
return keyInfo &&
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ exports.params = [
|
|||||||
Run the macro
|
Run the macro
|
||||||
*/
|
*/
|
||||||
exports.run = function(filter,format) {
|
exports.run = function(filter,format) {
|
||||||
var self = this,
|
var tiddlers = this.wiki.filterTiddlers(filter),
|
||||||
tiddlers = this.wiki.filterTiddlers(filter),
|
|
||||||
tiddler,
|
tiddler,
|
||||||
fields = [],
|
fields = [],
|
||||||
t,f;
|
t,f;
|
||||||
@@ -46,13 +45,13 @@ exports.run = function(filter,format) {
|
|||||||
var p = fields.indexOf(value);
|
var p = fields.indexOf(value);
|
||||||
if(p !== -1) {
|
if(p !== -1) {
|
||||||
fields.splice(p,1);
|
fields.splice(p,1);
|
||||||
fields.unshift(value)
|
fields.unshift(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Output the column headings
|
// Output the column headings
|
||||||
var output = [], row = [];
|
var output = [], row = [];
|
||||||
fields.forEach(function(value) {
|
fields.forEach(function(value) {
|
||||||
row.push(quoteAndEscape(value))
|
row.push(quoteAndEscape(value));
|
||||||
});
|
});
|
||||||
output.push(row.join(","));
|
output.push(row.join(","));
|
||||||
// Output each tiddler
|
// Output each tiddler
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ exports.run = function(shortcuts,prefix,separator,suffix) {
|
|||||||
if(shortcutArray.length > 0) {
|
if(shortcutArray.length > 0) {
|
||||||
shortcutArray.sort(function(a,b) {
|
shortcutArray.sort(function(a,b) {
|
||||||
return a.toLowerCase().localeCompare(b.toLowerCase());
|
return a.toLowerCase().localeCompare(b.toLowerCase());
|
||||||
})
|
});
|
||||||
return prefix + shortcutArray.join(separator) + suffix;
|
return prefix + shortcutArray.join(separator) + suffix;
|
||||||
} else {
|
} else {
|
||||||
return "";
|
return "";
|
||||||
|
|||||||
@@ -7,8 +7,6 @@ The audio parser parses an audio tiddler into an embeddable HTML element
|
|||||||
|
|
||||||
\*/
|
\*/
|
||||||
|
|
||||||
/*jslint node: true, browser: true */
|
|
||||||
/*global $tw: false */
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var AudioParser = function(type,text,options) {
|
var AudioParser = function(type,text,options) {
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ var BinaryParser = function(type,text,options) {
|
|||||||
class: {type: "string", value: "tc-binary-warning"}
|
class: {type: "string", value: "tc-binary-warning"}
|
||||||
},
|
},
|
||||||
children: [warn, link]
|
children: [warn, link]
|
||||||
}
|
};
|
||||||
this.tree = [element];
|
this.tree = [element];
|
||||||
this.source = text;
|
this.source = text;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ var CsvParser = function(type,text,options) {
|
|||||||
row.children.push({
|
row.children.push({
|
||||||
"type": "element", "tag": tag, "children": [{
|
"type": "element", "tag": tag, "children": [{
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"text": columns[column] || ''
|
"text": columns[column] || ""
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ exports.parseWhiteSpace = function(source,pos) {
|
|||||||
type: "whitespace",
|
type: "whitespace",
|
||||||
start: pos,
|
start: pos,
|
||||||
end: p
|
end: p
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ exports.parseMacroParameters = function(node,source,pos) {
|
|||||||
}
|
}
|
||||||
node.end = pos;
|
node.end = pos;
|
||||||
return node;
|
return node;
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Look for a macro invocation parameter. Returns null if not found, or {type: "macro-parameter", name:, value:, start:, end:}
|
Look for a macro invocation parameter. Returns null if not found, or {type: "macro-parameter", name:, value:, start:, end:}
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ var ImageParser = function(type,text,options) {
|
|||||||
type: "element",
|
type: "element",
|
||||||
tag: "iframe",
|
tag: "iframe",
|
||||||
attributes: {}
|
attributes: {}
|
||||||
},
|
};
|
||||||
src;
|
|
||||||
if(options._canonical_uri) {
|
if(options._canonical_uri) {
|
||||||
element.attributes.src = {type: "string", value: options._canonical_uri};
|
element.attributes.src = {type: "string", value: options._canonical_uri};
|
||||||
} else if(text) {
|
} else if(text) {
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ var VideoParser = function(type,text,options) {
|
|||||||
controls: {type: "string", value: "controls"},
|
controls: {type: "string", value: "controls"},
|
||||||
style: {type: "string", value: "width: 100%; object-fit: contain"}
|
style: {type: "string", value: "width: 100%; object-fit: contain"}
|
||||||
}
|
}
|
||||||
},
|
};
|
||||||
src;
|
|
||||||
if(options._canonical_uri) {
|
if(options._canonical_uri) {
|
||||||
element.attributes.src = {type: "string", value: options._canonical_uri};
|
element.attributes.src = {type: "string", value: options._canonical_uri};
|
||||||
} else if(text) {
|
} else if(text) {
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ exports.init = function(parser) {
|
|||||||
Parse the most recent match
|
Parse the most recent match
|
||||||
*/
|
*/
|
||||||
exports.parse = function() {
|
exports.parse = function() {
|
||||||
// Get all the details of the match
|
|
||||||
var entityString = this.match[1];
|
|
||||||
// Move past the macro call
|
// Move past the macro call
|
||||||
this.parser.pos = this.matchRegExp.lastIndex;
|
this.parser.pos = this.matchRegExp.lastIndex;
|
||||||
// Return the entity
|
// Return the entity
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ exports.init = function(parser) {
|
|||||||
Parse the most recent match
|
Parse the most recent match
|
||||||
*/
|
*/
|
||||||
exports.parse = function() {
|
exports.parse = function() {
|
||||||
var self = this;
|
|
||||||
// Move past the pragma invocation
|
// Move past the pragma invocation
|
||||||
this.parser.pos = this.matchRegExp.lastIndex;
|
this.parser.pos = this.matchRegExp.lastIndex;
|
||||||
// Parse the filter terminated by a line break
|
// Parse the filter terminated by a line break
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ exports.parseLink = function(source,pos) {
|
|||||||
splitPos = null;
|
splitPos = null;
|
||||||
}
|
}
|
||||||
// Pull out the tooltip and URL
|
// Pull out the tooltip and URL
|
||||||
var tooltip, URL, urlStart;
|
var URL, urlStart;
|
||||||
textNode.start = pos;
|
textNode.start = pos;
|
||||||
if(splitPos) {
|
if(splitPos) {
|
||||||
urlStart = splitPos + 1;
|
urlStart = splitPos + 1;
|
||||||
|
|||||||
@@ -67,5 +67,5 @@ exports.parse = function() {
|
|||||||
return [{
|
return [{
|
||||||
type: "void",
|
type: "void",
|
||||||
children: tree
|
children: tree
|
||||||
}]
|
}];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ exports.parse = function() {
|
|||||||
name: name,
|
name: name,
|
||||||
type: "string",
|
type: "string",
|
||||||
value: paramValue
|
value: paramValue
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
// Prepare the tiddler widget
|
// Prepare the tiddler widget
|
||||||
var tr, targetTitle, targetField, targetIndex, tiddlerNode;
|
var tr, targetTitle, targetField, targetIndex, tiddlerNode;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ exports.parse = function() {
|
|||||||
name: name,
|
name: name,
|
||||||
type: "string",
|
type: "string",
|
||||||
value: paramValue
|
value: paramValue
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
// Prepare the tiddler widget
|
// Prepare the tiddler widget
|
||||||
var tr, targetTitle, targetField, targetIndex, tiddlerNode;
|
var tr, targetTitle, targetField, targetIndex, tiddlerNode;
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ $$$
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var widget = require("$:/core/modules/widgets/widget.js");
|
|
||||||
|
|
||||||
exports.name = "typedblock";
|
exports.name = "typedblock";
|
||||||
exports.types = {block: true};
|
exports.types = {block: true};
|
||||||
|
|
||||||
|
|||||||
@@ -49,8 +49,7 @@ PluginSwitcher.prototype.switchPlugins = function() {
|
|||||||
var tiddler = self.wiki.getTiddler(title);
|
var tiddler = self.wiki.getTiddler(title);
|
||||||
if(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {
|
if(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {
|
||||||
plugins.push(title);
|
plugins.push(title);
|
||||||
var pluginInfo = $tw.utils.parseJSONSafe(self.wiki.getTiddlerText(title)),
|
var dependents = $tw.utils.parseStringArray(tiddler.fields.dependents || "");
|
||||||
dependents = $tw.utils.parseStringArray(tiddler.fields.dependents || "");
|
|
||||||
$tw.utils.each(dependents,function(title) {
|
$tw.utils.each(dependents,function(title) {
|
||||||
accumulatePlugin(title);
|
accumulatePlugin(title);
|
||||||
});
|
});
|
||||||
@@ -58,11 +57,11 @@ PluginSwitcher.prototype.switchPlugins = function() {
|
|||||||
};
|
};
|
||||||
accumulatePlugin(selectedPluginTitle);
|
accumulatePlugin(selectedPluginTitle);
|
||||||
// Read the plugin info for the incoming plugins
|
// Read the plugin info for the incoming plugins
|
||||||
var changes = $tw.wiki.readPluginInfo(plugins);
|
$tw.wiki.readPluginInfo(plugins);
|
||||||
// Unregister any existing theme tiddlers
|
// Unregister any existing theme tiddlers
|
||||||
var unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);
|
$tw.wiki.unregisterPluginTiddlers(this.pluginType);
|
||||||
// Register any new theme tiddlers
|
// Register any new theme tiddlers
|
||||||
var registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);
|
$tw.wiki.registerPluginTiddlers(this.pluginType,plugins);
|
||||||
// Unpack the current theme tiddlers
|
// Unpack the current theme tiddlers
|
||||||
$tw.wiki.unpackPluginTiddlers();
|
$tw.wiki.unpackPluginTiddlers();
|
||||||
// Call the switch handler
|
// Call the switch handler
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ var findSaver = function(window) {
|
|||||||
console.log({ msg: "custom saver is disabled", reason: err });
|
console.log({ msg: "custom saver is disabled", reason: err });
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
var saver = findSaver(window) || findSaver(window.parent) || {};
|
var saver = findSaver(window) || findSaver(window.parent) || {};
|
||||||
|
|
||||||
var CustomSaver = function(wiki) {
|
var CustomSaver = function(wiki) {
|
||||||
|
|||||||
@@ -101,7 +101,6 @@ GiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {
|
|||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
var putResponseData = $tw.utils.parseJSONSafe(putResponseDataJson);
|
|
||||||
callback(null);
|
callback(null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ var GitHubSaver = function(wiki) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
GitHubSaver.prototype.save = function(text,method,callback) {
|
GitHubSaver.prototype.save = function(text,method,callback) {
|
||||||
var self = this,
|
var username = this.wiki.getTiddlerText("$:/GitHub/Username"),
|
||||||
username = this.wiki.getTiddlerText("$:/GitHub/Username"),
|
|
||||||
password = $tw.utils.getPassword("github"),
|
password = $tw.utils.getPassword("github"),
|
||||||
repo = this.wiki.getTiddlerText("$:/GitHub/Repo"),
|
repo = this.wiki.getTiddlerText("$:/GitHub/Repo"),
|
||||||
path = this.wiki.getTiddlerText("$:/GitHub/Path",""),
|
path = this.wiki.getTiddlerText("$:/GitHub/Path",""),
|
||||||
@@ -81,7 +80,6 @@ GitHubSaver.prototype.save = function(text,method,callback) {
|
|||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
var putResponseData = $tw.utils.parseJSONSafe(putResponseDataJson);
|
|
||||||
callback(null);
|
callback(null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ var GitLabSaver = function(wiki) {
|
|||||||
|
|
||||||
GitLabSaver.prototype.save = function(text,method,callback) {
|
GitLabSaver.prototype.save = function(text,method,callback) {
|
||||||
/* See https://docs.gitlab.com/ee/api/repository_files.html */
|
/* See https://docs.gitlab.com/ee/api/repository_files.html */
|
||||||
var self = this,
|
var username = this.wiki.getTiddlerText("$:/GitLab/Username"),
|
||||||
username = this.wiki.getTiddlerText("$:/GitLab/Username"),
|
|
||||||
password = $tw.utils.getPassword("gitlab"),
|
password = $tw.utils.getPassword("gitlab"),
|
||||||
repo = this.wiki.getTiddlerText("$:/GitLab/Repo"),
|
repo = this.wiki.getTiddlerText("$:/GitLab/Repo"),
|
||||||
path = this.wiki.getTiddlerText("$:/GitLab/Path",""),
|
path = this.wiki.getTiddlerText("$:/GitLab/Path",""),
|
||||||
@@ -45,7 +44,7 @@ GitLabSaver.prototype.save = function(text,method,callback) {
|
|||||||
var uri = endpoint + "/projects/" + encodeURIComponent(repo) + "/repository/";
|
var uri = endpoint + "/projects/" + encodeURIComponent(repo) + "/repository/";
|
||||||
// Perform a get request to get the details (inc shas) of files in the same path as our file
|
// Perform a get request to get the details (inc shas) of files in the same path as our file
|
||||||
$tw.utils.httpRequest({
|
$tw.utils.httpRequest({
|
||||||
url: uri + "tree/?path=" + encodeURIComponent(path.replace(/^\/+|\/$/g, '')) + "&branch=" + encodeURIComponent(branch.replace(/^\/+|\/$/g, '')),
|
url: uri + "tree/?path=" + encodeURIComponent(path.replace(/^\/+|\/$/g, "")) + "&branch=" + encodeURIComponent(branch.replace(/^\/+|\/$/g, "")),
|
||||||
type: "GET",
|
type: "GET",
|
||||||
headers: headers,
|
headers: headers,
|
||||||
callback: function(err,getResponseDataJson,xhr) {
|
callback: function(err,getResponseDataJson,xhr) {
|
||||||
@@ -71,7 +70,7 @@ GitLabSaver.prototype.save = function(text,method,callback) {
|
|||||||
};
|
};
|
||||||
// Perform a request to save the file
|
// Perform a request to save the file
|
||||||
$tw.utils.httpRequest({
|
$tw.utils.httpRequest({
|
||||||
url: uri + "files/" + encodeURIComponent(path.replace(/^\/+/, '') + filename),
|
url: uri + "files/" + encodeURIComponent(path.replace(/^\/+/, "") + filename),
|
||||||
type: requestType,
|
type: requestType,
|
||||||
headers: headers,
|
headers: headers,
|
||||||
data: JSON.stringify(data),
|
data: JSON.stringify(data),
|
||||||
@@ -79,7 +78,6 @@ GitLabSaver.prototype.save = function(text,method,callback) {
|
|||||||
if(err) {
|
if(err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
var putResponseData = $tw.utils.parseJSONSafe(putResponseDataJson);
|
|
||||||
callback(null);
|
callback(null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ UploadSaver.prototype.save = function(text,method,callback) {
|
|||||||
}
|
}
|
||||||
// Assemble the header
|
// Assemble the header
|
||||||
var boundary = "---------------------------" + "AaB03x";
|
var boundary = "---------------------------" + "AaB03x";
|
||||||
var uploadFormName = "UploadPlugin";
|
|
||||||
var head = [];
|
var head = [];
|
||||||
head.push("--" + boundary + "\r\nContent-disposition: form-data; name=\"UploadPlugin\"\r\n");
|
head.push("--" + boundary + "\r\nContent-disposition: form-data; name=\"UploadPlugin\"\r\n");
|
||||||
head.push("backupDir=" + backupDir + ";user=" + username + ";password=" + password + ";uploaddir=" + uploadDir + ";;");
|
head.push("backupDir=" + backupDir + ";user=" + username + ";password=" + password + ";uploaddir=" + uploadDir + ";;");
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ function loadIFrame(url,callback) {
|
|||||||
Unload library iframe for given url
|
Unload library iframe for given url
|
||||||
*/
|
*/
|
||||||
function unloadIFrame(url){
|
function unloadIFrame(url){
|
||||||
var iframes = document.getElementsByTagName('iframe');
|
var iframes = document.getElementsByTagName("iframe");
|
||||||
for(var t=iframes.length-1; t--; t>=0) {
|
for(var t=iframes.length-1; t--; t>=0) {
|
||||||
var iframe = iframes[t];
|
var iframe = iframes[t];
|
||||||
if(iframe.getAttribute("library") === "true" &&
|
if(iframe.getAttribute("library") === "true" &&
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ $tw.eventBus = {
|
|||||||
emit(event,data) {
|
emit(event,data) {
|
||||||
const listeners = this.listenersMap.get(event);
|
const listeners = this.listenersMap.get(event);
|
||||||
if(listeners) {
|
if(listeners) {
|
||||||
listeners.forEach(fn => fn(data));
|
listeners.forEach((fn) => fn(data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ exports.startup = function() {
|
|||||||
faviconLink.setAttribute("href",dataURI);
|
faviconLink.setAttribute("href",dataURI);
|
||||||
$tw.faviconPublisher.send({verb: "FAVICON",body: dataURI});
|
$tw.faviconPublisher.send({verb: "FAVICON",body: dataURI});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
$tw.faviconPublisher = new $tw.utils.BrowserMessagingPublisher({type: "FAVICON", onsubscribe: setFavicon});
|
$tw.faviconPublisher = new $tw.utils.BrowserMessagingPublisher({type: "FAVICON", onsubscribe: setFavicon});
|
||||||
// Set up the favicon
|
// Set up the favicon
|
||||||
setFavicon();
|
setFavicon();
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ exports.startup = function() {
|
|||||||
if(requiresReload) {
|
if(requiresReload) {
|
||||||
requireReloadDueToPluginChange = true;
|
requireReloadDueToPluginChange = true;
|
||||||
} else if(tiddler) {
|
} else if(tiddler) {
|
||||||
var pluginType = tiddler.fields["plugin-type"];
|
|
||||||
if($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields["plugin-type"] || ""),"no") === "yes") {
|
if($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields["plugin-type"] || ""),"no") === "yes") {
|
||||||
changesToProcess.push(title);
|
changesToProcess.push(title);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ exports.startup = function() {
|
|||||||
$tw.syncer = new $tw.Syncer({
|
$tw.syncer = new $tw.Syncer({
|
||||||
wiki: $tw.wiki,
|
wiki: $tw.wiki,
|
||||||
syncadaptor: $tw.syncadaptor,
|
syncadaptor: $tw.syncadaptor,
|
||||||
logging: $tw.wiki.getTiddlerText('$:/config/SyncLogging', "yes") === "yes"
|
logging: $tw.wiki.getTiddlerText("$:/config/SyncLogging", "yes") === "yes"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Setup the saver handler
|
// Setup the saver handler
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ exports.startup = function() {
|
|||||||
$tw.utils.each($tw.windows,function(win) {
|
$tw.utils.each($tw.windows,function(win) {
|
||||||
win.close();
|
win.close();
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
$tw.rootWidget.addEventListener("tm-close-all-windows",closeAllWindows);
|
$tw.rootWidget.addEventListener("tm-close-all-windows",closeAllWindows);
|
||||||
// Close open windows when unloading main window
|
// Close open windows when unloading main window
|
||||||
$tw.addUnloadTask(closeAllWindows);
|
$tw.addUnloadTask(closeAllWindows);
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ var ClassicStoryView = function(listWidget) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ClassicStoryView.prototype.navigateTo = function(historyInfo) {
|
ClassicStoryView.prototype.navigateTo = function(historyInfo) {
|
||||||
var duration = $tw.utils.getAnimationDuration()
|
|
||||||
var listElementIndex = this.listWidget.findListItem(0,historyInfo.title);
|
var listElementIndex = this.listWidget.findListItem(0,historyInfo.title);
|
||||||
if(listElementIndex === undefined) {
|
if(listElementIndex === undefined) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ PopStoryView.prototype.insert = function(widget) {
|
|||||||
]);
|
]);
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$tw.utils.removeStyles(targetElement, ["transition", "transform", "opactity"]);
|
$tw.utils.removeStyles(targetElement, ["transition", "transform", "opactity"]);
|
||||||
}, duration)
|
}, duration);
|
||||||
};
|
};
|
||||||
|
|
||||||
PopStoryView.prototype.remove = function(widget) {
|
PopStoryView.prototype.remove = function(widget) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ var ZoominListView = function(listWidget) {
|
|||||||
this.listWidget = listWidget;
|
this.listWidget = listWidget;
|
||||||
this.textNodeLogger = new $tw.utils.Logger("zoomin story river view", {
|
this.textNodeLogger = new $tw.utils.Logger("zoomin story river view", {
|
||||||
enable: true,
|
enable: true,
|
||||||
colour: 'red'
|
colour: "red"
|
||||||
});
|
});
|
||||||
// Get the index of the tiddler that is at the top of the history
|
// Get the index of the tiddler that is at the top of the history
|
||||||
var history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),
|
var history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),
|
||||||
@@ -212,8 +212,8 @@ ZoominListView.prototype.remove = function(widget) {
|
|||||||
]);
|
]);
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$tw.utils.removeStyles(toWidgetDomNode, ["transformOrigin", "transform", "transition", "opacity", "zIndex"]);
|
$tw.utils.removeStyles(toWidgetDomNode, ["transformOrigin", "transform", "transition", "opacity", "zIndex"]);
|
||||||
|
removeElement();
|
||||||
}, duration);
|
}, duration);
|
||||||
setTimeout(removeElement,duration);
|
|
||||||
// Now the tiddler we're going back to
|
// Now the tiddler we're going back to
|
||||||
if(toWidgetDomNode) {
|
if(toWidgetDomNode) {
|
||||||
$tw.utils.setStyle(toWidgetDomNode,[
|
$tw.utils.setStyle(toWidgetDomNode,[
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function Syncer(options) {
|
|||||||
self.processTaskQueue();
|
self.processTaskQueue();
|
||||||
} else {
|
} else {
|
||||||
// Look for deletions of tiddlers we're already syncing
|
// Look for deletions of tiddlers we're already syncing
|
||||||
var outstandingDeletion = false
|
var outstandingDeletion = false;
|
||||||
$tw.utils.each(changes,function(change,title,object) {
|
$tw.utils.each(changes,function(change,title,object) {
|
||||||
if(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {
|
if(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {
|
||||||
outstandingDeletion = true;
|
outstandingDeletion = true;
|
||||||
@@ -304,7 +304,7 @@ Syncer.prototype.syncFromServer = function() {
|
|||||||
|
|
||||||
Syncer.prototype.canSyncFromServer = function() {
|
Syncer.prototype.canSyncFromServer = function() {
|
||||||
return !!this.syncadaptor.getUpdatedTiddlers || !!this.syncadaptor.getSkinnyTiddlers;
|
return !!this.syncadaptor.getUpdatedTiddlers || !!this.syncadaptor.getSkinnyTiddlers;
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Force load a tiddler from the server
|
Force load a tiddler from the server
|
||||||
@@ -355,7 +355,7 @@ Dispay a password prompt
|
|||||||
*/
|
*/
|
||||||
Syncer.prototype.displayLoginPrompt = function() {
|
Syncer.prototype.displayLoginPrompt = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
var promptInfo = $tw.passwordPrompt.createPrompt({
|
$tw.passwordPrompt.createPrompt({
|
||||||
serviceName: $tw.language.getString("LoginToTiddlySpace"),
|
serviceName: $tw.language.getString("LoginToTiddlySpace"),
|
||||||
callback: function(data) {
|
callback: function(data) {
|
||||||
self.login(data.username,data.password,function(err,isLoggedIn) {
|
self.login(data.username,data.password,function(err,isLoggedIn) {
|
||||||
@@ -530,7 +530,7 @@ function SaveTiddlerTask(syncer,title) {
|
|||||||
|
|
||||||
SaveTiddlerTask.prototype.toString = function() {
|
SaveTiddlerTask.prototype.toString = function() {
|
||||||
return "SAVE " + this.title;
|
return "SAVE " + this.title;
|
||||||
}
|
};
|
||||||
|
|
||||||
SaveTiddlerTask.prototype.run = function(callback) {
|
SaveTiddlerTask.prototype.run = function(callback) {
|
||||||
var self = this,
|
var self = this,
|
||||||
@@ -568,7 +568,7 @@ function DeleteTiddlerTask(syncer,title) {
|
|||||||
|
|
||||||
DeleteTiddlerTask.prototype.toString = function() {
|
DeleteTiddlerTask.prototype.toString = function() {
|
||||||
return "DELETE " + this.title;
|
return "DELETE " + this.title;
|
||||||
}
|
};
|
||||||
|
|
||||||
DeleteTiddlerTask.prototype.run = function(callback) {
|
DeleteTiddlerTask.prototype.run = function(callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
@@ -595,7 +595,7 @@ function LoadTiddlerTask(syncer,title) {
|
|||||||
|
|
||||||
LoadTiddlerTask.prototype.toString = function() {
|
LoadTiddlerTask.prototype.toString = function() {
|
||||||
return "LOAD " + this.title;
|
return "LOAD " + this.title;
|
||||||
}
|
};
|
||||||
|
|
||||||
LoadTiddlerTask.prototype.run = function(callback) {
|
LoadTiddlerTask.prototype.run = function(callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
@@ -621,7 +621,7 @@ function SyncFromServerTask(syncer) {
|
|||||||
|
|
||||||
SyncFromServerTask.prototype.toString = function() {
|
SyncFromServerTask.prototype.toString = function() {
|
||||||
return "SYNCFROMSERVER";
|
return "SYNCFROMSERVER";
|
||||||
}
|
};
|
||||||
|
|
||||||
SyncFromServerTask.prototype.run = function(callback) {
|
SyncFromServerTask.prototype.run = function(callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ var BLOCKED_PLUGINS = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.upgrade = function(wiki,titles,tiddlers) {
|
exports.upgrade = function(wiki,titles,tiddlers) {
|
||||||
var self = this,
|
var messages = {},
|
||||||
messages = {},
|
|
||||||
upgradeLibrary,
|
upgradeLibrary,
|
||||||
getLibraryTiddler = function(title) {
|
getLibraryTiddler = function(title) {
|
||||||
if(!upgradeLibrary) {
|
if(!upgradeLibrary) {
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ var DONT_IMPORT_LIST = ["$:/Import", "$:/build"],
|
|||||||
WARN_IMPORT_PREFIX_LIST = ["$:/core/modules/"];
|
WARN_IMPORT_PREFIX_LIST = ["$:/core/modules/"];
|
||||||
|
|
||||||
exports.upgrade = function(wiki,titles,tiddlers) {
|
exports.upgrade = function(wiki,titles,tiddlers) {
|
||||||
var self = this,
|
var messages = {},
|
||||||
messages = {},
|
|
||||||
showAlert = false;
|
showAlert = false;
|
||||||
// Check for tiddlers on our list
|
// Check for tiddlers on our list
|
||||||
$tw.utils.each(titles,function(title) {
|
$tw.utils.each(titles,function(title) {
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ var MAPPINGS = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.upgrade = function(wiki,titles,tiddlers) {
|
exports.upgrade = function(wiki,titles,tiddlers) {
|
||||||
var self = this,
|
var messages = {};
|
||||||
messages = {};
|
|
||||||
// Check for tiddlers on our list
|
// Check for tiddlers on our list
|
||||||
$tw.utils.each(titles,function(title) {
|
$tw.utils.each(titles,function(title) {
|
||||||
var mapping = MAPPINGS[title];
|
var mapping = MAPPINGS[title];
|
||||||
|
|||||||
@@ -13,19 +13,19 @@ Base64 utility functions
|
|||||||
Base64 utility functions that work in either browser or Node.js
|
Base64 utility functions that work in either browser or Node.js
|
||||||
*/
|
*/
|
||||||
|
|
||||||
exports.btoa = binstr => window.btoa(binstr);
|
exports.btoa = (binstr) => window.btoa(binstr);
|
||||||
exports.atob = b64 => window.atob(b64);
|
exports.atob = (b64) => window.atob(b64);
|
||||||
|
|
||||||
function base64ToBytes(base64) {
|
function base64ToBytes(base64) {
|
||||||
const binString = exports.atob(base64);
|
const binString = exports.atob(base64);
|
||||||
return Uint8Array.from(binString, m => m.codePointAt(0));
|
return Uint8Array.from(binString, (m) => m.codePointAt(0));
|
||||||
};
|
};
|
||||||
|
|
||||||
function bytesToBase64(bytes) {
|
function bytesToBase64(bytes) {
|
||||||
const binString = Array.from(bytes, byte => String.fromCodePoint(byte)).join("");
|
const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join("");
|
||||||
return exports.btoa(binString);
|
return exports.btoa(binString);
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.base64EncodeUtf8 = str => bytesToBase64(new TextEncoder().encode(str));
|
exports.base64EncodeUtf8 = (str) => bytesToBase64(new TextEncoder().encode(str));
|
||||||
|
|
||||||
exports.base64DecodeUtf8 = str => new TextDecoder().decode(base64ToBytes(str));
|
exports.base64DecodeUtf8 = (str) => new TextDecoder().decode(base64ToBytes(str));
|
||||||
@@ -30,7 +30,7 @@ var getCellInfo = function(text, start, length, SEPARATOR) {
|
|||||||
return [cellStart, i, false];
|
return [cellStart, i, false];
|
||||||
|
|
||||||
} else if(cellCharacter === QUOTE && isCellQuoted) {
|
} else if(cellCharacter === QUOTE && isCellQuoted) {
|
||||||
var nextCharacter = i + 1 < length ? text.charAt(i + 1) : '';
|
var nextCharacter = i + 1 < length ? text.charAt(i + 1) : "";
|
||||||
if(nextCharacter !== QUOTE) {
|
if(nextCharacter !== QUOTE) {
|
||||||
return [cellStart, i, true];
|
return [cellStart, i, true];
|
||||||
} else {
|
} else {
|
||||||
@@ -40,7 +40,7 @@ var getCellInfo = function(text, start, length, SEPARATOR) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return [cellStart, i, isCellQuoted];
|
return [cellStart, i, isCellQuoted];
|
||||||
}
|
};
|
||||||
|
|
||||||
exports.parseCsvString = function(text, options) {
|
exports.parseCsvString = function(text, options) {
|
||||||
if(!text) {
|
if(!text) {
|
||||||
@@ -65,18 +65,18 @@ exports.parseCsvString = function(text, options) {
|
|||||||
i = cellInfo[1];
|
i = cellInfo[1];
|
||||||
|
|
||||||
var character = text.charAt(i);
|
var character = text.charAt(i);
|
||||||
var nextCharacter = i + 1 < length ? text.charAt(i + 1) : '';
|
var nextCharacter = i + 1 < length ? text.charAt(i + 1) : "";
|
||||||
|
|
||||||
if(character === "\r" || character === "\n") {
|
if(character === "\r" || character === "\n") {
|
||||||
// Edge case for empty rows
|
// Edge case for empty rows
|
||||||
if (nextRow.length === 1 && nextRow[0] === '') {
|
if(nextRow.length === 1 && nextRow[0] === "") {
|
||||||
nextRow.length = 0;
|
nextRow.length = 0;
|
||||||
}
|
}
|
||||||
rows.push(nextRow);
|
rows.push(nextRow);
|
||||||
nextRow = [];
|
nextRow = [];
|
||||||
|
|
||||||
if(character === "\r") {
|
if(character === "\r") {
|
||||||
var nextCharacter = i + 1 < length ? text.charAt(i + 1) : '';
|
var nextCharacter = i + 1 < length ? text.charAt(i + 1) : "";
|
||||||
|
|
||||||
if(nextCharacter === "\n") {
|
if(nextCharacter === "\n") {
|
||||||
i++;
|
i++;
|
||||||
@@ -93,7 +93,7 @@ exports.parseCsvString = function(text, options) {
|
|||||||
rows.push(nextRow);
|
rows.push(nextRow);
|
||||||
|
|
||||||
return rows;
|
return rows;
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Parse a CSV string with a header row and return an array of hashmaps.
|
Parse a CSV string with a header row and return an array of hashmaps.
|
||||||
@@ -116,4 +116,4 @@ exports.parseCsvStringWithHeader = function(text,options) {
|
|||||||
csv[i] = rowObject;
|
csv[i] = rowObject;
|
||||||
}
|
}
|
||||||
return csv;
|
return csv;
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Deprecated util functions
|
|||||||
|
|
||||||
\*/
|
\*/
|
||||||
|
|
||||||
exports.logTable = data => console.table(data);
|
exports.logTable = (data) => console.table(data);
|
||||||
|
|
||||||
exports.repeat = (str,count) => str.repeat(count);
|
exports.repeat = (str,count) => str.repeat(count);
|
||||||
|
|
||||||
@@ -23,13 +23,13 @@ exports.trim = function(str) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.hopArray = (object,array) => array.some(element => $tw.utils.hop(object,element));
|
exports.hopArray = (object,array) => array.some((element) => $tw.utils.hop(object,element));
|
||||||
|
|
||||||
exports.sign = Math.sign;
|
exports.sign = Math.sign;
|
||||||
|
|
||||||
exports.strEndsWith = (str,ending,position) => str.endsWith(ending,position);
|
exports.strEndsWith = (str,ending,position) => str.endsWith(ending,position);
|
||||||
|
|
||||||
exports.stringifyNumber = num => num.toString();
|
exports.stringifyNumber = (num) => num.toString();
|
||||||
|
|
||||||
exports.tagToCssSelector = function(tagName) {
|
exports.tagToCssSelector = function(tagName) {
|
||||||
return "tc-tagged-" + encodeURIComponent(tagName).replace(/[!"#$%&'()*+,\-./:;<=>?@[\\\]^`{\|}~,]/mg,function(c) {
|
return "tc-tagged-" + encodeURIComponent(tagName).replace(/[!"#$%&'()*+,\-./:;<=>?@[\\\]^`{\|}~,]/mg,function(c) {
|
||||||
|
|||||||
@@ -30,10 +30,12 @@ Remove style properties of an element
|
|||||||
styleProperties: ordered array of string property names
|
styleProperties: ordered array of string property names
|
||||||
*/
|
*/
|
||||||
exports.removeStyles = function(element, styleProperties) {
|
exports.removeStyles = function(element, styleProperties) {
|
||||||
|
if(element) {
|
||||||
for(var i=0; i<styleProperties.length; i++) {
|
for(var i=0; i<styleProperties.length; i++) {
|
||||||
element.style.removeProperty($tw.utils.convertStyleNameToPropertyName(styleProperties[i]));
|
element.style.removeProperty($tw.utils.convertStyleNameToPropertyName(styleProperties[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Remove single style property of an element
|
Remove single style property of an element
|
||||||
@@ -41,8 +43,8 @@ Remove single style property of an element
|
|||||||
styleProperty: string property name
|
styleProperty: string property name
|
||||||
*/
|
*/
|
||||||
exports.removeStyle = function(element, styleProperty) {
|
exports.removeStyle = function(element, styleProperty) {
|
||||||
$tw.utils.removeStyles(element, [styleProperty])
|
$tw.utils.removeStyles(element, [styleProperty]);
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Converts a standard CSS property name into the local browser-specific equivalent. For example:
|
Converts a standard CSS property name into the local browser-specific equivalent. For example:
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ exports.getPassword = function(name) {
|
|||||||
Force layout of a dom node and its descendents
|
Force layout of a dom node and its descendents
|
||||||
*/
|
*/
|
||||||
exports.forceLayout = function(element) {
|
exports.forceLayout = function(element) {
|
||||||
var dummy = element.offsetWidth;
|
void element.offsetWidth;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -246,7 +246,7 @@ exports.copyToClipboard = function(text,options) {
|
|||||||
}
|
}
|
||||||
if(!options.doNotNotify) {
|
if(!options.doNotNotify) {
|
||||||
var successNotification = options.successNotification || "$:/language/Notifications/CopiedToClipboard/Succeeded",
|
var successNotification = options.successNotification || "$:/language/Notifications/CopiedToClipboard/Succeeded",
|
||||||
failureNotification = options.failureNotification || "$:/language/Notifications/CopiedToClipboard/Failed"
|
failureNotification = options.failureNotification || "$:/language/Notifications/CopiedToClipboard/Failed";
|
||||||
$tw.notifier.display(succeeded ? successNotification : failureNotification);
|
$tw.notifier.display(succeeded ? successNotification : failureNotification);
|
||||||
}
|
}
|
||||||
document.body.removeChild(textArea);
|
document.body.removeChild(textArea);
|
||||||
|
|||||||
@@ -38,8 +38,7 @@ exports.makeDraggable = function(options) {
|
|||||||
dragFilter = options.dragFilterFn && options.dragFilterFn(),
|
dragFilter = options.dragFilterFn && options.dragFilterFn(),
|
||||||
titles = dragTiddler ? [dragTiddler] : [],
|
titles = dragTiddler ? [dragTiddler] : [],
|
||||||
startActions = options.startActions,
|
startActions = options.startActions,
|
||||||
variables,
|
variables;
|
||||||
domNodeRect;
|
|
||||||
if(dragFilter) {
|
if(dragFilter) {
|
||||||
titles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));
|
titles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));
|
||||||
}
|
}
|
||||||
@@ -151,7 +150,7 @@ exports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {
|
|||||||
if($tw.log.IMPORT) {
|
if($tw.log.IMPORT) {
|
||||||
console.log("Available data types:");
|
console.log("Available data types:");
|
||||||
for(var type=0; type<dataTransfer.types.length; type++) {
|
for(var type=0; type<dataTransfer.types.length; type++) {
|
||||||
console.log("type",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))
|
console.log("type",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(var t=0; t<importDataTypes.length; t++) {
|
for(var t=0; t<importDataTypes.length; t++) {
|
||||||
@@ -162,7 +161,7 @@ exports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {
|
|||||||
// Import the tiddlers in the data
|
// Import the tiddlers in the data
|
||||||
if(data !== "" && data !== null) {
|
if(data !== "" && data !== null) {
|
||||||
if($tw.log.IMPORT) {
|
if($tw.log.IMPORT) {
|
||||||
console.log("Importing data type '" + dataType.type + "', data: '" + data + "'")
|
console.log("Importing data type '" + dataType.type + "', data: '" + data + "'");
|
||||||
}
|
}
|
||||||
var tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);
|
var tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);
|
||||||
callback(tiddlerFields);
|
callback(tiddlerFields);
|
||||||
@@ -181,7 +180,7 @@ exports.importPaste = function(item,fallbackTitle,callback) {
|
|||||||
|
|
||||||
item.getAsString(function(data){
|
item.getAsString(function(data){
|
||||||
if($tw.log.IMPORT) {
|
if($tw.log.IMPORT) {
|
||||||
console.log("Importing data type '" + dataType.type + "', data: '" + data + "'")
|
console.log("Importing data type '" + dataType.type + "', data: '" + data + "'");
|
||||||
}
|
}
|
||||||
var tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);
|
var tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);
|
||||||
callback(tiddlerFields);
|
callback(tiddlerFields);
|
||||||
@@ -200,7 +199,7 @@ exports.itemHasValidDataType = function(item) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
};
|
||||||
|
|
||||||
var importDataTypes = [
|
var importDataTypes = [
|
||||||
{type: "text/vnd.tiddler", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {
|
{type: "text/vnd.tiddler", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ HttpClient.prototype.initiateHttpRequest = function(options) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
HttpClient.prototype.cancelAllHttpRequests = function() {
|
HttpClient.prototype.cancelAllHttpRequests = function() {
|
||||||
var self = this;
|
|
||||||
if(this.requests.length > 0) {
|
if(this.requests.length > 0) {
|
||||||
for(var t=this.requests.length - 1; t--; t>=0) {
|
for(var t=this.requests.length - 1; t--; t>=0) {
|
||||||
var requestInfo = this.requests[t];
|
var requestInfo = this.requests[t];
|
||||||
@@ -106,7 +105,7 @@ bearerAuthTokenFromStore: name of password store entry contain bear authorizatio
|
|||||||
*/
|
*/
|
||||||
function HttpClientRequest(options) {
|
function HttpClientRequest(options) {
|
||||||
var self = this;
|
var self = this;
|
||||||
console.log("Initiating an HTTP request",options)
|
console.log("Initiating an HTTP request",options);
|
||||||
this.wiki = options.wiki;
|
this.wiki = options.wiki;
|
||||||
this.completionActions = options.oncompletion;
|
this.completionActions = options.oncompletion;
|
||||||
this.progressActions = options.onprogress;
|
this.progressActions = options.onprogress;
|
||||||
@@ -211,7 +210,7 @@ HttpClientRequest.prototype.send = function(callback) {
|
|||||||
},
|
},
|
||||||
progress: function(lengthComputable,loaded,total) {
|
progress: function(lengthComputable,loaded,total) {
|
||||||
if(lengthComputable) {
|
if(lengthComputable) {
|
||||||
setBinding(self.bindProgress,"" + Math.floor((loaded/total) * 100))
|
setBinding(self.bindProgress,"" + Math.floor((loaded/total) * 100));
|
||||||
}
|
}
|
||||||
self.wiki.invokeActionString(self.progressActions,undefined,$tw.utils.extend({},self.variables,{
|
self.wiki.invokeActionString(self.progressActions,undefined,$tw.utils.extend({},self.variables,{
|
||||||
lengthComputable: lengthComputable ? "yes" : "no",
|
lengthComputable: lengthComputable ? "yes" : "no",
|
||||||
@@ -276,7 +275,7 @@ exports.httpRequest = function(options) {
|
|||||||
returnProp = options.returnProp || "responseText",
|
returnProp = options.returnProp || "responseText",
|
||||||
request = new XMLHttpRequest(),
|
request = new XMLHttpRequest(),
|
||||||
data = "",
|
data = "",
|
||||||
f,results;
|
results;
|
||||||
// Massage the data hashmap into a string
|
// Massage the data hashmap into a string
|
||||||
if(options.data) {
|
if(options.data) {
|
||||||
if(typeof options.data === "string") { // Already a string
|
if(typeof options.data === "string") { // Already a string
|
||||||
@@ -309,7 +308,7 @@ exports.httpRequest = function(options) {
|
|||||||
// Handle progress
|
// Handle progress
|
||||||
if(options.progress) {
|
if(options.progress) {
|
||||||
request.onprogress = function(event) {
|
request.onprogress = function(event) {
|
||||||
console.log("Progress event",event)
|
console.log("Progress event",event);
|
||||||
options.progress(event.lengthComputable,event.loaded,event.total);
|
options.progress(event.lengthComputable,event.loaded,event.total);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Keyboard utilities; now deprecated. Instead, use $tw.keyboardManager
|
|||||||
if($tw.keyboardManager) {
|
if($tw.keyboardManager) {
|
||||||
return $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));
|
return $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));
|
||||||
} else {
|
} else {
|
||||||
return null
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ Modal message mechanism
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var widget = require("$:/core/modules/widgets/widget.js");
|
|
||||||
var navigator = require("$:/core/modules/widgets/navigator.js");
|
var navigator = require("$:/core/modules/widgets/navigator.js");
|
||||||
|
|
||||||
var Modal = function(wiki) {
|
var Modal = function(wiki) {
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ Notifier mechanism
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var widget = require("$:/core/modules/widgets/widget.js");
|
|
||||||
|
|
||||||
var Notifier = function(wiki) {
|
var Notifier = function(wiki) {
|
||||||
this.wiki = wiki;
|
this.wiki = wiki;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,14 +23,14 @@ var Popup = function(options) {
|
|||||||
Global regular expression for parsing the location of a popup.
|
Global regular expression for parsing the location of a popup.
|
||||||
This is also used by the Reveal widget.
|
This is also used by the Reveal widget.
|
||||||
*/
|
*/
|
||||||
exports.popupLocationRegExp = /^(@?)\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/
|
exports.popupLocationRegExp = /^(@?)\((-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+),(-?[0-9\.E]+)\)$/;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Objekt containing the available prefixes for coordinates build with the `buildCoordinates` function:
|
Objekt containing the available prefixes for coordinates build with the `buildCoordinates` function:
|
||||||
- csOffsetParent: Uses a coordinate system based on the offset parent (no prefix).
|
- csOffsetParent: Uses a coordinate system based on the offset parent (no prefix).
|
||||||
- csAbsolute: Use an absolute coordinate system (prefix "@").
|
- csAbsolute: Use an absolute coordinate system (prefix "@").
|
||||||
*/
|
*/
|
||||||
exports.coordinatePrefix = { csOffsetParent: "", csAbsolute: "@" }
|
exports.coordinatePrefix = { csOffsetParent: "", csAbsolute: "@" };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Trigger a popup open or closed. Parameters are in a hashmap:
|
Trigger a popup open or closed. Parameters are in a hashmap:
|
||||||
@@ -220,7 +220,7 @@ exports.parseCoordinates = function(coordinates) {
|
|||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Builds a coordinate string from a coordinate system identifier and an object
|
Builds a coordinate string from a coordinate system identifier and an object
|
||||||
@@ -237,6 +237,6 @@ exports.buildCoordinates = function(prefix,position) {
|
|||||||
} else {
|
} else {
|
||||||
return "(0,0,0,0)";
|
return "(0,0,0,0)";
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
exports.Popup = Popup;
|
exports.Popup = Popup;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ var PageScroller = function() {
|
|||||||
|
|
||||||
PageScroller.prototype.isScrolling = function() {
|
PageScroller.prototype.isScrolling = function() {
|
||||||
return this.idRequestFrame !== null;
|
return this.idRequestFrame !== null;
|
||||||
}
|
};
|
||||||
|
|
||||||
PageScroller.prototype.cancelScroll = function(srcWindow) {
|
PageScroller.prototype.cancelScroll = function(srcWindow) {
|
||||||
if(this.idRequestFrame) {
|
if(this.idRequestFrame) {
|
||||||
@@ -78,7 +78,7 @@ PageScroller.prototype.scrollIntoView = function(element,callback,options) {
|
|||||||
}
|
}
|
||||||
// Get the client bounds of the element and adjust by the scroll position
|
// Get the client bounds of the element and adjust by the scroll position
|
||||||
var getBounds = function() {
|
var getBounds = function() {
|
||||||
var clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),
|
var clientBounds = typeof callback === "function" ? callback() : element.getBoundingClientRect(),
|
||||||
scrollPosition = $tw.utils.getScrollPosition(srcWindow);
|
scrollPosition = $tw.utils.getScrollPosition(srcWindow);
|
||||||
return {
|
return {
|
||||||
left: clientBounds.left + scrollPosition.x,
|
left: clientBounds.left + scrollPosition.x,
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ var TW_Node = function (){
|
|||||||
throw TypeError("Illegal constructor");
|
throw TypeError("Illegal constructor");
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {
|
Object.defineProperty(TW_Node.prototype, "ELEMENT_NODE", {
|
||||||
get: function() {
|
get: function() {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperty(TW_Node.prototype, 'TEXT_NODE', {
|
Object.defineProperty(TW_Node.prototype, "TEXT_NODE", {
|
||||||
get: function() {
|
get: function() {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,6 @@ var TW_Style = function(el) {
|
|||||||
},
|
},
|
||||||
// Method to set styles using a string (e.g. "color:red; background-color:blue;")
|
// Method to set styles using a string (e.g. "color:red; background-color:blue;")
|
||||||
set: function(str) {
|
set: function(str) {
|
||||||
var self = this;
|
|
||||||
str = str || "";
|
str = str || "";
|
||||||
$tw.utils.each(str.split(";"),function(declaration) {
|
$tw.utils.each(str.split(";"),function(declaration) {
|
||||||
var parts = declaration.split(":"),
|
var parts = declaration.split(":"),
|
||||||
|
|||||||
@@ -54,10 +54,10 @@ Performance.prototype.log = function() {
|
|||||||
$tw.utils.each(orderedMeasures,function(name) {
|
$tw.utils.each(orderedMeasures,function(name) {
|
||||||
totalTime += self.measures[name].time;
|
totalTime += self.measures[name].time;
|
||||||
});
|
});
|
||||||
var results = []
|
var results = [];
|
||||||
$tw.utils.each(orderedMeasures,function(name) {
|
$tw.utils.each(orderedMeasures,function(name) {
|
||||||
var measure = self.measures[name];
|
var measure = self.measures[name];
|
||||||
results.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})
|
results.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100});
|
||||||
});
|
});
|
||||||
self.logger.table(results);
|
self.logger.table(results);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -916,12 +916,12 @@ exports.transliterationPairs = {
|
|||||||
|
|
||||||
exports.transliterate = function(str) {
|
exports.transliterate = function(str) {
|
||||||
return str.replace(/[^A-Za-z0-9\[\] ]/g,function(ch) {
|
return str.replace(/[^A-Za-z0-9\[\] ]/g,function(ch) {
|
||||||
return exports.transliterationPairs[ch] || ch
|
return exports.transliterationPairs[ch] || ch;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.transliterateToSafeASCII = function(str) {
|
exports.transliterateToSafeASCII = function(str) {
|
||||||
return str.replace(/[^\x20-\x7F]/g,function(ch) {
|
return str.replace(/[^\x20-\x7F]/g,function(ch) {
|
||||||
return exports.transliterationPairs[ch] || ""
|
return exports.transliterationPairs[ch] || "";
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user