mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-01-24 20:04:40 +00:00
Compare commits
154 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54b1e284fa | ||
|
|
8d00d6cb22 | ||
|
|
031fd8fb22 | ||
|
|
304eb99d41 | ||
|
|
021b5e072b | ||
|
|
2fd2ae993e | ||
|
|
464ef889f9 | ||
|
|
0224da34a9 | ||
|
|
29364cbd08 | ||
|
|
6b575f5404 | ||
|
|
9e90be47bf | ||
|
|
7abfa9e2e7 | ||
|
|
a097b259d7 | ||
|
|
f366a74f68 | ||
|
|
c5b478efe7 | ||
|
|
b4ec32ca70 | ||
|
|
c4e2793b06 | ||
|
|
967b123b51 | ||
|
|
ae8fb3e98b | ||
|
|
95b84dd0ca | ||
|
|
6555fecbf3 | ||
|
|
d7a6816307 | ||
|
|
e646d207c3 | ||
|
|
518f57f4bb | ||
|
|
7bdaabce78 | ||
|
|
49fad6dae9 | ||
|
|
ce5865ba16 | ||
|
|
afea0ba9bf | ||
|
|
1c16c494eb | ||
|
|
05a3d9a302 | ||
|
|
1dcc8c99e5 | ||
|
|
e5f96d6415 | ||
|
|
73953080e3 | ||
|
|
59505449d2 | ||
|
|
9ada7a0bb1 | ||
|
|
06f70d0a03 | ||
|
|
ce3832e275 | ||
|
|
148a4eea4d | ||
|
|
3c62ef0d71 | ||
|
|
db8fd9ea74 | ||
|
|
8ee66d617f | ||
|
|
a8622cdd72 | ||
|
|
46453d23cb | ||
|
|
c069d48a2a | ||
|
|
489f9a0079 | ||
|
|
4e278d0cd7 | ||
|
|
7a714da9cb | ||
|
|
24c325611b | ||
|
|
35a7a66b01 | ||
|
|
378e00aee8 | ||
|
|
11da58355e | ||
|
|
aa417fe899 | ||
|
|
1b7d9d65f4 | ||
|
|
5a5d648127 | ||
|
|
51b1ead5c9 | ||
|
|
50b0004481 | ||
|
|
08ae7321c1 | ||
|
|
06ea4060cb | ||
|
|
2381fb5312 | ||
|
|
90c1c6242e | ||
|
|
5cdf86b307 | ||
|
|
d3a2cfb2bc | ||
|
|
8293a77c6e | ||
|
|
94f9929c80 | ||
|
|
b6f948b61e | ||
|
|
2ebf4285e8 | ||
|
|
7e88dd788c | ||
|
|
3fb8d9b848 | ||
|
|
509a474f4a | ||
|
|
1088b01f96 | ||
|
|
523280362b | ||
|
|
68e17f92de | ||
|
|
34404dcfc9 | ||
|
|
687cb226f5 | ||
|
|
9ca9c188c9 | ||
|
|
8fc80cbf3c | ||
|
|
3a73d2e4ee | ||
|
|
9ac784a468 | ||
|
|
e471bd54d4 | ||
|
|
a4d919f45c | ||
|
|
0d0b841b5c | ||
|
|
e951047461 | ||
|
|
c6e4b7a123 | ||
|
|
5dd3d97760 | ||
|
|
c25a1eef33 | ||
|
|
f59809e9a4 | ||
|
|
d966583854 | ||
|
|
596dfa1d50 | ||
|
|
41b6c5c088 | ||
|
|
95ef1c4580 | ||
|
|
7bca39842f | ||
|
|
dc295b2536 | ||
|
|
16d867d380 | ||
|
|
69528093d9 | ||
|
|
17fbe49f2b | ||
|
|
a346888213 | ||
|
|
c179dc93cb | ||
|
|
4db950cc45 | ||
|
|
1919f0e9b0 | ||
|
|
ccac0258af | ||
|
|
a7b57d7f97 | ||
|
|
847727146e | ||
|
|
b71583e9d7 | ||
|
|
d7315126e7 | ||
|
|
6091b12eb0 | ||
|
|
f9e1188b3a | ||
|
|
4759f73770 | ||
|
|
e9173b7a71 | ||
|
|
cee7baa183 | ||
|
|
37cbaa08f1 | ||
|
|
48e0186ba9 | ||
|
|
2d0ac7245f | ||
|
|
5d74513a97 | ||
|
|
5892c4d8bc | ||
|
|
6085b1171a | ||
|
|
bf51acd8d6 | ||
|
|
1905a3f343 | ||
|
|
96ff7ab86f | ||
|
|
f75e97f308 | ||
|
|
d5b50e0854 | ||
|
|
efd0c270d7 | ||
|
|
c40fd7f7f2 | ||
|
|
a5e565e198 | ||
|
|
ef9efbc399 | ||
|
|
cf9085b5ce | ||
|
|
534f5e7c13 | ||
|
|
a4989f5c4d | ||
|
|
d89010752a | ||
|
|
de81984973 | ||
|
|
58234b755d | ||
|
|
ab064e15a9 | ||
|
|
c97458f0d4 | ||
|
|
9ea178e327 | ||
|
|
a4035d3424 | ||
|
|
0bc325025a | ||
|
|
18cd37c2de | ||
|
|
7436fc7374 | ||
|
|
b99a1b6496 | ||
|
|
881e834f89 | ||
|
|
f2f5afa106 | ||
|
|
9c57ebb05d | ||
|
|
1e9d214f67 | ||
|
|
4b9fcdf958 | ||
|
|
432542bbcc | ||
|
|
1733a2c39c | ||
|
|
e3544ff3c2 | ||
|
|
3edf3892e8 | ||
|
|
683285d449 | ||
|
|
93771fdf27 | ||
|
|
684e4feff5 | ||
|
|
cb0ccb22b1 | ||
|
|
982792a22a | ||
|
|
e631e59f00 | ||
|
|
17110169a9 |
@@ -1,3 +1,3 @@
|
||||
<h1 class="">Script Files</h1><p>The <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> repository contains several scripts in the <code>bin</code> folder that you can use to automate common tasks, or as a useful starting point for your own scripts. See <a class="tc-tiddlylink tc-tiddlylink-missing" href="http://tiddlywiki.com/static/Scripts%2520for%2520building%2520tiddlywiki.com.html">Scripts for building tiddlywiki.com</a> for details of the scripts used to build and release <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/</a>.</p><p>All the scripts expect to be run from the root folder of the repository.</p><h2 class=""><code>serve</code>: serves tw5.com</h2><pre><code>./bin/serve.sh -h
|
||||
<h1 class="">Script Files</h1><p>The <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> repository contains several scripts in the <code>bin</code> folder that you can use to automate common tasks, or as a useful starting point for your own scripts. See <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/Scripts%2520for%2520building%2520tiddlywiki.com.html">Scripts for building tiddlywiki.com</a> for details of the scripts used to build and release <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a>.</p><p>All the scripts expect to be run from the root folder of the repository.</p><h2 class=""><code>serve</code>: serves tw5.com</h2><pre><code>./bin/serve.sh -h
|
||||
./bin/serve.sh [edition dir] [username] [password] [host] [port]</code></pre><p>Or:</p><pre><code>./bin/serve.cmd -h
|
||||
./bin/serve.cmd [edition dir] [username] [password] [host] [port]</code></pre><p>This script starts <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> running as an HTTP server, defaulting to the content from the <code>tw5.com-server</code> edition. By default, the Node.js serves on port 8080. If the optional <code>username</code> parameter is provided, it is used for signing edits. If the <code>password</code> is provided then HTTP basic authentication is used. Run the script with the <code>-h</code> parameter to see online help.</p><p>To experiment with this configuration, run the script and then visit <code>http://127.0.0.1:8080</code> in a browser.</p><p>Changes made in the browser propagate to the server over HTTP (use the browser developer console to see these requests). The server then syncs changes to the file system (and logs each change to the screen).</p><h2 class=""><code>test</code>: build and run tests</h2><p>This script runs the <code>test</code> edition of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on the server to perform the server-side tests and to build <code>test.html</code> for running the tests in the browser.</p><h2 class=""><code>lazy</code>: serves tw5.com with lazily loaded images</h2><pre><code>./bin/lazy.sh <username> [<password>]</code></pre><p>Or:</p><pre><code>./bin/lazy.cmd <username> [<password>]</code></pre><p>This script serves the <code>tw5.com-server</code> edition content with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/LazyLoading.html">LazyLoading</a> applied to images.</p><h2 class=""><code>2bld</code>: builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5</h2><p>This script builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5 from the original source and then displays the differences between them (<code>diff</code> is used for *nix, <code>fc</code> for Windows).</p>
|
||||
./bin/serve.cmd [edition dir] [username] [password] [host] [port]</code></pre><p>This script starts <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> running as an HTTP server, defaulting to the content from the <code>tw5.com-server</code> edition. By default, the Node.js serves on port 8080. If the optional <code>username</code> parameter is provided, it is used for signing edits. If the <code>password</code> is provided then HTTP basic authentication is used. Run the script with the <code>-h</code> parameter to see online help.</p><p>To experiment with this configuration, run the script and then visit <code>http://127.0.0.1:8080</code> in a browser.</p><p>Changes made in the browser propagate to the server over HTTP (use the browser developer console to see these requests). The server then syncs changes to the file system (and logs each change to the screen).</p><h2 class=""><code>test</code>: build and run tests</h2><p>This script runs the <code>test</code> edition of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on the server to perform the server-side tests and to build <code>test.html</code> for running the tests in the browser.</p><h2 class=""><code>lazy</code>: serves tw5.com with lazily loaded images</h2><pre><code>./bin/lazy.sh <username> [<password>]</code></pre><p>Or:</p><pre><code>./bin/lazy.cmd <username> [<password>]</code></pre><p>This script serves the <code>tw5.com-server</code> edition content with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/LazyLoading.html">LazyLoading</a> applied to images.</p><h2 class=""><code>2bld</code>: builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5</h2><p>This script builds <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> 2.6.5 from the original source and then displays the differences between them (<code>diff</code> is used for *nix, <code>fc</code> for Windows).</p>
|
||||
34
boot/boot.js
34
boot/boot.js
@@ -1202,7 +1202,7 @@ $tw.Wiki.prototype.processSafeMode = function() {
|
||||
// Assemble a report tiddler
|
||||
var titleReportTiddler = "TiddlyWiki Safe Mode",
|
||||
report = [];
|
||||
report.push("TiddlyWiki has been started in [[safe mode|http://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
|
||||
overrides.forEach(function(title) {
|
||||
var tiddler = self.getTiddler(title),
|
||||
@@ -1220,10 +1220,14 @@ $tw.Wiki.prototype.processSafeMode = function() {
|
||||
/*
|
||||
Extracts tiddlers from a typed block of text, specifying default field values
|
||||
*/
|
||||
$tw.Wiki.prototype.deserializeTiddlers = function(type,text,srcFields) {
|
||||
$tw.Wiki.prototype.deserializeTiddlers = function(type,text,srcFields,options) {
|
||||
srcFields = srcFields || Object.create(null);
|
||||
var deserializer = $tw.Wiki.tiddlerDeserializerModules[type],
|
||||
options = options || {};
|
||||
var deserializer = $tw.Wiki.tiddlerDeserializerModules[options.deserializer],
|
||||
fields = Object.create(null);
|
||||
if(!deserializer) {
|
||||
deserializer = $tw.Wiki.tiddlerDeserializerModules[type];
|
||||
}
|
||||
if(!deserializer && $tw.utils.getFileExtensionInfo(type)) {
|
||||
// If we didn't find the serializer, try converting it from an extension to a content type
|
||||
type = $tw.utils.getFileExtensionInfo(type).type;
|
||||
@@ -1523,7 +1527,7 @@ $tw.loadTiddlersFromPath = function(filepath,excludeRegExp) {
|
||||
});
|
||||
}
|
||||
} else if(stat.isFile()) {
|
||||
tiddlers.push($tw.loadTiddlersFromFile(filepath));
|
||||
tiddlers.push($tw.loadTiddlersFromFile(filepath,{title: filepath}));
|
||||
}
|
||||
}
|
||||
return tiddlers;
|
||||
@@ -1634,9 +1638,14 @@ Load the tiddlers from a plugin folder, and package them up into a proper JSON p
|
||||
*/
|
||||
$tw.loadPluginFolder = function(filepath,excludeRegExp) {
|
||||
excludeRegExp = excludeRegExp || $tw.boot.excludeRegExp;
|
||||
var infoPath = filepath + path.sep + "plugin.info";
|
||||
if(fs.existsSync(filepath) && fs.statSync(filepath).isDirectory()) {
|
||||
// Read the plugin information
|
||||
var pluginInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "plugin.info","utf8"));
|
||||
if(!fs.existsSync(infoPath) || !fs.statSync(infoPath).isFile()) {
|
||||
console.log("Warning: missing plugin.info file in " + filepath);
|
||||
return null;
|
||||
}
|
||||
var pluginInfo = JSON.parse(fs.readFileSync(infoPath,"utf8"));
|
||||
// Read the plugin files
|
||||
var pluginFiles = $tw.loadTiddlersFromPath(filepath,excludeRegExp);
|
||||
// Save the plugin tiddlers into the plugin info
|
||||
@@ -2017,7 +2026,7 @@ $tw.boot.startup = function(options) {
|
||||
$tw.boot.executedStartupModules = Object.create(null);
|
||||
$tw.boot.disabledStartupModules = $tw.boot.disabledStartupModules || [];
|
||||
// Repeatedly execute the next eligible task
|
||||
$tw.boot.executeNextStartupTask();
|
||||
$tw.boot.executeNextStartupTask(options.callback);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -2032,14 +2041,14 @@ $tw.addUnloadTask = function(task) {
|
||||
/*
|
||||
Execute the remaining eligible startup tasks
|
||||
*/
|
||||
$tw.boot.executeNextStartupTask = function() {
|
||||
$tw.boot.executeNextStartupTask = function(callback) {
|
||||
// Find the next eligible task
|
||||
var taskIndex = 0, task,
|
||||
asyncTaskCallback = function() {
|
||||
if(task.name) {
|
||||
$tw.boot.executedStartupModules[task.name] = true;
|
||||
}
|
||||
return $tw.boot.executeNextStartupTask();
|
||||
return $tw.boot.executeNextStartupTask(callback);
|
||||
};
|
||||
while(taskIndex < $tw.boot.remainingStartupModules.length) {
|
||||
task = $tw.boot.remainingStartupModules[taskIndex];
|
||||
@@ -2064,7 +2073,7 @@ $tw.boot.executeNextStartupTask = function() {
|
||||
if(task.name) {
|
||||
$tw.boot.executedStartupModules[task.name] = true;
|
||||
}
|
||||
return $tw.boot.executeNextStartupTask();
|
||||
return $tw.boot.executeNextStartupTask(callback);
|
||||
} else {
|
||||
task.startup(asyncTaskCallback);
|
||||
return true;
|
||||
@@ -2072,6 +2081,9 @@ $tw.boot.executeNextStartupTask = function() {
|
||||
}
|
||||
taskIndex++;
|
||||
}
|
||||
if(typeof callback === 'function') {
|
||||
callback();
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
@@ -2157,7 +2169,7 @@ $tw.hooks.invokeHook = function(hookName /*, value,... */) {
|
||||
|
||||
/////////////////////////// Main boot function to decrypt tiddlers and then startup
|
||||
|
||||
$tw.boot.boot = function() {
|
||||
$tw.boot.boot = function(callback) {
|
||||
// Initialise crypto object
|
||||
$tw.crypto = new $tw.utils.Crypto();
|
||||
// Initialise password prompter
|
||||
@@ -2167,7 +2179,7 @@ $tw.boot.boot = function() {
|
||||
// Preload any encrypted tiddlers
|
||||
$tw.boot.decryptEncryptedTiddlers(function() {
|
||||
// Startup
|
||||
$tw.boot.startup();
|
||||
$tw.boot.startup({callback: callback});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ function t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid("invalid aes
|
||||
sjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.$(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(0===a.length||0===b.length)return a.concat(b);var c=a[a.length-1],d=sjcl.bitArray.getPartial(c);return 32===d?a.concat(b):sjcl.bitArray.$(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;return 0===
|
||||
b?0:32*(b-1)+sjcl.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(32*a.length<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b=b&31;0<c&&b&&(a[c-1]=sjcl.bitArray.partial(b,a[c-1]&2147483648>>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d<a.length;d++)c|=a[d]^b[d];return 0===
|
||||
c},$:function(a,b,c,d){var e;e=0;for(void 0===d&&(d=[]);32<=b;b-=32)d.push(c),c=0;if(0===b)return d.concat(a);for(e=0;e<a.length;e++)d.push(c|a[e]>>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32<b+a?c:d.pop(),1));return d},i:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]},byteswapM:function(a){var b,c;for(b=0;b<a.length;++b)c=a[b],a[b]=c>>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};
|
||||
sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>24),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}};
|
||||
sjcl.codec.utf8String={fromBits:function(a){var b="",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(sjcl.bitArray.partial(8*(c&3),d));return b}};
|
||||
sjcl.codec.hex={fromBits:function(a){var b="",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,sjcl.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a=a+"00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return sjcl.bitArray.clamp(c,4*d)}};
|
||||
sjcl.codec.base32={B:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",X:"0123456789ABCDEFGHIJKLMNOPQRSTUV",BITS:32,BASE:5,REMAINING:27,fromBits:function(a,b,c){var d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f="",g=0,h=sjcl.codec.base32.B,k=0,l=sjcl.bitArray.bitLength(a);c&&(h=sjcl.codec.base32.X);for(c=0;f.length*d<l;)f+=h.charAt((k^a[c]>>>g)>>>e),g<d?(k=a[c]<<d-g,g+=e,c++):(k<<=d,g-=d);for(;f.length&7&&!b;)f+="=";return f},toBits:function(a,b){a=a.replace(/\s|=/g,"").toUpperCase();var c=sjcl.codec.base32.BITS,
|
||||
d=sjcl.codec.base32.BASE,e=sjcl.codec.base32.REMAINING,f=[],g,h=0,k=sjcl.codec.base32.B,l=0,n,m="base32";b&&(k=sjcl.codec.base32.X,m="base32hex");for(g=0;g<a.length;g++){n=k.indexOf(a.charAt(g));if(0>n){if(!b)try{return sjcl.codec.base32hex.toBits(a)}catch(p){}throw new sjcl.exception.invalid("this isn't "+m+"!");}h>e?(h-=e,f.push(l^n>>>h),l=n<<c-h):(h+=d,l^=n<<c-h)}h&56&&f.push(sjcl.bitArray.partial(h&56,l,1));return f}};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>We welcome contributions to the code and documentation of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> in several ways:</p><ul><li><a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/ReportingBugs.html">ReportingBugs</a></li><li>Helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a></li><li>Contributing to the code via <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">GitHub</a><ul><li>See <a class="tc-tiddlylink-external" href="http://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">http://tiddlywiki.com/dev</a> for more details</li></ul></li></ul><p>There are other ways to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/HelpingTiddlyWiki.html">help TiddlyWiki</a> too.</p><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="http://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a></li><li>For entities use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a></li></ul><h1 class="">How to sign the CLA</h1><p>Create a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/GitHub.html">GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>Navigate to <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a> or <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a> according to whether you are signing as an individual or representative of an organisation</li><li>Click the "edit" button at the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>Add your name at the bottom<ul><li>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></li></ul></li><li>Below the edit box for the CLA text you should see a box labelled <strong>Propose file change</strong></li><li>Enter a brief title to explain the change (eg, "Signing the CLA")</li><li>Click the green button labelled <strong>Propose file change</strong></li><li>On the following screen, click the green button labelled <strong>Create pull request</strong></li></ol><hr><p><em>The CLA documents used for this project were created using <a class="tc-tiddlylink-external" href="http://www.harmonyagreements.org" rel="noopener noreferrer" target="_blank">Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em></p><p>Remarks
|
||||
<h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>We welcome contributions to the code and documentation of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> in several ways:</p><ul><li><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ReportingBugs.html">ReportingBugs</a></li><li>Helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a></li><li>Contributing to the code via <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">GitHub</a><ul><li>See <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev</a> for more details</li></ul></li></ul><p>There are other ways to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/HelpingTiddlyWiki.html">help TiddlyWiki</a> too.</p><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a></li><li>For entities use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a></li></ul><h1 class="">How to sign the CLA</h1><p>Create a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>Navigate to <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a> or <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a> according to whether you are signing as an individual or representative of an organisation</li><li>Click the "edit" button at the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>Add your name at the bottom<ul><li>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></li></ul></li><li>Below the edit box for the CLA text you should see a box labelled <strong>Propose file change</strong></li><li>Enter a brief title to explain the change (eg, "Signing the CLA")</li><li>Click the green button labelled <strong>Propose file change</strong></li><li>On the following screen, click the green button labelled <strong>Create pull request</strong></li></ol><hr><p><em>The CLA documents used for this project were created using <a class="tc-tiddlylink-external" href="http://www.harmonyagreements.org" rel="noopener noreferrer" target="_blank">Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em></p><p>Remarks
|
||||
----—</p><ul><li><ul><li>When not owning the copyright in the entire work of authorship**</li></ul></li></ul><p>In this case, please clearly state so, since otherwise we assume that you are the legal copyright holder of the contributed work! Please provide links and additional information that clarify under which license the rest of the code is distributed.
|
||||
</p><p><em>This file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="http://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></em>
|
||||
</p><p><em>This file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></em>
|
||||
</p>
|
||||
@@ -1,5 +1,4 @@
|
||||
title: $:/Acknowledgements
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
TiddlyWiki incorporates code from these fine OpenSource projects:
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ Palette/HideEditor/Caption: hide editor
|
||||
Palette/Prompt: Current palette:
|
||||
Palette/ShowEditor/Caption: show editor
|
||||
Parsing/Caption: Parsing
|
||||
Parsing/Hint: Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text="TiddlyWiki"/> from functioning correctly. Use [[safe mode|http://tiddlywiki.com/#SafeMode]] to restore normal operation.
|
||||
Parsing/Hint: Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text="TiddlyWiki"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation.
|
||||
Parsing/Block/Caption: Block Parse Rules
|
||||
Parsing/Inline/Caption: Inline Parse Rules
|
||||
Parsing/Pragma/Caption: Pragma Parse Rules
|
||||
@@ -72,7 +72,6 @@ Plugins/Installed/Hint: Currently installed plugins:
|
||||
Plugins/Languages/Caption: Languages
|
||||
Plugins/Languages/Hint: Language pack plugins
|
||||
Plugins/NoInfoFound/Hint: No ''"<$text text=<<currentTab>>/>"'' found
|
||||
Plugins/NoInformation/Hint: No information provided
|
||||
Plugins/NotInstalled/Hint: This plugin is not currently installed
|
||||
Plugins/OpenPluginLibrary: open plugin library
|
||||
Plugins/ClosePluginLibrary: close plugin library
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
title: $:/language/EditTemplate/
|
||||
|
||||
Body/External/Hint: This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself
|
||||
Body/External/Hint: This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself
|
||||
Body/Placeholder: Type the text for this tiddler
|
||||
Body/Preview/Type/Output: output
|
||||
Field/Remove/Caption: remove field
|
||||
|
||||
@@ -3,7 +3,7 @@ title: GettingStarted
|
||||
\define lingo-base() $:/language/ControlPanel/Basics/
|
||||
Welcome to ~TiddlyWiki and the ~TiddlyWiki community
|
||||
|
||||
Before you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See http://tiddlywiki.com/#GettingStarted for details
|
||||
Before you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details
|
||||
|
||||
!! Set up this ~TiddlyWiki
|
||||
|
||||
|
||||
@@ -6,23 +6,33 @@ Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filt
|
||||
```
|
||||
--fetch file <url> <import-filter> <transform-filter>
|
||||
--fetch files <url-filter> <import-filter> <transform-filter>
|
||||
--fetch raw-file <url> <transform-filter>
|
||||
--fetch raw-files <url-filter> <transform-filter>
|
||||
```
|
||||
|
||||
With the "file" variant only a single file is fetched and the first parameter is the URL of the file to read.
|
||||
The "file" and "files" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The "raw-file" and "raw-files" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.
|
||||
|
||||
With the "files" variant, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged "remote-server" that have a field "url" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.
|
||||
With the "file" and "raw-file" variants only a single file is fetched and the first parameter is the URL of the file to read.
|
||||
|
||||
The `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.
|
||||
With the "files" and "raw-files" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged "remote-server" that have a field "url" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.
|
||||
|
||||
The `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.
|
||||
For the "file" and "files" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.
|
||||
|
||||
For all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.
|
||||
|
||||
Preceding the `--fetch` command with `--verbose` will output progress information during the import.
|
||||
|
||||
Note that TiddlyWiki will not fetch an older version of an already loaded plugin.
|
||||
|
||||
The following example retrieves all the non-system tiddlers from http://tiddlywiki.com and saves them to a JSON file:
|
||||
The following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:
|
||||
|
||||
```
|
||||
tiddlywiki --verbose --fetch file "http://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]"
|
||||
tiddlywiki --verbose --fetch file "https://tiddlywiki.com/" "[!is[system]]" "" --rendertiddler "$:/core/templates/exporters/JsonFile" output.json text/plain "" exportFilter "[!is[system]]"
|
||||
```
|
||||
|
||||
The following example retrieves the "favicon" file from tiddlywiki.com and saves it in a file called "output.ico". Note that the intermediate tiddler "Icon Tiddler" is quoted in the "--fetch" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the "--savetiddler" command because it is being used directly as a title.
|
||||
|
||||
```
|
||||
tiddlywiki --verbose --fetch raw-file "https://tiddlywiki.com/favicon.ico" "[[Icon Tiddler]]" --savetiddler "Icon Tiddler" output.ico
|
||||
```
|
||||
|
||||
|
||||
24
core/language/en-GB/Help/import.tid
Normal file
24
core/language/en-GB/Help/import.tid
Normal file
@@ -0,0 +1,24 @@
|
||||
title: $:/language/Help/import
|
||||
description: Import tiddlers from a file
|
||||
|
||||
Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.
|
||||
|
||||
```
|
||||
--import <filepath> <deserializer> [<title>] [<encoding>]
|
||||
```
|
||||
|
||||
The deserializers in the core include:
|
||||
|
||||
* application/javascript
|
||||
* application/json
|
||||
* application/x-tiddler
|
||||
* application/x-tiddler-html-div
|
||||
* application/x-tiddlers
|
||||
* text/html
|
||||
* text/plain
|
||||
|
||||
The title of the imported tiddler defaults to the filename.
|
||||
|
||||
The encoding defaults to "utf8", but can be "base64" for importing binary files.
|
||||
|
||||
Note that TiddlyWiki will not import an older version of an already loaded plugin.
|
||||
@@ -1,10 +1,11 @@
|
||||
title: $:/language/Help/load
|
||||
description: Load tiddlers from a file
|
||||
|
||||
Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files
|
||||
Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.
|
||||
|
||||
```
|
||||
--load <filepath>
|
||||
--load <dirpath>
|
||||
```
|
||||
|
||||
To load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:
|
||||
|
||||
34
core/language/en-GB/Help/render.tid
Normal file
34
core/language/en-GB/Help/render.tid
Normal file
@@ -0,0 +1,34 @@
|
||||
title: $:/language/Help/render
|
||||
description: Renders individual tiddlers to files
|
||||
|
||||
Render individual tiddlers identified by a filter and save the results to the specified files.
|
||||
|
||||
Optionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the "currentTiddler" variable set to the title of the tiddler that is being rendered.
|
||||
|
||||
A name and value for an additional variable may optionally also be specified.
|
||||
|
||||
```
|
||||
--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]
|
||||
```
|
||||
|
||||
* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered
|
||||
* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename
|
||||
* ''template'': Optional template through which each tiddler is rendered
|
||||
* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)
|
||||
* ''name'': Name of optional variable
|
||||
* ''value'': Value of optional variable
|
||||
|
||||
By default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.
|
||||
|
||||
Notes:
|
||||
|
||||
* The output directory is not cleared of any existing files
|
||||
* Any missing directories in the path to the filename are automatically created.
|
||||
* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render "[[Motovun Jack.jpg]]"`
|
||||
* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`
|
||||
* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated
|
||||
|
||||
Examples:
|
||||
|
||||
* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- renders all non-system tiddlers as files in the subdirectory "tiddlers" with URL-encoded titles and the extension HTML
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
title: $:/language/Help/rendertiddler
|
||||
description: Render an individual tiddler as a specified ContentType
|
||||
|
||||
(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)
|
||||
|
||||
Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.
|
||||
|
||||
Optionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the "currentTiddler" variable set to the tiddler that is being rendered (the first parameter value).
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
title: $:/language/Help/rendertiddlers
|
||||
description: Render tiddlers matching a filter to a specified ContentType
|
||||
|
||||
(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)
|
||||
|
||||
Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).
|
||||
|
||||
```
|
||||
|
||||
25
core/language/en-GB/Help/save.tid
Normal file
25
core/language/en-GB/Help/save.tid
Normal file
@@ -0,0 +1,25 @@
|
||||
title: $:/language/Help/save
|
||||
description: Saves individual raw tiddlers to files
|
||||
|
||||
Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.
|
||||
|
||||
```
|
||||
--save <tiddler-filter> <filename-filter>
|
||||
```
|
||||
|
||||
* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved
|
||||
* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename
|
||||
|
||||
By default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.
|
||||
|
||||
Notes:
|
||||
|
||||
* The output directory is not cleared of any existing files
|
||||
* Any missing directories in the path to the filename are automatically created.
|
||||
* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save "[[Motovun Jack.jpg]]"`
|
||||
* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`
|
||||
* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated
|
||||
|
||||
Examples:
|
||||
|
||||
* `--save "[!is[system]is[image]]" "[encodeuricomponent[]addprefix[tiddlers/]]"` -- saves all non-system image tiddlers as files in the subdirectory "tiddlers" with URL-encoded titles
|
||||
@@ -1,6 +1,8 @@
|
||||
title: $:/language/Help/savetiddler
|
||||
description: Saves a raw tiddler to a file
|
||||
|
||||
(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)
|
||||
|
||||
Saves an individual tiddler in its raw text or binary format to the specified filename.
|
||||
|
||||
```
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
title: $:/language/Help/savetiddlers
|
||||
description: Saves a group of raw tiddlers to a directory
|
||||
|
||||
(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)
|
||||
|
||||
Saves a group of tiddlers in their raw text or binary format to the specified directory.
|
||||
|
||||
```
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
title: $:/language/
|
||||
|
||||
AboveStory/ClassicPlugin/Warning: It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:
|
||||
AboveStory/ClassicPlugin/Warning: It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:
|
||||
BinaryWarning/Prompt: This tiddler contains binary data
|
||||
ClassicWarning/Hint: This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details.
|
||||
ClassicWarning/Hint: This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details.
|
||||
ClassicWarning/Upgrade/Caption: upgrade
|
||||
CloseAll/Button: close all
|
||||
ColourPicker/Recent: Recent:
|
||||
@@ -35,7 +35,7 @@ Error/XMLHttpRequest: XMLHttpRequest error code
|
||||
InternalJavaScriptError/Title: Internal JavaScript Error
|
||||
InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser
|
||||
InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)
|
||||
LazyLoadingWarning: <p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p>
|
||||
LazyLoadingWarning: <p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>
|
||||
LoginToTiddlySpace: Login to TiddlySpace
|
||||
Manager/Controls/FilterByTag/None: (none)
|
||||
Manager/Controls/FilterByTag/Prompt: Filter by tag:
|
||||
@@ -54,7 +54,7 @@ Manager/Item/RawText: Raw text
|
||||
Manager/Item/Tags: Tags
|
||||
Manager/Item/Tools: Tools
|
||||
Manager/Item/WikifiedText: Wikified text
|
||||
MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" - click {{$:/core/images/edit-button}} to create
|
||||
MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" -- click {{||$:/core/ui/Buttons/edit}} to create
|
||||
No: No
|
||||
OfficialPluginLibrary: Official ~TiddlyWiki Plugin Library
|
||||
OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
title: $:/language/Modals/Download
|
||||
type: text/vnd.tiddlywiki
|
||||
subtitle: Download changes
|
||||
footer: <$button message="tm-close-tiddler">Close</$button>
|
||||
help: http://tiddlywiki.com/static/DownloadingChanges.html
|
||||
help: https://tiddlywiki.com/static/DownloadingChanges.html
|
||||
|
||||
Your browser only supports manual saving.
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
title: $:/language/Modals/SaveInstructions
|
||||
type: text/vnd.tiddlywiki
|
||||
subtitle: Save your work
|
||||
footer: <$button message="tm-close-tiddler">Close</$button>
|
||||
help: http://tiddlywiki.com/static/SavingChanges.html
|
||||
help: https://tiddlywiki.com/static/SavingChanges.html
|
||||
|
||||
Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ title: $:/language/Search/
|
||||
|
||||
DefaultResults/Caption: List
|
||||
Filter/Caption: Filter
|
||||
Filter/Hint: Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]]
|
||||
Filter/Hint: Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]
|
||||
Filter/Matches: //<small><<resultCount>> matches</small>//
|
||||
Matches: //<small><<resultCount>> matches</small>//
|
||||
Matches/All: All matches:
|
||||
|
||||
@@ -3,6 +3,7 @@ title: $:/language/SideBar/
|
||||
All/Caption: All
|
||||
Contents/Caption: Contents
|
||||
Drafts/Caption: Drafts
|
||||
Explorer/Caption: Explorer
|
||||
Missing/Caption: Missing
|
||||
More/Caption: More
|
||||
Open/Caption: Open
|
||||
|
||||
@@ -12,6 +12,7 @@ Options/CodeWrapping: Wrap long lines in code blocks
|
||||
Settings: Settings
|
||||
Settings/FontFamily: Font family
|
||||
Settings/CodeFontFamily: Code font family
|
||||
Settings/EditorFontFamily: Editor font family
|
||||
Settings/BackgroundImage: Page background image
|
||||
Settings/BackgroundImageAttachment: Page background image attachment
|
||||
Settings/BackgroundImageAttachment/Scroll: Scroll with tiddlers
|
||||
|
||||
@@ -27,24 +27,36 @@ Command.prototype.execute = function() {
|
||||
if(this.params.length < 2) {
|
||||
return "Missing subcommand and url";
|
||||
}
|
||||
var subcommand = this.params[0],
|
||||
url = this.params[1],
|
||||
importFilter = this.params[2] || "[all[tiddlers]]",
|
||||
transformFilter = this.params[3] || "";
|
||||
switch(subcommand) {
|
||||
switch(this.params[0]) {
|
||||
case "raw-file":
|
||||
return this.fetchFiles({
|
||||
raw: true,
|
||||
url: this.params[1],
|
||||
transformFilter: this.params[2] || "",
|
||||
callback: this.callback
|
||||
});
|
||||
break;
|
||||
case "file":
|
||||
return this.fetchFiles({
|
||||
url: url,
|
||||
importFilter: importFilter,
|
||||
transformFilter: transformFilter,
|
||||
url: this.params[1],
|
||||
importFilter: this.params[2],
|
||||
transformFilter: this.params[3] || "",
|
||||
callback: this.callback
|
||||
});
|
||||
break;
|
||||
case "raw-files":
|
||||
return this.fetchFiles({
|
||||
raw: true,
|
||||
urlFilter: this.params[1],
|
||||
transformFilter: this.params[2] || "",
|
||||
callback: this.callback
|
||||
});
|
||||
break;
|
||||
case "files":
|
||||
return this.fetchFiles({
|
||||
urlFilter: url,
|
||||
importFilter: importFilter,
|
||||
transformFilter: transformFilter,
|
||||
urlFilter: this.params[1],
|
||||
importFilter: this.params[2],
|
||||
transformFilter: this.params[3] || "",
|
||||
callback: this.callback
|
||||
});
|
||||
break;
|
||||
@@ -80,24 +92,31 @@ Command.prototype.fetchFiles = function(options) {
|
||||
return null;
|
||||
};
|
||||
|
||||
Command.prototype.fetchFile = function(url,options,callback) {
|
||||
Command.prototype.fetchFile = function(url,options,callback,redirectCount) {
|
||||
if(redirectCount > 10) {
|
||||
return callback("Error too many redirects retrieving " + url);
|
||||
}
|
||||
var self = this,
|
||||
lib = url.substr(0,8) === "https://" ? require("https") : require("http");
|
||||
lib.get(url).on("response",function(response) {
|
||||
var type = (response.headers["content-type"] || "").split(";")[0],
|
||||
body = "";
|
||||
data = [];
|
||||
self.commander.write("Reading " + url + ": ");
|
||||
response.on("data",function(chunk) {
|
||||
body += chunk;
|
||||
data.push(chunk);
|
||||
self.commander.write(".");
|
||||
});
|
||||
response.on("end",function() {
|
||||
self.commander.write("\n");
|
||||
if(response.statusCode === 200) {
|
||||
self.processBody(body,type,options);
|
||||
self.processBody(Buffer.concat(data),type,options,url);
|
||||
callback(null);
|
||||
} else {
|
||||
callback("Error " + response.statusCode + " retrieving " + url)
|
||||
if(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {
|
||||
return self.fetchFile(response.headers.location,options,callback,redirectCount + 1);
|
||||
} else {
|
||||
return callback("Error " + response.statusCode + " retrieving " + url)
|
||||
}
|
||||
}
|
||||
});
|
||||
response.on("error",function(e) {
|
||||
@@ -108,16 +127,27 @@ Command.prototype.fetchFile = function(url,options,callback) {
|
||||
return null;
|
||||
};
|
||||
|
||||
Command.prototype.processBody = function(body,type,options) {
|
||||
// Deserialise the HTML file and put the tiddlers in their own wiki
|
||||
var self = this,
|
||||
incomingWiki = new $tw.Wiki(),
|
||||
tiddlers = this.commander.wiki.deserializeTiddlers(type || "text/html",body,{});
|
||||
$tw.utils.each(tiddlers,function(tiddler) {
|
||||
incomingWiki.addTiddler(new $tw.Tiddler(tiddler));
|
||||
});
|
||||
Command.prototype.processBody = function(body,type,options,url) {
|
||||
var self = this;
|
||||
// Collect the tiddlers in a wiki
|
||||
var incomingWiki = new $tw.Wiki();
|
||||
if(options.raw) {
|
||||
var typeInfo = type ? $tw.config.contentTypeInfo[type] : null,
|
||||
encoding = typeInfo ? typeInfo.encoding : "utf8";
|
||||
incomingWiki.addTiddler(new $tw.Tiddler({
|
||||
title: url,
|
||||
type: type,
|
||||
text: body.toString(encoding)
|
||||
}));
|
||||
} else {
|
||||
// Deserialise the file to extract the tiddlers
|
||||
var tiddlers = this.commander.wiki.deserializeTiddlers(type || "text/html",body.toString("utf8"),{});
|
||||
$tw.utils.each(tiddlers,function(tiddler) {
|
||||
incomingWiki.addTiddler(new $tw.Tiddler(tiddler));
|
||||
});
|
||||
}
|
||||
// Filter the tiddlers to select the ones we want
|
||||
var filteredTitles = incomingWiki.filterTiddlers(options.importFilter);
|
||||
var filteredTitles = incomingWiki.filterTiddlers(options.importFilter || "[all[tiddlers]]");
|
||||
// Import the selected tiddlers
|
||||
var count = 0;
|
||||
incomingWiki.each(function(tiddler,title) {
|
||||
|
||||
48
core/modules/commands/import.js
Normal file
48
core/modules/commands/import.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/*\
|
||||
title: $:/core/modules/commands/import.js
|
||||
type: application/javascript
|
||||
module-type: command
|
||||
|
||||
Command to import tiddlers from a file
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.info = {
|
||||
name: "import",
|
||||
synchronous: true
|
||||
};
|
||||
|
||||
var Command = function(params,commander,callback) {
|
||||
this.params = params;
|
||||
this.commander = commander;
|
||||
this.callback = callback;
|
||||
};
|
||||
|
||||
Command.prototype.execute = function() {
|
||||
var self = this,
|
||||
fs = require("fs"),
|
||||
path = require("path");
|
||||
if(this.params.length < 2) {
|
||||
return "Missing parameters";
|
||||
}
|
||||
var filename = self.params[0],
|
||||
deserializer = self.params[1],
|
||||
title = self.params[2] || filename,
|
||||
encoding = self.params[3] || "utf8",
|
||||
text = fs.readFileSync(filename,encoding),
|
||||
tiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});
|
||||
$tw.utils.each(tiddlers,function(tiddler) {
|
||||
self.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));
|
||||
});
|
||||
this.commander.log(tiddlers.length + " tiddler(s) imported");
|
||||
return null;
|
||||
};
|
||||
|
||||
exports.Command = Command;
|
||||
|
||||
})();
|
||||
@@ -3,7 +3,7 @@ title: $:/core/modules/commands/load.js
|
||||
type: application/javascript
|
||||
module-type: command
|
||||
|
||||
Command to load tiddlers from a file
|
||||
Command to load tiddlers from a file or directory
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
@@ -30,9 +30,7 @@ Command.prototype.execute = function() {
|
||||
if(this.params.length < 1) {
|
||||
return "Missing filename";
|
||||
}
|
||||
var ext = path.extname(self.params[0]),
|
||||
stat = fs.statSync(self.params[0]),
|
||||
tiddlers = $tw.loadTiddlersFromPath(self.params[0]),
|
||||
var tiddlers = $tw.loadTiddlersFromPath(self.params[0]),
|
||||
count = 0;
|
||||
$tw.utils.each(tiddlers,function(tiddlerInfo) {
|
||||
$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {
|
||||
|
||||
65
core/modules/commands/render.js
Normal file
65
core/modules/commands/render.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/*\
|
||||
title: $:/core/modules/commands/render.js
|
||||
type: application/javascript
|
||||
module-type: command
|
||||
|
||||
Render individual tiddlers and save the results to the specified files
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var widget = require("$:/core/modules/widgets/widget.js");
|
||||
|
||||
exports.info = {
|
||||
name: "render",
|
||||
synchronous: true
|
||||
};
|
||||
|
||||
var Command = function(params,commander,callback) {
|
||||
this.params = params;
|
||||
this.commander = commander;
|
||||
this.callback = callback;
|
||||
};
|
||||
|
||||
Command.prototype.execute = function() {
|
||||
if(this.params.length < 1) {
|
||||
return "Missing tiddler filter";
|
||||
}
|
||||
var self = this,
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
wiki = this.commander.wiki,
|
||||
tiddlerFilter = this.params[0],
|
||||
filenameFilter = this.params[1] || "[is[tiddler]addsuffix[.html]]",
|
||||
type = this.params[2] || "text/html",
|
||||
template = this.params[3],
|
||||
varName = this.params[4],
|
||||
varValue = this.params[5],
|
||||
tiddlers = wiki.filterTiddlers(tiddlerFilter);
|
||||
$tw.utils.each(tiddlers,function(title) {
|
||||
var parser = wiki.parseTiddler(template || title),
|
||||
variables = {currentTiddler: title};
|
||||
if(varName) {
|
||||
variables[varName] = varValue || "";
|
||||
}
|
||||
var widgetNode = wiki.makeWidget(parser,{variables: variables}),
|
||||
container = $tw.fakeDocument.createElement("div");
|
||||
widgetNode.render(container,null);
|
||||
var text = type === "text/html" ? container.innerHTML : container.textContent,
|
||||
filepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);
|
||||
if(self.commander.verbose) {
|
||||
console.log("Rendering \"" + title + "\" to \"" + filepath + "\"");
|
||||
}
|
||||
$tw.utils.createFileDirectories(filepath);
|
||||
fs.writeFileSync(filepath,text,"utf8");
|
||||
});
|
||||
return null;
|
||||
};
|
||||
|
||||
exports.Command = Command;
|
||||
|
||||
})();
|
||||
53
core/modules/commands/save.js
Normal file
53
core/modules/commands/save.js
Normal file
@@ -0,0 +1,53 @@
|
||||
/*\
|
||||
title: $:/core/modules/commands/save.js
|
||||
type: application/javascript
|
||||
module-type: command
|
||||
|
||||
Saves individual tiddlers in their raw text or binary format to the specified files
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.info = {
|
||||
name: "save",
|
||||
synchronous: true
|
||||
};
|
||||
|
||||
var Command = function(params,commander,callback) {
|
||||
this.params = params;
|
||||
this.commander = commander;
|
||||
this.callback = callback;
|
||||
};
|
||||
|
||||
Command.prototype.execute = function() {
|
||||
if(this.params.length < 1) {
|
||||
return "Missing filename filter";
|
||||
}
|
||||
var self = this,
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
wiki = this.commander.wiki,
|
||||
tiddlerFilter = this.params[0],
|
||||
filenameFilter = this.params[1] || "[is[tiddler]]",
|
||||
tiddlers = wiki.filterTiddlers(tiddlerFilter);
|
||||
$tw.utils.each(tiddlers,function(title) {
|
||||
var tiddler = self.commander.wiki.getTiddler(title),
|
||||
type = tiddler.fields.type || "text/vnd.tiddlywiki",
|
||||
contentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: "utf8"},
|
||||
filepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);
|
||||
if(self.commander.verbose) {
|
||||
console.log("Saving \"" + title + "\" to \"" + filepath + "\"");
|
||||
}
|
||||
$tw.utils.createFileDirectories(filepath);
|
||||
fs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);
|
||||
});
|
||||
return null;
|
||||
};
|
||||
|
||||
exports.Command = Command;
|
||||
|
||||
})();
|
||||
@@ -300,8 +300,8 @@ Command.prototype.execute = function() {
|
||||
pathprefix: pathprefix
|
||||
});
|
||||
this.server.listen(port,host);
|
||||
console.log("Serving on " + host + ":" + port);
|
||||
console.log("(press ctrl-C to exit)");
|
||||
$tw.utils.log("Serving on " + host + ":" + port,"brown/orange");
|
||||
$tw.utils.log("(press ctrl-C to exit)","red");
|
||||
// Warn if required plugins are missing
|
||||
if(!$tw.wiki.getTiddler("$:/plugins/tiddlywiki/tiddlyweb") || !$tw.wiki.getTiddler("$:/plugins/tiddlywiki/filesystem")) {
|
||||
$tw.utils.warning("Warning: Plugins required for client-server operation (\"tiddlywiki/filesystem\" and \"tiddlywiki/tiddlyweb\") are missing from tiddlywiki.info file");
|
||||
|
||||
@@ -72,6 +72,14 @@ exports.stringify = function(source,operator,options) {
|
||||
return results;
|
||||
};
|
||||
|
||||
exports.jsonstringify = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
results.push($tw.utils.jsonStringify(title));
|
||||
});
|
||||
return results;
|
||||
};
|
||||
|
||||
exports.escaperegexp = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
|
||||
30
core/modules/filters/lookup.js
Normal file
30
core/modules/filters/lookup.js
Normal file
@@ -0,0 +1,30 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/lookup.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operator that looks up values via a title prefix
|
||||
|
||||
[lookup:<field>[<prefix>]]
|
||||
|
||||
Prepends the prefix to the selected items and returns the specified field value
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.lookup = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
results.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix));
|
||||
});
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -106,7 +106,7 @@ Extended filter operators to manipulate the current list.
|
||||
exports.allbefore = function (source, operator) {
|
||||
var results = prepare_results(source),
|
||||
index = results.indexOf(operator.operand);
|
||||
return (index <= 0) ? [] :
|
||||
return (index < 0) ? [] :
|
||||
(operator.suffix) ? results.slice(0, index + 1) :
|
||||
results.slice(0, index);
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@ module-type: wikirule
|
||||
Wiki text inline rule for external links. For example:
|
||||
|
||||
```
|
||||
An external link: http://www.tiddlywiki.com/
|
||||
An external link: https://www.tiddlywiki.com/
|
||||
|
||||
A suppressed external link: ~http://www.tiddlyspace.com/
|
||||
```
|
||||
|
||||
@@ -6,10 +6,10 @@ module-type: wikirule
|
||||
Wiki text inline rule for embedding images. For example:
|
||||
|
||||
```
|
||||
[img[http://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img width=23 height=24 [http://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img width={{!!width}} height={{!!height}} [http://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img[Description of image|http://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img[https://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]
|
||||
[img[TiddlerTitle]]
|
||||
[img[Description of image|TiddlerTitle]]
|
||||
```
|
||||
|
||||
@@ -6,8 +6,8 @@ module-type: wikirule
|
||||
Wiki text inline rule for external links. For example:
|
||||
|
||||
```
|
||||
[ext[http://tiddlywiki.com/fractalveg.jpg]]
|
||||
[ext[Tooltip|http://tiddlywiki.com/fractalveg.jpg]]
|
||||
[ext[https://tiddlywiki.com/fractalveg.jpg]]
|
||||
[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]
|
||||
```
|
||||
|
||||
\*/
|
||||
|
||||
72
core/modules/parsers/wikiparser/rules/whitespace.js
Normal file
72
core/modules/parsers/wikiparser/rules/whitespace.js
Normal file
@@ -0,0 +1,72 @@
|
||||
/*\
|
||||
title: $:/core/modules/parsers/wikiparser/rules/whitespace.js
|
||||
type: application/javascript
|
||||
module-type: wikirule
|
||||
|
||||
Wiki pragma rule for whitespace specifications
|
||||
|
||||
```
|
||||
\whitespace trim
|
||||
\whitespace notrim
|
||||
```
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.name = "whitespace";
|
||||
exports.types = {pragma: true};
|
||||
|
||||
/*
|
||||
Instantiate parse rule
|
||||
*/
|
||||
exports.init = function(parser) {
|
||||
this.parser = parser;
|
||||
// Regexp to match
|
||||
this.matchRegExp = /^\\whitespace[^\S\n]/mg;
|
||||
};
|
||||
|
||||
/*
|
||||
Parse the most recent match
|
||||
*/
|
||||
exports.parse = function() {
|
||||
var self = this;
|
||||
// Move past the pragma invocation
|
||||
this.parser.pos = this.matchRegExp.lastIndex;
|
||||
// Parse whitespace delimited tokens terminated by a line break
|
||||
var reMatch = /[^\S\n]*(\S+)|(\r?\n)/mg,
|
||||
tokens = [];
|
||||
reMatch.lastIndex = this.parser.pos;
|
||||
var match = reMatch.exec(this.parser.source);
|
||||
while(match && match.index === this.parser.pos) {
|
||||
this.parser.pos = reMatch.lastIndex;
|
||||
// Exit if we've got the line break
|
||||
if(match[2]) {
|
||||
break;
|
||||
}
|
||||
// Process the token
|
||||
if(match[1]) {
|
||||
tokens.push(match[1]);
|
||||
}
|
||||
// Match the next token
|
||||
match = reMatch.exec(this.parser.source);
|
||||
}
|
||||
// Process the tokens
|
||||
$tw.utils.each(tokens,function(token) {
|
||||
switch(token) {
|
||||
case "trim":
|
||||
self.parser.configTrimWhiteSpace = true;
|
||||
break;
|
||||
case "notrim":
|
||||
self.parser.configTrimWhiteSpace = false;
|
||||
break;
|
||||
}
|
||||
});
|
||||
// No parse tree nodes to return
|
||||
return [];
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -50,6 +50,8 @@ var WikiParser = function(type,text,options) {
|
||||
this.type = type || "text/vnd.tiddlywiki";
|
||||
this.source = text || "";
|
||||
this.sourceLength = this.source.length;
|
||||
// Flag for ignoring whitespace
|
||||
this.configTrimWhiteSpace = false;
|
||||
// Set current parse position
|
||||
this.pos = 0;
|
||||
// Instantiate the pragma parse rules
|
||||
@@ -285,7 +287,7 @@ WikiParser.prototype.parseInlineRunUnterminated = function(options) {
|
||||
while(this.pos < this.sourceLength && nextMatch) {
|
||||
// Process the text preceding the run rule
|
||||
if(nextMatch.matchIndex > this.pos) {
|
||||
tree.push({type: "text", text: this.source.substring(this.pos,nextMatch.matchIndex)});
|
||||
this.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));
|
||||
this.pos = nextMatch.matchIndex;
|
||||
}
|
||||
// Process the run rule
|
||||
@@ -295,7 +297,7 @@ WikiParser.prototype.parseInlineRunUnterminated = function(options) {
|
||||
}
|
||||
// Process the remaining text
|
||||
if(this.pos < this.sourceLength) {
|
||||
tree.push({type: "text", text: this.source.substr(this.pos)});
|
||||
this.pushTextWidget(tree,this.source.substr(this.pos));
|
||||
}
|
||||
this.pos = this.sourceLength;
|
||||
return tree;
|
||||
@@ -315,7 +317,7 @@ WikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,option
|
||||
if(terminatorMatch) {
|
||||
if(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {
|
||||
if(terminatorMatch.index > this.pos) {
|
||||
tree.push({type: "text", text: this.source.substring(this.pos,terminatorMatch.index)});
|
||||
this.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));
|
||||
}
|
||||
this.pos = terminatorMatch.index;
|
||||
if(options.eatTerminator) {
|
||||
@@ -328,7 +330,7 @@ WikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,option
|
||||
if(inlineRuleMatch) {
|
||||
// Preceding text
|
||||
if(inlineRuleMatch.matchIndex > this.pos) {
|
||||
tree.push({type: "text", text: this.source.substring(this.pos,inlineRuleMatch.matchIndex)});
|
||||
this.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));
|
||||
this.pos = inlineRuleMatch.matchIndex;
|
||||
}
|
||||
// Process the inline rule
|
||||
@@ -342,12 +344,24 @@ WikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,option
|
||||
}
|
||||
// Process the remaining text
|
||||
if(this.pos < this.sourceLength) {
|
||||
tree.push({type: "text", text: this.source.substr(this.pos)});
|
||||
this.pushTextWidget(tree,this.source.substr(this.pos));
|
||||
}
|
||||
this.pos = this.sourceLength;
|
||||
return tree;
|
||||
};
|
||||
|
||||
/*
|
||||
Push a text widget onto an array, respecting the configTrimWhiteSpace setting
|
||||
*/
|
||||
WikiParser.prototype.pushTextWidget = function(array,text) {
|
||||
if(this.configTrimWhiteSpace) {
|
||||
text = $tw.utils.trim(text);
|
||||
}
|
||||
if(text) {
|
||||
array.push({type: "text", text: text});
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Parse zero or more class specifiers `.classname`
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,7 @@ type: application/javascript
|
||||
module-type: saver
|
||||
|
||||
Saves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)
|
||||
Compatible with beaker >= V0.7.2
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
@@ -20,16 +21,17 @@ var BeakerSaver = function(wiki) {
|
||||
};
|
||||
|
||||
BeakerSaver.prototype.save = function(text,method,callback) {
|
||||
var url = (location.toString()).split("#")[0];
|
||||
dat.stat(url).then(function(value) {
|
||||
if(value.type === "directory") {
|
||||
url = url + "/index.html";
|
||||
var dat = new DatArchive("" + window.location),
|
||||
pathname = ("" + window.location.pathname).split("#")[0];
|
||||
dat.stat(pathname).then(function(value) {
|
||||
if(value.isDirectory()) {
|
||||
pathname = pathname + "/index.html";
|
||||
}
|
||||
dat.writeFile(url,text,"utf8").then(function(value) {
|
||||
dat.writeFile(pathname,text,"utf8").then(function(value) {
|
||||
callback(null);
|
||||
},function(reason) {
|
||||
callback("Beaker Saver Write Error: " + reason);
|
||||
});
|
||||
});
|
||||
},function(reason) {
|
||||
callback("Beaker Saver Stat Error: " + reason);
|
||||
});
|
||||
@@ -49,7 +51,7 @@ BeakerSaver.prototype.info = {
|
||||
Static method that returns true if this saver is capable of working
|
||||
*/
|
||||
exports.canSave = function(wiki) {
|
||||
return !!window.dat;
|
||||
return !!window.DatArchive;
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -25,7 +25,8 @@ DownloadSaver.prototype.save = function(text,method,callback,options) {
|
||||
if(!filename) {
|
||||
var p = document.location.pathname.lastIndexOf("/");
|
||||
if(p !== -1) {
|
||||
filename = document.location.pathname.substr(p+1);
|
||||
// We decode the pathname because document.location is URL encoded by the browser
|
||||
filename = decodeURIComponent(document.location.pathname.substr(p+1));
|
||||
}
|
||||
}
|
||||
if(!filename) {
|
||||
|
||||
@@ -47,7 +47,7 @@ var PutSaver = function(wiki) {
|
||||
};
|
||||
|
||||
PutSaver.prototype.uri = function() {
|
||||
return encodeURI(document.location.toString().split("#")[0]);
|
||||
return document.location.toString().split("#")[0];
|
||||
};
|
||||
|
||||
// TODO: in case of edit conflict
|
||||
|
||||
@@ -33,6 +33,7 @@ function Syncer(options) {
|
||||
var self = this;
|
||||
this.wiki = options.wiki;
|
||||
this.syncadaptor = options.syncadaptor;
|
||||
this.disableUI = !!options.disableUI;
|
||||
this.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;
|
||||
this.titleUserName = options.titleUserName || this.titleUserName;
|
||||
this.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;
|
||||
@@ -41,8 +42,12 @@ function Syncer(options) {
|
||||
this.throttleInterval = options.throttleInterval || this.throttleInterval;
|
||||
this.fallbackInterval = options.fallbackInterval || this.fallbackInterval;
|
||||
this.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval;
|
||||
this.logging = "logging" in options ? options.logging : true;
|
||||
// Make a logger
|
||||
this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : ""));
|
||||
this.logger = new $tw.utils.Logger("syncer" + ($tw.browser ? "-browser" : "") + ($tw.node ? "-server" : "") + (this.syncadaptor.name ? ("-" + this.syncadaptor.name) : ""),{
|
||||
colour: "cyan",
|
||||
enable: this.logging
|
||||
});
|
||||
// Compile the dirty tiddler filter
|
||||
this.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));
|
||||
// Record information for known tiddlers
|
||||
@@ -57,7 +62,7 @@ function Syncer(options) {
|
||||
self.syncToServer(changes);
|
||||
});
|
||||
// Browser event handlers
|
||||
if($tw.browser) {
|
||||
if($tw.browser && !this.disableUI) {
|
||||
// Set up our beforeunload handler
|
||||
$tw.addUnloadTask(function(event) {
|
||||
var confirmationMessage;
|
||||
@@ -79,9 +84,11 @@ function Syncer(options) {
|
||||
});
|
||||
}
|
||||
// Listen out for lazyLoad events
|
||||
this.wiki.addEventListener("lazyLoad",function(title) {
|
||||
self.handleLazyLoadEvent(title);
|
||||
});
|
||||
if(!this.disableUI) {
|
||||
this.wiki.addEventListener("lazyLoad",function(title) {
|
||||
self.handleLazyLoadEvent(title);
|
||||
});
|
||||
}
|
||||
// Get the login status
|
||||
this.getStatus(function(err,isLoggedIn) {
|
||||
// Do a sync from the server
|
||||
@@ -134,7 +141,7 @@ Syncer.prototype.isDirty = function() {
|
||||
Update the document body with the class "tc-dirty" if the wiki has unsaved/unsynced changes
|
||||
*/
|
||||
Syncer.prototype.updateDirtyStatus = function() {
|
||||
if($tw.browser) {
|
||||
if($tw.browser && !this.disableUI) {
|
||||
$tw.utils.toggleClass(document.body,"tc-dirty",this.isDirty());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -224,8 +224,7 @@ Object.defineProperty(TW_Element.prototype, "textContent", {
|
||||
get: function() {
|
||||
if(this.isRaw) {
|
||||
if(this.rawTextContent === null) {
|
||||
console.log(booboo)
|
||||
throw "Cannot get textContent on a raw TW_Element";
|
||||
return "";
|
||||
} else {
|
||||
return this.rawTextContent;
|
||||
}
|
||||
@@ -245,7 +244,7 @@ Object.defineProperty(TW_Element.prototype, "textContent", {
|
||||
Object.defineProperty(TW_Element.prototype, "formattedTextContent", {
|
||||
get: function() {
|
||||
if(this.isRaw) {
|
||||
throw "Cannot get formattedTextContent on a raw TW_Element";
|
||||
return "";
|
||||
} else {
|
||||
var b = [],
|
||||
isBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;
|
||||
|
||||
@@ -17,16 +17,19 @@ var ALERT_TAG = "$:/tags/Alert";
|
||||
/*
|
||||
Make a new logger
|
||||
*/
|
||||
function Logger(componentName) {
|
||||
function Logger(componentName,options) {
|
||||
options = options || {};
|
||||
this.componentName = componentName || "";
|
||||
this.colour = options.colour || "white";
|
||||
this.enable = "enable" in options ? options.enable : true;
|
||||
}
|
||||
|
||||
/*
|
||||
Log a message
|
||||
*/
|
||||
Logger.prototype.log = function(/* args */) {
|
||||
if(console !== undefined && console.log !== undefined) {
|
||||
return Function.apply.call(console.log, console, [this.componentName + ":"].concat(Array.prototype.slice.call(arguments,0)));
|
||||
if(this.enable && console !== undefined && console.log !== undefined) {
|
||||
return Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + ":"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -34,44 +37,46 @@ Logger.prototype.log = function(/* args */) {
|
||||
Alert a message
|
||||
*/
|
||||
Logger.prototype.alert = function(/* args */) {
|
||||
// Prepare the text of the alert
|
||||
var text = Array.prototype.join.call(arguments," ");
|
||||
// Create alert tiddlers in the browser
|
||||
if($tw.browser) {
|
||||
// Check if there is an existing alert with the same text and the same component
|
||||
var existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),
|
||||
alertFields,
|
||||
existingCount,
|
||||
self = this;
|
||||
$tw.utils.each(existingAlerts,function(title) {
|
||||
var tiddler = $tw.wiki.getTiddler(title);
|
||||
if(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {
|
||||
alertFields = $tw.utils.extend({},tiddler.fields);
|
||||
if(this.enable) {
|
||||
// Prepare the text of the alert
|
||||
var text = Array.prototype.join.call(arguments," ");
|
||||
// Create alert tiddlers in the browser
|
||||
if($tw.browser) {
|
||||
// Check if there is an existing alert with the same text and the same component
|
||||
var existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),
|
||||
alertFields,
|
||||
existingCount,
|
||||
self = this;
|
||||
$tw.utils.each(existingAlerts,function(title) {
|
||||
var tiddler = $tw.wiki.getTiddler(title);
|
||||
if(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {
|
||||
alertFields = $tw.utils.extend({},tiddler.fields);
|
||||
}
|
||||
});
|
||||
if(alertFields) {
|
||||
existingCount = alertFields.count || 1;
|
||||
} else {
|
||||
alertFields = {
|
||||
title: $tw.wiki.generateNewTitle("$:/temp/alerts/alert",{prefix: ""}),
|
||||
text: text,
|
||||
tags: [ALERT_TAG],
|
||||
component: this.componentName
|
||||
};
|
||||
existingCount = 0;
|
||||
}
|
||||
});
|
||||
if(alertFields) {
|
||||
existingCount = alertFields.count || 1;
|
||||
alertFields.modified = new Date();
|
||||
if(++existingCount > 1) {
|
||||
alertFields.count = existingCount;
|
||||
} else {
|
||||
alertFields.count = undefined;
|
||||
}
|
||||
$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));
|
||||
// Log the alert as well
|
||||
this.log.apply(this,Array.prototype.slice.call(arguments,0));
|
||||
} else {
|
||||
alertFields = {
|
||||
title: $tw.wiki.generateNewTitle("$:/temp/alerts/alert",{prefix: ""}),
|
||||
text: text,
|
||||
tags: [ALERT_TAG],
|
||||
component: this.componentName
|
||||
};
|
||||
existingCount = 0;
|
||||
}
|
||||
alertFields.modified = new Date();
|
||||
if(++existingCount > 1) {
|
||||
alertFields.count = existingCount;
|
||||
} else {
|
||||
alertFields.count = undefined;
|
||||
}
|
||||
$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));
|
||||
// Log the alert as well
|
||||
this.log.apply(this,Array.prototype.slice.call(arguments,0));
|
||||
} else {
|
||||
// Print an orange message to the console if not in the browser
|
||||
console.error("\x1b[1;33m" + text + "\x1b[0m");
|
||||
// Print an orange message to the console if not in the browser
|
||||
console.error("\x1b[1;33m" + text + "\x1b[0m");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
919
core/modules/utils/transliterate.js
Normal file
919
core/modules/utils/transliterate.js
Normal file
@@ -0,0 +1,919 @@
|
||||
/*\
|
||||
title: $:/core/modules/utils/transliterate.js
|
||||
type: application/javascript
|
||||
module-type: utils
|
||||
|
||||
Transliteration static utility functions.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Transliterate string to ASCII
|
||||
|
||||
(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)
|
||||
*/
|
||||
exports.transliterationPairs = {
|
||||
"Á":"A",
|
||||
"Ă":"A",
|
||||
"Ắ":"A",
|
||||
"Ặ":"A",
|
||||
"Ằ":"A",
|
||||
"Ẳ":"A",
|
||||
"Ẵ":"A",
|
||||
"Ǎ":"A",
|
||||
"Â":"A",
|
||||
"Ấ":"A",
|
||||
"Ậ":"A",
|
||||
"Ầ":"A",
|
||||
"Ẩ":"A",
|
||||
"Ẫ":"A",
|
||||
"Ä":"A",
|
||||
"Ǟ":"A",
|
||||
"Ȧ":"A",
|
||||
"Ǡ":"A",
|
||||
"Ạ":"A",
|
||||
"Ȁ":"A",
|
||||
"À":"A",
|
||||
"Ả":"A",
|
||||
"Ȃ":"A",
|
||||
"Ā":"A",
|
||||
"Ą":"A",
|
||||
"Å":"A",
|
||||
"Ǻ":"A",
|
||||
"Ḁ":"A",
|
||||
"Ⱥ":"A",
|
||||
"Ã":"A",
|
||||
"Ꜳ":"AA",
|
||||
"Æ":"AE",
|
||||
"Ǽ":"AE",
|
||||
"Ǣ":"AE",
|
||||
"Ꜵ":"AO",
|
||||
"Ꜷ":"AU",
|
||||
"Ꜹ":"AV",
|
||||
"Ꜻ":"AV",
|
||||
"Ꜽ":"AY",
|
||||
"Ḃ":"B",
|
||||
"Ḅ":"B",
|
||||
"Ɓ":"B",
|
||||
"Ḇ":"B",
|
||||
"Ƀ":"B",
|
||||
"Ƃ":"B",
|
||||
"Ć":"C",
|
||||
"Č":"C",
|
||||
"Ç":"C",
|
||||
"Ḉ":"C",
|
||||
"Ĉ":"C",
|
||||
"Ċ":"C",
|
||||
"Ƈ":"C",
|
||||
"Ȼ":"C",
|
||||
"Ď":"D",
|
||||
"Ḑ":"D",
|
||||
"Ḓ":"D",
|
||||
"Ḋ":"D",
|
||||
"Ḍ":"D",
|
||||
"Ɗ":"D",
|
||||
"Ḏ":"D",
|
||||
"Dz":"D",
|
||||
"Dž":"D",
|
||||
"Đ":"D",
|
||||
"Ƌ":"D",
|
||||
"DZ":"DZ",
|
||||
"DŽ":"DZ",
|
||||
"É":"E",
|
||||
"Ĕ":"E",
|
||||
"Ě":"E",
|
||||
"Ȩ":"E",
|
||||
"Ḝ":"E",
|
||||
"Ê":"E",
|
||||
"Ế":"E",
|
||||
"Ệ":"E",
|
||||
"Ề":"E",
|
||||
"Ể":"E",
|
||||
"Ễ":"E",
|
||||
"Ḙ":"E",
|
||||
"Ë":"E",
|
||||
"Ė":"E",
|
||||
"Ẹ":"E",
|
||||
"Ȅ":"E",
|
||||
"È":"E",
|
||||
"Ẻ":"E",
|
||||
"Ȇ":"E",
|
||||
"Ē":"E",
|
||||
"Ḗ":"E",
|
||||
"Ḕ":"E",
|
||||
"Ę":"E",
|
||||
"Ɇ":"E",
|
||||
"Ẽ":"E",
|
||||
"Ḛ":"E",
|
||||
"Ꝫ":"ET",
|
||||
"Ḟ":"F",
|
||||
"Ƒ":"F",
|
||||
"Ǵ":"G",
|
||||
"Ğ":"G",
|
||||
"Ǧ":"G",
|
||||
"Ģ":"G",
|
||||
"Ĝ":"G",
|
||||
"Ġ":"G",
|
||||
"Ɠ":"G",
|
||||
"Ḡ":"G",
|
||||
"Ǥ":"G",
|
||||
"Ḫ":"H",
|
||||
"Ȟ":"H",
|
||||
"Ḩ":"H",
|
||||
"Ĥ":"H",
|
||||
"Ⱨ":"H",
|
||||
"Ḧ":"H",
|
||||
"Ḣ":"H",
|
||||
"Ḥ":"H",
|
||||
"Ħ":"H",
|
||||
"Í":"I",
|
||||
"Ĭ":"I",
|
||||
"Ǐ":"I",
|
||||
"Î":"I",
|
||||
"Ï":"I",
|
||||
"Ḯ":"I",
|
||||
"İ":"I",
|
||||
"Ị":"I",
|
||||
"Ȉ":"I",
|
||||
"Ì":"I",
|
||||
"Ỉ":"I",
|
||||
"Ȋ":"I",
|
||||
"Ī":"I",
|
||||
"Į":"I",
|
||||
"Ɨ":"I",
|
||||
"Ĩ":"I",
|
||||
"Ḭ":"I",
|
||||
"Ꝺ":"D",
|
||||
"Ꝼ":"F",
|
||||
"Ᵹ":"G",
|
||||
"Ꞃ":"R",
|
||||
"Ꞅ":"S",
|
||||
"Ꞇ":"T",
|
||||
"Ꝭ":"IS",
|
||||
"Ĵ":"J",
|
||||
"Ɉ":"J",
|
||||
"Ḱ":"K",
|
||||
"Ǩ":"K",
|
||||
"Ķ":"K",
|
||||
"Ⱪ":"K",
|
||||
"Ꝃ":"K",
|
||||
"Ḳ":"K",
|
||||
"Ƙ":"K",
|
||||
"Ḵ":"K",
|
||||
"Ꝁ":"K",
|
||||
"Ꝅ":"K",
|
||||
"Ĺ":"L",
|
||||
"Ƚ":"L",
|
||||
"Ľ":"L",
|
||||
"Ļ":"L",
|
||||
"Ḽ":"L",
|
||||
"Ḷ":"L",
|
||||
"Ḹ":"L",
|
||||
"Ⱡ":"L",
|
||||
"Ꝉ":"L",
|
||||
"Ḻ":"L",
|
||||
"Ŀ":"L",
|
||||
"Ɫ":"L",
|
||||
"Lj":"L",
|
||||
"Ł":"L",
|
||||
"LJ":"LJ",
|
||||
"Ḿ":"M",
|
||||
"Ṁ":"M",
|
||||
"Ṃ":"M",
|
||||
"Ɱ":"M",
|
||||
"Ń":"N",
|
||||
"Ň":"N",
|
||||
"Ņ":"N",
|
||||
"Ṋ":"N",
|
||||
"Ṅ":"N",
|
||||
"Ṇ":"N",
|
||||
"Ǹ":"N",
|
||||
"Ɲ":"N",
|
||||
"Ṉ":"N",
|
||||
"Ƞ":"N",
|
||||
"Nj":"N",
|
||||
"Ñ":"N",
|
||||
"NJ":"NJ",
|
||||
"Ó":"O",
|
||||
"Ŏ":"O",
|
||||
"Ǒ":"O",
|
||||
"Ô":"O",
|
||||
"Ố":"O",
|
||||
"Ộ":"O",
|
||||
"Ồ":"O",
|
||||
"Ổ":"O",
|
||||
"Ỗ":"O",
|
||||
"Ö":"O",
|
||||
"Ȫ":"O",
|
||||
"Ȯ":"O",
|
||||
"Ȱ":"O",
|
||||
"Ọ":"O",
|
||||
"Ő":"O",
|
||||
"Ȍ":"O",
|
||||
"Ò":"O",
|
||||
"Ỏ":"O",
|
||||
"Ơ":"O",
|
||||
"Ớ":"O",
|
||||
"Ợ":"O",
|
||||
"Ờ":"O",
|
||||
"Ở":"O",
|
||||
"Ỡ":"O",
|
||||
"Ȏ":"O",
|
||||
"Ꝋ":"O",
|
||||
"Ꝍ":"O",
|
||||
"Ō":"O",
|
||||
"Ṓ":"O",
|
||||
"Ṑ":"O",
|
||||
"Ɵ":"O",
|
||||
"Ǫ":"O",
|
||||
"Ǭ":"O",
|
||||
"Ø":"O",
|
||||
"Ǿ":"O",
|
||||
"Õ":"O",
|
||||
"Ṍ":"O",
|
||||
"Ṏ":"O",
|
||||
"Ȭ":"O",
|
||||
"Ƣ":"OI",
|
||||
"Ꝏ":"OO",
|
||||
"Ɛ":"E",
|
||||
"Ɔ":"O",
|
||||
"Ȣ":"OU",
|
||||
"Ṕ":"P",
|
||||
"Ṗ":"P",
|
||||
"Ꝓ":"P",
|
||||
"Ƥ":"P",
|
||||
"Ꝕ":"P",
|
||||
"Ᵽ":"P",
|
||||
"Ꝑ":"P",
|
||||
"Ꝙ":"Q",
|
||||
"Ꝗ":"Q",
|
||||
"Ŕ":"R",
|
||||
"Ř":"R",
|
||||
"Ŗ":"R",
|
||||
"Ṙ":"R",
|
||||
"Ṛ":"R",
|
||||
"Ṝ":"R",
|
||||
"Ȑ":"R",
|
||||
"Ȓ":"R",
|
||||
"Ṟ":"R",
|
||||
"Ɍ":"R",
|
||||
"Ɽ":"R",
|
||||
"Ꜿ":"C",
|
||||
"Ǝ":"E",
|
||||
"Ś":"S",
|
||||
"Ṥ":"S",
|
||||
"Š":"S",
|
||||
"Ṧ":"S",
|
||||
"Ş":"S",
|
||||
"Ŝ":"S",
|
||||
"Ș":"S",
|
||||
"Ṡ":"S",
|
||||
"Ṣ":"S",
|
||||
"Ṩ":"S",
|
||||
"Ť":"T",
|
||||
"Ţ":"T",
|
||||
"Ṱ":"T",
|
||||
"Ț":"T",
|
||||
"Ⱦ":"T",
|
||||
"Ṫ":"T",
|
||||
"Ṭ":"T",
|
||||
"Ƭ":"T",
|
||||
"Ṯ":"T",
|
||||
"Ʈ":"T",
|
||||
"Ŧ":"T",
|
||||
"Ɐ":"A",
|
||||
"Ꞁ":"L",
|
||||
"Ɯ":"M",
|
||||
"Ʌ":"V",
|
||||
"Ꜩ":"TZ",
|
||||
"Ú":"U",
|
||||
"Ŭ":"U",
|
||||
"Ǔ":"U",
|
||||
"Û":"U",
|
||||
"Ṷ":"U",
|
||||
"Ü":"U",
|
||||
"Ǘ":"U",
|
||||
"Ǚ":"U",
|
||||
"Ǜ":"U",
|
||||
"Ǖ":"U",
|
||||
"Ṳ":"U",
|
||||
"Ụ":"U",
|
||||
"Ű":"U",
|
||||
"Ȕ":"U",
|
||||
"Ù":"U",
|
||||
"Ủ":"U",
|
||||
"Ư":"U",
|
||||
"Ứ":"U",
|
||||
"Ự":"U",
|
||||
"Ừ":"U",
|
||||
"Ử":"U",
|
||||
"Ữ":"U",
|
||||
"Ȗ":"U",
|
||||
"Ū":"U",
|
||||
"Ṻ":"U",
|
||||
"Ų":"U",
|
||||
"Ů":"U",
|
||||
"Ũ":"U",
|
||||
"Ṹ":"U",
|
||||
"Ṵ":"U",
|
||||
"Ꝟ":"V",
|
||||
"Ṿ":"V",
|
||||
"Ʋ":"V",
|
||||
"Ṽ":"V",
|
||||
"Ꝡ":"VY",
|
||||
"Ẃ":"W",
|
||||
"Ŵ":"W",
|
||||
"Ẅ":"W",
|
||||
"Ẇ":"W",
|
||||
"Ẉ":"W",
|
||||
"Ẁ":"W",
|
||||
"Ⱳ":"W",
|
||||
"Ẍ":"X",
|
||||
"Ẋ":"X",
|
||||
"Ý":"Y",
|
||||
"Ŷ":"Y",
|
||||
"Ÿ":"Y",
|
||||
"Ẏ":"Y",
|
||||
"Ỵ":"Y",
|
||||
"Ỳ":"Y",
|
||||
"Ƴ":"Y",
|
||||
"Ỷ":"Y",
|
||||
"Ỿ":"Y",
|
||||
"Ȳ":"Y",
|
||||
"Ɏ":"Y",
|
||||
"Ỹ":"Y",
|
||||
"Ź":"Z",
|
||||
"Ž":"Z",
|
||||
"Ẑ":"Z",
|
||||
"Ⱬ":"Z",
|
||||
"Ż":"Z",
|
||||
"Ẓ":"Z",
|
||||
"Ȥ":"Z",
|
||||
"Ẕ":"Z",
|
||||
"Ƶ":"Z",
|
||||
"IJ":"IJ",
|
||||
"Œ":"OE",
|
||||
"ᴀ":"A",
|
||||
"ᴁ":"AE",
|
||||
"ʙ":"B",
|
||||
"ᴃ":"B",
|
||||
"ᴄ":"C",
|
||||
"ᴅ":"D",
|
||||
"ᴇ":"E",
|
||||
"ꜰ":"F",
|
||||
"ɢ":"G",
|
||||
"ʛ":"G",
|
||||
"ʜ":"H",
|
||||
"ɪ":"I",
|
||||
"ʁ":"R",
|
||||
"ᴊ":"J",
|
||||
"ᴋ":"K",
|
||||
"ʟ":"L",
|
||||
"ᴌ":"L",
|
||||
"ᴍ":"M",
|
||||
"ɴ":"N",
|
||||
"ᴏ":"O",
|
||||
"ɶ":"OE",
|
||||
"ᴐ":"O",
|
||||
"ᴕ":"OU",
|
||||
"ᴘ":"P",
|
||||
"ʀ":"R",
|
||||
"ᴎ":"N",
|
||||
"ᴙ":"R",
|
||||
"ꜱ":"S",
|
||||
"ᴛ":"T",
|
||||
"ⱻ":"E",
|
||||
"ᴚ":"R",
|
||||
"ᴜ":"U",
|
||||
"ᴠ":"V",
|
||||
"ᴡ":"W",
|
||||
"ʏ":"Y",
|
||||
"ᴢ":"Z",
|
||||
"á":"a",
|
||||
"ă":"a",
|
||||
"ắ":"a",
|
||||
"ặ":"a",
|
||||
"ằ":"a",
|
||||
"ẳ":"a",
|
||||
"ẵ":"a",
|
||||
"ǎ":"a",
|
||||
"â":"a",
|
||||
"ấ":"a",
|
||||
"ậ":"a",
|
||||
"ầ":"a",
|
||||
"ẩ":"a",
|
||||
"ẫ":"a",
|
||||
"ä":"a",
|
||||
"ǟ":"a",
|
||||
"ȧ":"a",
|
||||
"ǡ":"a",
|
||||
"ạ":"a",
|
||||
"ȁ":"a",
|
||||
"à":"a",
|
||||
"ả":"a",
|
||||
"ȃ":"a",
|
||||
"ā":"a",
|
||||
"ą":"a",
|
||||
"ᶏ":"a",
|
||||
"ẚ":"a",
|
||||
"å":"a",
|
||||
"ǻ":"a",
|
||||
"ḁ":"a",
|
||||
"ⱥ":"a",
|
||||
"ã":"a",
|
||||
"ꜳ":"aa",
|
||||
"æ":"ae",
|
||||
"ǽ":"ae",
|
||||
"ǣ":"ae",
|
||||
"ꜵ":"ao",
|
||||
"ꜷ":"au",
|
||||
"ꜹ":"av",
|
||||
"ꜻ":"av",
|
||||
"ꜽ":"ay",
|
||||
"ḃ":"b",
|
||||
"ḅ":"b",
|
||||
"ɓ":"b",
|
||||
"ḇ":"b",
|
||||
"ᵬ":"b",
|
||||
"ᶀ":"b",
|
||||
"ƀ":"b",
|
||||
"ƃ":"b",
|
||||
"ɵ":"o",
|
||||
"ć":"c",
|
||||
"č":"c",
|
||||
"ç":"c",
|
||||
"ḉ":"c",
|
||||
"ĉ":"c",
|
||||
"ɕ":"c",
|
||||
"ċ":"c",
|
||||
"ƈ":"c",
|
||||
"ȼ":"c",
|
||||
"ď":"d",
|
||||
"ḑ":"d",
|
||||
"ḓ":"d",
|
||||
"ȡ":"d",
|
||||
"ḋ":"d",
|
||||
"ḍ":"d",
|
||||
"ɗ":"d",
|
||||
"ᶑ":"d",
|
||||
"ḏ":"d",
|
||||
"ᵭ":"d",
|
||||
"ᶁ":"d",
|
||||
"đ":"d",
|
||||
"ɖ":"d",
|
||||
"ƌ":"d",
|
||||
"ı":"i",
|
||||
"ȷ":"j",
|
||||
"ɟ":"j",
|
||||
"ʄ":"j",
|
||||
"dz":"dz",
|
||||
"dž":"dz",
|
||||
"é":"e",
|
||||
"ĕ":"e",
|
||||
"ě":"e",
|
||||
"ȩ":"e",
|
||||
"ḝ":"e",
|
||||
"ê":"e",
|
||||
"ế":"e",
|
||||
"ệ":"e",
|
||||
"ề":"e",
|
||||
"ể":"e",
|
||||
"ễ":"e",
|
||||
"ḙ":"e",
|
||||
"ë":"e",
|
||||
"ė":"e",
|
||||
"ẹ":"e",
|
||||
"ȅ":"e",
|
||||
"è":"e",
|
||||
"ẻ":"e",
|
||||
"ȇ":"e",
|
||||
"ē":"e",
|
||||
"ḗ":"e",
|
||||
"ḕ":"e",
|
||||
"ⱸ":"e",
|
||||
"ę":"e",
|
||||
"ᶒ":"e",
|
||||
"ɇ":"e",
|
||||
"ẽ":"e",
|
||||
"ḛ":"e",
|
||||
"ꝫ":"et",
|
||||
"ḟ":"f",
|
||||
"ƒ":"f",
|
||||
"ᵮ":"f",
|
||||
"ᶂ":"f",
|
||||
"ǵ":"g",
|
||||
"ğ":"g",
|
||||
"ǧ":"g",
|
||||
"ģ":"g",
|
||||
"ĝ":"g",
|
||||
"ġ":"g",
|
||||
"ɠ":"g",
|
||||
"ḡ":"g",
|
||||
"ᶃ":"g",
|
||||
"ǥ":"g",
|
||||
"ḫ":"h",
|
||||
"ȟ":"h",
|
||||
"ḩ":"h",
|
||||
"ĥ":"h",
|
||||
"ⱨ":"h",
|
||||
"ḧ":"h",
|
||||
"ḣ":"h",
|
||||
"ḥ":"h",
|
||||
"ɦ":"h",
|
||||
"ẖ":"h",
|
||||
"ħ":"h",
|
||||
"ƕ":"hv",
|
||||
"í":"i",
|
||||
"ĭ":"i",
|
||||
"ǐ":"i",
|
||||
"î":"i",
|
||||
"ï":"i",
|
||||
"ḯ":"i",
|
||||
"ị":"i",
|
||||
"ȉ":"i",
|
||||
"ì":"i",
|
||||
"ỉ":"i",
|
||||
"ȋ":"i",
|
||||
"ī":"i",
|
||||
"į":"i",
|
||||
"ᶖ":"i",
|
||||
"ɨ":"i",
|
||||
"ĩ":"i",
|
||||
"ḭ":"i",
|
||||
"ꝺ":"d",
|
||||
"ꝼ":"f",
|
||||
"ᵹ":"g",
|
||||
"ꞃ":"r",
|
||||
"ꞅ":"s",
|
||||
"ꞇ":"t",
|
||||
"ꝭ":"is",
|
||||
"ǰ":"j",
|
||||
"ĵ":"j",
|
||||
"ʝ":"j",
|
||||
"ɉ":"j",
|
||||
"ḱ":"k",
|
||||
"ǩ":"k",
|
||||
"ķ":"k",
|
||||
"ⱪ":"k",
|
||||
"ꝃ":"k",
|
||||
"ḳ":"k",
|
||||
"ƙ":"k",
|
||||
"ḵ":"k",
|
||||
"ᶄ":"k",
|
||||
"ꝁ":"k",
|
||||
"ꝅ":"k",
|
||||
"ĺ":"l",
|
||||
"ƚ":"l",
|
||||
"ɬ":"l",
|
||||
"ľ":"l",
|
||||
"ļ":"l",
|
||||
"ḽ":"l",
|
||||
"ȴ":"l",
|
||||
"ḷ":"l",
|
||||
"ḹ":"l",
|
||||
"ⱡ":"l",
|
||||
"ꝉ":"l",
|
||||
"ḻ":"l",
|
||||
"ŀ":"l",
|
||||
"ɫ":"l",
|
||||
"ᶅ":"l",
|
||||
"ɭ":"l",
|
||||
"ł":"l",
|
||||
"lj":"lj",
|
||||
"ſ":"s",
|
||||
"ẜ":"s",
|
||||
"ẛ":"s",
|
||||
"ẝ":"s",
|
||||
"ḿ":"m",
|
||||
"ṁ":"m",
|
||||
"ṃ":"m",
|
||||
"ɱ":"m",
|
||||
"ᵯ":"m",
|
||||
"ᶆ":"m",
|
||||
"ń":"n",
|
||||
"ň":"n",
|
||||
"ņ":"n",
|
||||
"ṋ":"n",
|
||||
"ȵ":"n",
|
||||
"ṅ":"n",
|
||||
"ṇ":"n",
|
||||
"ǹ":"n",
|
||||
"ɲ":"n",
|
||||
"ṉ":"n",
|
||||
"ƞ":"n",
|
||||
"ᵰ":"n",
|
||||
"ᶇ":"n",
|
||||
"ɳ":"n",
|
||||
"ñ":"n",
|
||||
"nj":"nj",
|
||||
"ó":"o",
|
||||
"ŏ":"o",
|
||||
"ǒ":"o",
|
||||
"ô":"o",
|
||||
"ố":"o",
|
||||
"ộ":"o",
|
||||
"ồ":"o",
|
||||
"ổ":"o",
|
||||
"ỗ":"o",
|
||||
"ö":"o",
|
||||
"ȫ":"o",
|
||||
"ȯ":"o",
|
||||
"ȱ":"o",
|
||||
"ọ":"o",
|
||||
"ő":"o",
|
||||
"ȍ":"o",
|
||||
"ò":"o",
|
||||
"ỏ":"o",
|
||||
"ơ":"o",
|
||||
"ớ":"o",
|
||||
"ợ":"o",
|
||||
"ờ":"o",
|
||||
"ở":"o",
|
||||
"ỡ":"o",
|
||||
"ȏ":"o",
|
||||
"ꝋ":"o",
|
||||
"ꝍ":"o",
|
||||
"ⱺ":"o",
|
||||
"ō":"o",
|
||||
"ṓ":"o",
|
||||
"ṑ":"o",
|
||||
"ǫ":"o",
|
||||
"ǭ":"o",
|
||||
"ø":"o",
|
||||
"ǿ":"o",
|
||||
"õ":"o",
|
||||
"ṍ":"o",
|
||||
"ṏ":"o",
|
||||
"ȭ":"o",
|
||||
"ƣ":"oi",
|
||||
"ꝏ":"oo",
|
||||
"ɛ":"e",
|
||||
"ᶓ":"e",
|
||||
"ɔ":"o",
|
||||
"ᶗ":"o",
|
||||
"ȣ":"ou",
|
||||
"ṕ":"p",
|
||||
"ṗ":"p",
|
||||
"ꝓ":"p",
|
||||
"ƥ":"p",
|
||||
"ᵱ":"p",
|
||||
"ᶈ":"p",
|
||||
"ꝕ":"p",
|
||||
"ᵽ":"p",
|
||||
"ꝑ":"p",
|
||||
"ꝙ":"q",
|
||||
"ʠ":"q",
|
||||
"ɋ":"q",
|
||||
"ꝗ":"q",
|
||||
"ŕ":"r",
|
||||
"ř":"r",
|
||||
"ŗ":"r",
|
||||
"ṙ":"r",
|
||||
"ṛ":"r",
|
||||
"ṝ":"r",
|
||||
"ȑ":"r",
|
||||
"ɾ":"r",
|
||||
"ᵳ":"r",
|
||||
"ȓ":"r",
|
||||
"ṟ":"r",
|
||||
"ɼ":"r",
|
||||
"ᵲ":"r",
|
||||
"ᶉ":"r",
|
||||
"ɍ":"r",
|
||||
"ɽ":"r",
|
||||
"ↄ":"c",
|
||||
"ꜿ":"c",
|
||||
"ɘ":"e",
|
||||
"ɿ":"r",
|
||||
"ś":"s",
|
||||
"ṥ":"s",
|
||||
"š":"s",
|
||||
"ṧ":"s",
|
||||
"ş":"s",
|
||||
"ŝ":"s",
|
||||
"ș":"s",
|
||||
"ṡ":"s",
|
||||
"ṣ":"s",
|
||||
"ṩ":"s",
|
||||
"ʂ":"s",
|
||||
"ᵴ":"s",
|
||||
"ᶊ":"s",
|
||||
"ȿ":"s",
|
||||
"ɡ":"g",
|
||||
"ᴑ":"o",
|
||||
"ᴓ":"o",
|
||||
"ᴝ":"u",
|
||||
"ť":"t",
|
||||
"ţ":"t",
|
||||
"ṱ":"t",
|
||||
"ț":"t",
|
||||
"ȶ":"t",
|
||||
"ẗ":"t",
|
||||
"ⱦ":"t",
|
||||
"ṫ":"t",
|
||||
"ṭ":"t",
|
||||
"ƭ":"t",
|
||||
"ṯ":"t",
|
||||
"ᵵ":"t",
|
||||
"ƫ":"t",
|
||||
"ʈ":"t",
|
||||
"ŧ":"t",
|
||||
"ᵺ":"th",
|
||||
"ɐ":"a",
|
||||
"ᴂ":"ae",
|
||||
"ǝ":"e",
|
||||
"ᵷ":"g",
|
||||
"ɥ":"h",
|
||||
"ʮ":"h",
|
||||
"ʯ":"h",
|
||||
"ᴉ":"i",
|
||||
"ʞ":"k",
|
||||
"ꞁ":"l",
|
||||
"ɯ":"m",
|
||||
"ɰ":"m",
|
||||
"ᴔ":"oe",
|
||||
"ɹ":"r",
|
||||
"ɻ":"r",
|
||||
"ɺ":"r",
|
||||
"ⱹ":"r",
|
||||
"ʇ":"t",
|
||||
"ʌ":"v",
|
||||
"ʍ":"w",
|
||||
"ʎ":"y",
|
||||
"ꜩ":"tz",
|
||||
"ú":"u",
|
||||
"ŭ":"u",
|
||||
"ǔ":"u",
|
||||
"û":"u",
|
||||
"ṷ":"u",
|
||||
"ü":"u",
|
||||
"ǘ":"u",
|
||||
"ǚ":"u",
|
||||
"ǜ":"u",
|
||||
"ǖ":"u",
|
||||
"ṳ":"u",
|
||||
"ụ":"u",
|
||||
"ű":"u",
|
||||
"ȕ":"u",
|
||||
"ù":"u",
|
||||
"ủ":"u",
|
||||
"ư":"u",
|
||||
"ứ":"u",
|
||||
"ự":"u",
|
||||
"ừ":"u",
|
||||
"ử":"u",
|
||||
"ữ":"u",
|
||||
"ȗ":"u",
|
||||
"ū":"u",
|
||||
"ṻ":"u",
|
||||
"ų":"u",
|
||||
"ᶙ":"u",
|
||||
"ů":"u",
|
||||
"ũ":"u",
|
||||
"ṹ":"u",
|
||||
"ṵ":"u",
|
||||
"ᵫ":"ue",
|
||||
"ꝸ":"um",
|
||||
"ⱴ":"v",
|
||||
"ꝟ":"v",
|
||||
"ṿ":"v",
|
||||
"ʋ":"v",
|
||||
"ᶌ":"v",
|
||||
"ⱱ":"v",
|
||||
"ṽ":"v",
|
||||
"ꝡ":"vy",
|
||||
"ẃ":"w",
|
||||
"ŵ":"w",
|
||||
"ẅ":"w",
|
||||
"ẇ":"w",
|
||||
"ẉ":"w",
|
||||
"ẁ":"w",
|
||||
"ⱳ":"w",
|
||||
"ẘ":"w",
|
||||
"ẍ":"x",
|
||||
"ẋ":"x",
|
||||
"ᶍ":"x",
|
||||
"ý":"y",
|
||||
"ŷ":"y",
|
||||
"ÿ":"y",
|
||||
"ẏ":"y",
|
||||
"ỵ":"y",
|
||||
"ỳ":"y",
|
||||
"ƴ":"y",
|
||||
"ỷ":"y",
|
||||
"ỿ":"y",
|
||||
"ȳ":"y",
|
||||
"ẙ":"y",
|
||||
"ɏ":"y",
|
||||
"ỹ":"y",
|
||||
"ź":"z",
|
||||
"ž":"z",
|
||||
"ẑ":"z",
|
||||
"ʑ":"z",
|
||||
"ⱬ":"z",
|
||||
"ż":"z",
|
||||
"ẓ":"z",
|
||||
"ȥ":"z",
|
||||
"ẕ":"z",
|
||||
"ᵶ":"z",
|
||||
"ᶎ":"z",
|
||||
"ʐ":"z",
|
||||
"ƶ":"z",
|
||||
"ɀ":"z",
|
||||
"ff":"ff",
|
||||
"ffi":"ffi",
|
||||
"ffl":"ffl",
|
||||
"fi":"fi",
|
||||
"fl":"fl",
|
||||
"ij":"ij",
|
||||
"œ":"oe",
|
||||
"st":"st",
|
||||
"ₐ":"a",
|
||||
"ₑ":"e",
|
||||
"ᵢ":"i",
|
||||
"ⱼ":"j",
|
||||
"ₒ":"o",
|
||||
"ᵣ":"r",
|
||||
"ᵤ":"u",
|
||||
"ᵥ":"v",
|
||||
"ₓ":"x",
|
||||
"Ё":"YO",
|
||||
"Й":"I",
|
||||
"Ц":"TS",
|
||||
"У":"U",
|
||||
"К":"K",
|
||||
"Е":"E",
|
||||
"Н":"N",
|
||||
"Г":"G",
|
||||
"Ш":"SH",
|
||||
"Щ":"SCH",
|
||||
"З":"Z",
|
||||
"Х":"H",
|
||||
"Ъ":"'",
|
||||
"ё":"yo",
|
||||
"й":"i",
|
||||
"ц":"ts",
|
||||
"у":"u",
|
||||
"к":"k",
|
||||
"е":"e",
|
||||
"н":"n",
|
||||
"г":"g",
|
||||
"ш":"sh",
|
||||
"щ":"sch",
|
||||
"з":"z",
|
||||
"х":"h",
|
||||
"ъ":"'",
|
||||
"Ф":"F",
|
||||
"Ы":"I",
|
||||
"В":"V",
|
||||
"А":"a",
|
||||
"П":"P",
|
||||
"Р":"R",
|
||||
"О":"O",
|
||||
"Л":"L",
|
||||
"Д":"D",
|
||||
"Ж":"ZH",
|
||||
"Э":"E",
|
||||
"ф":"f",
|
||||
"ы":"i",
|
||||
"в":"v",
|
||||
"а":"a",
|
||||
"п":"p",
|
||||
"р":"r",
|
||||
"о":"o",
|
||||
"л":"l",
|
||||
"д":"d",
|
||||
"ж":"zh",
|
||||
"э":"e",
|
||||
"Я":"Ya",
|
||||
"Ч":"CH",
|
||||
"С":"S",
|
||||
"М":"M",
|
||||
"И":"I",
|
||||
"Т":"T",
|
||||
"Ь":"'",
|
||||
"Б":"B",
|
||||
"Ю":"YU",
|
||||
"я":"ya",
|
||||
"ч":"ch",
|
||||
"с":"s",
|
||||
"м":"m",
|
||||
"и":"i",
|
||||
"т":"t",
|
||||
"ь":"'",
|
||||
"б":"b",
|
||||
"ю":"yu"
|
||||
};
|
||||
|
||||
exports.transliterate = function(str) {
|
||||
return str.replace(/[^A-Za-z0-9\[\] ]/g,function(ch) {
|
||||
return exports.transliterationPairs[ch] || ch
|
||||
});
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -12,11 +12,43 @@ Various static utility functions.
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Display a message, in colour if we're on a terminal
|
||||
*/
|
||||
exports.log = function(text,colour) {
|
||||
console.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);
|
||||
};
|
||||
|
||||
exports.terminalColour = function(colour) {
|
||||
if(!$tw.browser && $tw.node && process.stdout.isTTY) {
|
||||
if(colour) {
|
||||
var code = exports.terminalColourLookup[colour];
|
||||
if(code) {
|
||||
return "\x1b[" + code + "m";
|
||||
}
|
||||
} else {
|
||||
return "\x1b[0m"; // Cancel colour
|
||||
}
|
||||
}
|
||||
return "";
|
||||
};
|
||||
|
||||
exports.terminalColourLookup = {
|
||||
"black": "0;30",
|
||||
"red": "0;31",
|
||||
"green": "0;32",
|
||||
"brown/orange": "0;33",
|
||||
"blue": "0;34",
|
||||
"purple": "0;35",
|
||||
"cyan": "0;36",
|
||||
"light gray": "0;37"
|
||||
};
|
||||
|
||||
/*
|
||||
Display a warning, in colour if we're on a terminal
|
||||
*/
|
||||
exports.warning = function(text) {
|
||||
console.log($tw.node ? "\x1b[1;33m" + text + "\x1b[0m" : text);
|
||||
exports.log(text,"brown/orange");
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -267,6 +299,9 @@ exports.formatDateString = function(date,template) {
|
||||
[/^0ss/, function() {
|
||||
return $tw.utils.pad(date.getSeconds());
|
||||
}],
|
||||
[/^0XXX/, function() {
|
||||
return $tw.utils.pad(date.getMilliseconds());
|
||||
}],
|
||||
[/^0DD/, function() {
|
||||
return $tw.utils.pad(date.getDate());
|
||||
}],
|
||||
@@ -308,6 +343,9 @@ exports.formatDateString = function(date,template) {
|
||||
[/^ss/, function() {
|
||||
return date.getSeconds();
|
||||
}],
|
||||
[/^XXX/, function() {
|
||||
return date.getMilliseconds();
|
||||
}],
|
||||
[/^[AP]M/, function() {
|
||||
return $tw.utils.getAmPm(date).toUpperCase();
|
||||
}],
|
||||
@@ -324,6 +362,16 @@ exports.formatDateString = function(date,template) {
|
||||
return $tw.utils.pad(date.getFullYear() - 2000);
|
||||
}]
|
||||
];
|
||||
// If the user wants everything in UTC, shift the datestamp
|
||||
// Optimize for format string that essentially means
|
||||
// 'return raw UTC (tiddlywiki style) date string.'
|
||||
if(t.indexOf("[UTC]") == 0 ) {
|
||||
if(t == "[UTC]YYYY0MM0DD0hh0mm0ssXXX")
|
||||
return $tw.utils.stringifyDate(new Date());
|
||||
var offset = date.getTimezoneOffset() ; // in minutes
|
||||
date = new Date(date.getTime()+offset*60*1000) ;
|
||||
t = t.substr(5) ;
|
||||
}
|
||||
while(t.length){
|
||||
var matchString = "";
|
||||
$tw.utils.each(matches, function(m) {
|
||||
@@ -495,7 +543,24 @@ exports.stringify = function(s) {
|
||||
.replace(/'/g, "\\'") // single quote character
|
||||
.replace(/\r/g, '\\r') // carriage return
|
||||
.replace(/\n/g, '\\n') // line feed
|
||||
.replace(/[\x80-\uFFFF]/g, exports.escape); // non-ASCII characters
|
||||
.replace(/[\x00-\x1f\x80-\uFFFF]/g, exports.escape); // non-ASCII characters
|
||||
};
|
||||
|
||||
// Turns a string into a legal JSON string
|
||||
// Derived from peg.js, thanks to David Majda
|
||||
exports.jsonStringify = function(s) {
|
||||
// See http://www.json.org/
|
||||
return (s || "")
|
||||
.replace(/\\/g, '\\\\') // backslash
|
||||
.replace(/"/g, '\\"') // double quote character
|
||||
.replace(/\r/g, '\\r') // carriage return
|
||||
.replace(/\n/g, '\\n') // line feed
|
||||
.replace(/\x08/g, '\\b') // backspace
|
||||
.replace(/\x0c/g, '\\f') // formfeed
|
||||
.replace(/\t/g, '\\t') // tab
|
||||
.replace(/[\x00-\x1f\x80-\uFFFF]/g,function(s) {
|
||||
return '\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);
|
||||
}); // non-ASCII characters
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -726,82 +791,4 @@ exports.strEndsWith = function(str,ending,position) {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Transliterate string from eg. Cyrillic Russian to Latin
|
||||
*/
|
||||
var transliterationPairs = {
|
||||
"Ё":"YO",
|
||||
"Й":"I",
|
||||
"Ц":"TS",
|
||||
"У":"U",
|
||||
"К":"K",
|
||||
"Е":"E",
|
||||
"Н":"N",
|
||||
"Г":"G",
|
||||
"Ш":"SH",
|
||||
"Щ":"SCH",
|
||||
"З":"Z",
|
||||
"Х":"H",
|
||||
"Ъ":"'",
|
||||
"ё":"yo",
|
||||
"й":"i",
|
||||
"ц":"ts",
|
||||
"у":"u",
|
||||
"к":"k",
|
||||
"е":"e",
|
||||
"н":"n",
|
||||
"г":"g",
|
||||
"ш":"sh",
|
||||
"щ":"sch",
|
||||
"з":"z",
|
||||
"х":"h",
|
||||
"ъ":"'",
|
||||
"Ф":"F",
|
||||
"Ы":"I",
|
||||
"В":"V",
|
||||
"А":"a",
|
||||
"П":"P",
|
||||
"Р":"R",
|
||||
"О":"O",
|
||||
"Л":"L",
|
||||
"Д":"D",
|
||||
"Ж":"ZH",
|
||||
"Э":"E",
|
||||
"ф":"f",
|
||||
"ы":"i",
|
||||
"в":"v",
|
||||
"а":"a",
|
||||
"п":"p",
|
||||
"р":"r",
|
||||
"о":"o",
|
||||
"л":"l",
|
||||
"д":"d",
|
||||
"ж":"zh",
|
||||
"э":"e",
|
||||
"Я":"Ya",
|
||||
"Ч":"CH",
|
||||
"С":"S",
|
||||
"М":"M",
|
||||
"И":"I",
|
||||
"Т":"T",
|
||||
"Ь":"'",
|
||||
"Б":"B",
|
||||
"Ю":"YU",
|
||||
"я":"ya",
|
||||
"ч":"ch",
|
||||
"с":"s",
|
||||
"м":"m",
|
||||
"и":"i",
|
||||
"т":"t",
|
||||
"ь":"'",
|
||||
"б":"b",
|
||||
"ю":"yu"
|
||||
};
|
||||
|
||||
exports.transliterate = function(str) {
|
||||
return str.split("").map(function(char) {
|
||||
return transliterationPairs[char] || char;
|
||||
}).join("");
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
@@ -46,17 +46,23 @@ BrowseWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.nwsaveas) {
|
||||
domNode.setAttribute("nwsaveas",this.nwsaveas);
|
||||
}
|
||||
// Nw.js supports "webkitdirectory" to allow a directory to be selected
|
||||
// Nw.js supports "webkitdirectory" and "nwdirectory" to allow a directory to be selected
|
||||
if(this.webkitdirectory) {
|
||||
domNode.setAttribute("webkitdirectory",this.webkitdirectory);
|
||||
}
|
||||
if(this.nwdirectory) {
|
||||
domNode.setAttribute("nwdirectory",this.nwdirectory);
|
||||
}
|
||||
// Add a click event handler
|
||||
domNode.addEventListener("change",function (event) {
|
||||
if(self.message) {
|
||||
self.dispatchEvent({type: self.message, param: self.param, files: event.target.files});
|
||||
} else {
|
||||
self.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
self.wiki.readFiles(event.target.files,{
|
||||
callback: function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
},
|
||||
deserializer: self.deserializer
|
||||
});
|
||||
}
|
||||
return false;
|
||||
@@ -72,11 +78,13 @@ Compute the internal state of the widget
|
||||
*/
|
||||
BrowseWidget.prototype.execute = function() {
|
||||
this.browseMultiple = this.getAttribute("multiple");
|
||||
this.deserializer = this.getAttribute("deserializer");
|
||||
this.message = this.getAttribute("message");
|
||||
this.param = this.getAttribute("param");
|
||||
this.tooltip = this.getAttribute("tooltip");
|
||||
this.nwsaveas = this.getAttribute("nwsaveas");
|
||||
this.webkitdirectory = this.getAttribute("webkitdirectory");
|
||||
this.nwdirectory = this.getAttribute("nwdirectory");
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -104,7 +104,10 @@ DropZoneWidget.prototype.handleDragLeaveEvent = function(event) {
|
||||
};
|
||||
|
||||
DropZoneWidget.prototype.handleDropEvent = function(event) {
|
||||
var self = this;
|
||||
var self = this,
|
||||
readFileCallback = function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
};
|
||||
this.leaveDrag(event);
|
||||
// Check for being over a TEXTAREA or INPUT
|
||||
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) {
|
||||
@@ -121,15 +124,14 @@ DropZoneWidget.prototype.handleDropEvent = function(event) {
|
||||
// Import any files in the drop
|
||||
var numFiles = 0;
|
||||
if(dataTransfer.files) {
|
||||
numFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
numFiles = this.wiki.readFiles(dataTransfer.files,{
|
||||
callback: readFileCallback,
|
||||
deserializer: this.dropzoneDeserializer
|
||||
});
|
||||
}
|
||||
// Try to import the various data types we understand
|
||||
if(numFiles === 0) {
|
||||
$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle("Untitled"),function(fieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(fieldsArray)});
|
||||
});
|
||||
$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle("Untitled"),readFileCallback);
|
||||
}
|
||||
// Tell the browser that we handled the drop
|
||||
event.preventDefault();
|
||||
@@ -138,6 +140,10 @@ DropZoneWidget.prototype.handleDropEvent = function(event) {
|
||||
};
|
||||
|
||||
DropZoneWidget.prototype.handlePasteEvent = function(event) {
|
||||
var self = this,
|
||||
readFileCallback = function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
};
|
||||
// Let the browser handle it if we're in a textarea or input box
|
||||
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1) {
|
||||
var self = this,
|
||||
@@ -147,8 +153,9 @@ DropZoneWidget.prototype.handlePasteEvent = function(event) {
|
||||
var item = items[t];
|
||||
if(item.kind === "file") {
|
||||
// Import any files
|
||||
this.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
this.wiki.readFile(item.getAsFile(),{
|
||||
callback: readFileCallback,
|
||||
deserializer: this.dropzoneDeserializer
|
||||
});
|
||||
} else if(item.kind === "string") {
|
||||
// Create tiddlers from string items
|
||||
@@ -176,6 +183,7 @@ DropZoneWidget.prototype.handlePasteEvent = function(event) {
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
DropZoneWidget.prototype.execute = function() {
|
||||
this.dropzoneDeserializer = this.getAttribute("deserializer");
|
||||
// Make child widgets
|
||||
this.makeChildWidgets();
|
||||
};
|
||||
|
||||
@@ -109,28 +109,28 @@ FieldManglerWidget.prototype.handleAddFieldEvent = function(event) {
|
||||
};
|
||||
|
||||
FieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {
|
||||
var tiddler = this.wiki.getTiddler(this.mangleTitle);
|
||||
var tiddler = this.wiki.getTiddler(this.mangleTitle),
|
||||
modification = this.wiki.getModificationFields();
|
||||
if(tiddler && tiddler.fields.tags) {
|
||||
var p = tiddler.fields.tags.indexOf(event.param);
|
||||
if(p !== -1) {
|
||||
var modification = this.wiki.getModificationFields();
|
||||
modification.tags = (tiddler.fields.tags || []).slice(0);
|
||||
modification.tags.splice(p,1);
|
||||
if(modification.tags.length === 0) {
|
||||
modification.tags = undefined;
|
||||
}
|
||||
this.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));
|
||||
this.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
FieldManglerWidget.prototype.handleAddTagEvent = function(event) {
|
||||
var tiddler = this.wiki.getTiddler(this.mangleTitle);
|
||||
var tiddler = this.wiki.getTiddler(this.mangleTitle),
|
||||
modification = this.wiki.getModificationFields();
|
||||
if(tiddler && typeof event.param === "string") {
|
||||
var tag = event.param.trim();
|
||||
if(tag !== "") {
|
||||
var modification = this.wiki.getModificationFields();
|
||||
modification.tags = (tiddler.fields.tags || []).slice(0);
|
||||
$tw.utils.pushTop(modification.tags,tag);
|
||||
this.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));
|
||||
@@ -138,7 +138,7 @@ FieldManglerWidget.prototype.handleAddTagEvent = function(event) {
|
||||
} else if(typeof event.param === "string" && event.param.trim() !== "" && this.mangleTitle.trim() !== "") {
|
||||
var tag = [];
|
||||
tag.push(event.param.trim());
|
||||
this.wiki.addTiddler({title: this.mangleTitle, tags: tag});
|
||||
this.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -80,14 +80,26 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) {
|
||||
}
|
||||
domNode.setAttribute("class",classes.join(" "));
|
||||
// Set an href
|
||||
var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"),
|
||||
wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$",
|
||||
var wikilinkTransformFilter = this.getVariable("tv-filter-export-link"),
|
||||
wikiLinkText;
|
||||
if(wikilinkTransformFilter) {
|
||||
// Use the filter to construct the href
|
||||
wikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {
|
||||
iterator(self.wiki.getTiddler(self.to),self.to)
|
||||
})[0];
|
||||
} else {
|
||||
// Expand the tv-wikilink-template variable to construct the href
|
||||
var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"),
|
||||
wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$";
|
||||
wikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,"$uri_encoded$",encodeURIComponent(this.to));
|
||||
wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to)));
|
||||
wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to)));
|
||||
}
|
||||
// Override with the value of tv-get-export-link if defined
|
||||
wikiLinkText = this.getVariable("tv-get-export-link",{params: [{name: "to",value: this.to}],defaultValue: wikiLinkText});
|
||||
if(tag === "a") {
|
||||
domNode.setAttribute("href",wikiLinkText);
|
||||
}
|
||||
// Set the tabindex
|
||||
if(this.tabIndex) {
|
||||
domNode.setAttribute("tabindex",this.tabIndex);
|
||||
}
|
||||
@@ -135,7 +147,11 @@ LinkWidget.prototype.handleClickEvent = function(event) {
|
||||
navigateFromNode: this,
|
||||
navigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height
|
||||
},
|
||||
navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)
|
||||
navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),
|
||||
metaKey: event.metaKey,
|
||||
ctrlKey: event.ctrlKey,
|
||||
altKey: event.altKey,
|
||||
shiftKey: event.shiftKey
|
||||
});
|
||||
if(this.domNodes[0].hasAttribute("href")) {
|
||||
event.preventDefault();
|
||||
|
||||
@@ -48,6 +48,8 @@ LinkCatcherWidget.prototype.execute = function() {
|
||||
this.catchActions = this.getAttribute("actions");
|
||||
// Construct the child widgets
|
||||
this.makeChildWidgets();
|
||||
// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively
|
||||
this.executingActions = false;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -67,23 +69,35 @@ LinkCatcherWidget.prototype.refresh = function(changedTiddlers) {
|
||||
Handle a tm-navigate event
|
||||
*/
|
||||
LinkCatcherWidget.prototype.handleNavigateEvent = function(event) {
|
||||
if(this.catchTo) {
|
||||
this.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable("currentTiddler"));
|
||||
}
|
||||
if(this.catchMessage && this.parentWidget) {
|
||||
if(!this.executingActions) {
|
||||
// Execute the actions
|
||||
if(this.catchTo) {
|
||||
this.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable("currentTiddler"));
|
||||
}
|
||||
if(this.catchMessage && this.parentWidget) {
|
||||
this.parentWidget.dispatchEvent({
|
||||
type: this.catchMessage,
|
||||
param: event.navigateTo,
|
||||
navigateTo: event.navigateTo
|
||||
});
|
||||
}
|
||||
if(this.catchSet) {
|
||||
var tiddler = this.wiki.getTiddler(this.catchSet);
|
||||
this.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));
|
||||
}
|
||||
if(this.catchActions) {
|
||||
this.executingActions = true;
|
||||
this.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});
|
||||
this.executingActions = false;
|
||||
}
|
||||
} else {
|
||||
// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent
|
||||
this.parentWidget.dispatchEvent({
|
||||
type: this.catchMessage,
|
||||
type: "tm-navigate",
|
||||
param: event.navigateTo,
|
||||
navigateTo: event.navigateTo
|
||||
});
|
||||
}
|
||||
if(this.catchSet) {
|
||||
var tiddler = this.wiki.getTiddler(this.catchSet);
|
||||
this.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));
|
||||
}
|
||||
if(this.catchActions) {
|
||||
this.invokeActionString(this.catchActions,this);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@ NavigatorWidget.prototype.execute = function() {
|
||||
// Get our parameters
|
||||
this.storyTitle = this.getAttribute("story");
|
||||
this.historyTitle = this.getAttribute("history");
|
||||
this.setVariable("tv-story-list",this.storyTitle);
|
||||
this.setVariable("tv-history-list",this.historyTitle);
|
||||
// Construct the child widgets
|
||||
this.makeChildWidgets();
|
||||
};
|
||||
@@ -209,6 +211,10 @@ NavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {
|
||||
|
||||
// Place a tiddler in edit mode
|
||||
NavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {
|
||||
var editTiddler = $tw.hooks.invokeHook("th-editing-tiddler",event);
|
||||
if(!editTiddler) {
|
||||
return false;
|
||||
}
|
||||
var self = this;
|
||||
function isUnmodifiedShadow(title) {
|
||||
return self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);
|
||||
@@ -452,6 +458,13 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
|
||||
if(additionalFields && additionalFields.title) {
|
||||
title = additionalFields.title;
|
||||
}
|
||||
// Make a copy of the additional fields excluding any blank ones
|
||||
var filteredAdditionalFields = $tw.utils.extend({},additionalFields);
|
||||
Object.keys(filteredAdditionalFields).forEach(function(fieldName) {
|
||||
if(filteredAdditionalFields[fieldName] === "") {
|
||||
delete filteredAdditionalFields[fieldName];
|
||||
}
|
||||
});
|
||||
// Generate a title if we don't have one
|
||||
title = title || this.wiki.generateNewTitle($tw.language.getString("DefaultNewTiddlerTitle"));
|
||||
// Find any existing draft for this tiddler
|
||||
@@ -482,8 +495,9 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
|
||||
"draft.title": title
|
||||
},
|
||||
templateTiddler,
|
||||
existingTiddler,
|
||||
additionalFields,
|
||||
existingTiddler,
|
||||
filteredAdditionalFields,
|
||||
this.wiki.getCreationFields(),
|
||||
{
|
||||
title: draftTitle,
|
||||
@@ -497,7 +511,7 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
|
||||
storyList.splice(slot + 1,0,draftTitle);
|
||||
}
|
||||
if(storyList.indexOf(title) !== -1) {
|
||||
storyList.splice(storyList.indexOf(title),1);
|
||||
storyList.splice(storyList.indexOf(title),1);
|
||||
}
|
||||
this.saveStoryList(storyList);
|
||||
// Add a new record to the top of the history stack
|
||||
@@ -510,7 +524,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {
|
||||
// Get the tiddlers
|
||||
var tiddlers = [];
|
||||
try {
|
||||
tiddlers = JSON.parse(event.param);
|
||||
tiddlers = JSON.parse(event.param);
|
||||
} catch(e) {
|
||||
}
|
||||
// Get the current $:/Import tiddler
|
||||
@@ -526,6 +540,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {
|
||||
// Process each tiddler
|
||||
importData.tiddlers = importData.tiddlers || {};
|
||||
$tw.utils.each(tiddlers,function(tiddlerFields) {
|
||||
tiddlerFields.title = $tw.utils.trim(tiddlerFields.title);
|
||||
var title = tiddlerFields.title;
|
||||
if(title) {
|
||||
incomingTiddlers.push(title);
|
||||
@@ -563,7 +578,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {
|
||||
return false;
|
||||
};
|
||||
|
||||
//
|
||||
//
|
||||
NavigatorWidget.prototype.handlePerformImportEvent = function(event) {
|
||||
var self = this,
|
||||
importTiddler = this.wiki.getTiddler(event.param),
|
||||
|
||||
@@ -41,6 +41,9 @@ SetWidget.prototype.execute = function() {
|
||||
this.setName = this.getAttribute("name","currentTiddler");
|
||||
this.setFilter = this.getAttribute("filter");
|
||||
this.setSelect = this.getAttribute("select");
|
||||
this.setTiddler = this.getAttribute("tiddler");
|
||||
this.setField = this.getAttribute("field");
|
||||
this.setIndex = this.getAttribute("index");
|
||||
this.setValue = this.getAttribute("value");
|
||||
this.setEmptyValue = this.getAttribute("emptyValue");
|
||||
// Set context variable
|
||||
@@ -54,7 +57,18 @@ Get the value to be assigned
|
||||
*/
|
||||
SetWidget.prototype.getValue = function() {
|
||||
var value = this.setValue;
|
||||
if(this.setFilter) {
|
||||
if(this.setTiddler) {
|
||||
var tiddler = this.wiki.getTiddler(this.setTiddler);
|
||||
if(!tiddler) {
|
||||
value = this.setEmptyValue;
|
||||
} else if(this.setField) {
|
||||
value = tiddler.getFieldString(this.setField) || this.setEmptyValue;
|
||||
} else if(this.setIndex) {
|
||||
value = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);
|
||||
} else {
|
||||
value = tiddler.fields.text || this.setEmptyValue ;
|
||||
}
|
||||
} else if(this.setFilter) {
|
||||
var results = this.wiki.filterTiddlers(this.setFilter,this);
|
||||
if(!this.setValue) {
|
||||
var select;
|
||||
@@ -73,7 +87,7 @@ SetWidget.prototype.getValue = function() {
|
||||
} else if(!value && this.setEmptyValue) {
|
||||
value = this.setEmptyValue;
|
||||
}
|
||||
return value;
|
||||
return value || "";
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -81,7 +95,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
*/
|
||||
SetWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.name || changedAttributes.filter || changedAttributes.select ||changedAttributes.value || changedAttributes.emptyValue ||
|
||||
if(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||
|
||||
(this.setFilter && this.getValue() != this.variables[this.setName].value)) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
|
||||
@@ -51,15 +51,16 @@ ViewWidget.prototype.execute = function() {
|
||||
this.viewIndex = this.getAttribute("index");
|
||||
this.viewFormat = this.getAttribute("format","text");
|
||||
this.viewTemplate = this.getAttribute("template","");
|
||||
this.viewMode = this.getAttribute("mode","block");
|
||||
switch(this.viewFormat) {
|
||||
case "htmlwikified":
|
||||
this.text = this.getValueAsHtmlWikified();
|
||||
this.text = this.getValueAsHtmlWikified(this.viewMode);
|
||||
break;
|
||||
case "plainwikified":
|
||||
this.text = this.getValueAsPlainWikified();
|
||||
this.text = this.getValueAsPlainWikified(this.viewMode);
|
||||
break;
|
||||
case "htmlencodedplainwikified":
|
||||
this.text = this.getValueAsHtmlEncodedPlainWikified();
|
||||
this.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);
|
||||
break;
|
||||
case "htmlencoded":
|
||||
this.text = this.getValueAsHtmlEncoded();
|
||||
@@ -134,16 +135,25 @@ ViewWidget.prototype.getValueAsText = function() {
|
||||
return this.getValue({asString: true});
|
||||
};
|
||||
|
||||
ViewWidget.prototype.getValueAsHtmlWikified = function() {
|
||||
return this.wiki.renderText("text/html","text/vnd.tiddlywiki",this.getValueAsText(),{parentWidget: this});
|
||||
ViewWidget.prototype.getValueAsHtmlWikified = function(mode) {
|
||||
return this.wiki.renderText("text/html","text/vnd.tiddlywiki",this.getValueAsText(),{
|
||||
parseAsInline: mode !== "block",
|
||||
parentWidget: this
|
||||
});
|
||||
};
|
||||
|
||||
ViewWidget.prototype.getValueAsPlainWikified = function() {
|
||||
return this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{parentWidget: this});
|
||||
ViewWidget.prototype.getValueAsPlainWikified = function(mode) {
|
||||
return this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{
|
||||
parseAsInline: mode !== "block",
|
||||
parentWidget: this
|
||||
});
|
||||
};
|
||||
|
||||
ViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function() {
|
||||
return $tw.utils.htmlEncode(this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{parentWidget: this}));
|
||||
ViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {
|
||||
return $tw.utils.htmlEncode(this.wiki.renderText("text/plain","text/vnd.tiddlywiki",this.getValueAsText(),{
|
||||
parseAsInline: mode !== "block",
|
||||
parentWidget: this
|
||||
}));
|
||||
};
|
||||
|
||||
ViewWidget.prototype.getValueAsHtmlEncoded = function() {
|
||||
|
||||
@@ -1125,16 +1125,24 @@ exports.checkTiddlerText = function(title,targetText,options) {
|
||||
/*
|
||||
Read an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read
|
||||
*/
|
||||
exports.readFiles = function(files,callback) {
|
||||
exports.readFiles = function(files,options) {
|
||||
var callback;
|
||||
if(typeof options === "function") {
|
||||
callback = options;
|
||||
options = {};
|
||||
} else {
|
||||
callback = options.callback;
|
||||
}
|
||||
var result = [],
|
||||
outstanding = files.length;
|
||||
for(var f=0; f<files.length; f++) {
|
||||
this.readFile(files[f],function(tiddlerFieldsArray) {
|
||||
outstanding = files.length,
|
||||
readFileCallback = function(tiddlerFieldsArray) {
|
||||
result.push.apply(result,tiddlerFieldsArray);
|
||||
if(--outstanding === 0) {
|
||||
callback(result);
|
||||
}
|
||||
});
|
||||
};
|
||||
for(var f=0; f<files.length; f++) {
|
||||
this.readFile(files[f],Object.assign({},options,{callback: readFileCallback}));
|
||||
}
|
||||
return files.length;
|
||||
};
|
||||
@@ -1142,7 +1150,14 @@ exports.readFiles = function(files,callback) {
|
||||
/*
|
||||
Read a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects
|
||||
*/
|
||||
exports.readFile = function(file,callback) {
|
||||
exports.readFile = function(file,options) {
|
||||
var callback;
|
||||
if(typeof options === "function") {
|
||||
callback = options;
|
||||
options = {};
|
||||
} else {
|
||||
callback = options.callback;
|
||||
}
|
||||
// Get the type, falling back to the filename extension
|
||||
var self = this,
|
||||
type = file.type;
|
||||
@@ -1162,6 +1177,22 @@ exports.readFile = function(file,callback) {
|
||||
if($tw.log.IMPORT) {
|
||||
console.log("Importing file '" + file.name + "', type: '" + type + "', isBinary: " + isBinary);
|
||||
}
|
||||
// Give the hook a chance to process the drag
|
||||
if($tw.hooks.invokeHook("th-importing-file",{
|
||||
file: file,
|
||||
type: type,
|
||||
isBinary: isBinary,
|
||||
callback: callback
|
||||
}) !== true) {
|
||||
this.readFileContent(file,type,isBinary,options.deserializer,callback);
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Lower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects
|
||||
*/
|
||||
exports.readFileContent = function(file,type,isBinary,deserializer,callback) {
|
||||
var self = this;
|
||||
// Create the FileReader
|
||||
var reader = new FileReader();
|
||||
// Onload
|
||||
@@ -1183,7 +1214,7 @@ exports.readFile = function(file,callback) {
|
||||
});
|
||||
} else {
|
||||
// Otherwise, just try to deserialise any tiddlers in the file
|
||||
callback(self.deserializeTiddlers(type,text,tiddlerFields));
|
||||
callback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));
|
||||
}
|
||||
};
|
||||
// Kick off the read
|
||||
|
||||
@@ -2,4 +2,4 @@ title: $:/core/templates/MOTW.html
|
||||
|
||||
\rules only filteredtranscludeinline transcludeinline entity
|
||||
<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->
|
||||
<!-- saved from url=(0021)http://tiddlywiki.com -->
|
||||
<!-- saved from url=(0021)https://tiddlywiki.com -->
|
||||
8
core/templates/canonical-uri-external-raw.tid
Normal file
8
core/templates/canonical-uri-external-raw.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/templates/canonical-uri-external-raw
|
||||
|
||||
<!--
|
||||
|
||||
This template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory
|
||||
|
||||
-->
|
||||
<$view field="title" format="doubleurlencoded"/>
|
||||
@@ -1,8 +1,7 @@
|
||||
title: $:/core/templates/static.content
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<!-- For Google, and people without JavaScript-->
|
||||
This [[TiddlyWiki|http://tiddlywiki.com]] contains the following tiddlers:
|
||||
This [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:
|
||||
|
||||
<ul>
|
||||
<$list filter=<<saveTiddlerFilter>>>
|
||||
|
||||
@@ -78,14 +78,9 @@ $:/config/Plugins/Disabled/$(currentTiddler)$
|
||||
</$reveal>
|
||||
</div>
|
||||
</$list>
|
||||
<$reveal type="nomatch" text="" state="!!list">
|
||||
<$set name="tabsList" filter="[<currentTiddler>list[]] contents">
|
||||
<$macrocall $name="tabs" state=<<tabs-state-macro>> tabsList=<<tabsList>> default="readme" template="$:/core/ui/PluginInfo"/>
|
||||
<$macrocall $name="tabs" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template="$:/core/ui/PluginInfo"/>
|
||||
</$set>
|
||||
</$reveal>
|
||||
<$reveal type="match" text="" state="!!list">
|
||||
<<lingo NoInformation/Hint>>
|
||||
</$reveal>
|
||||
</div>
|
||||
</div>
|
||||
</$reveal>
|
||||
|
||||
@@ -17,7 +17,9 @@ tc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerCl
|
||||
<$keyboard key="((cancel-edit-tiddler))" message="tm-cancel-tiddler">
|
||||
<$keyboard key="((save-tiddler))" actions=<<actions>>>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]" variable="listItem">
|
||||
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
|
||||
<$transclude tiddler=<<listItem>>/>
|
||||
</$set>
|
||||
</$list>
|
||||
</$keyboard>
|
||||
</$keyboard>
|
||||
|
||||
@@ -16,5 +16,4 @@ description: {{$:/language/Buttons/Save/Hint}}
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span>
|
||||
</$list>
|
||||
</$button>
|
||||
</$fieldmangler>
|
||||
</$button></$fieldmangler>
|
||||
|
||||
5
core/ui/MoreSideBar/Explorer.tid
Normal file
5
core/ui/MoreSideBar/Explorer.tid
Normal file
@@ -0,0 +1,5 @@
|
||||
title: $:/core/ui/MoreSideBar/Explorer
|
||||
tags: $:/tags/MoreSideBar
|
||||
caption: {{$:/language/SideBar/Explorer/Caption}}
|
||||
|
||||
<<tree "$:/">>
|
||||
@@ -6,7 +6,9 @@ $:/config/PageControlButtons/Visibility/$(listItem)$
|
||||
<div class="tc-page-controls">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
|
||||
<$reveal type="nomatch" state=<<config-title>> text="hide">
|
||||
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
|
||||
<$transclude tiddler=<<listItem>> mode="inline"/>
|
||||
</$set>
|
||||
</$reveal>
|
||||
</$list>
|
||||
</div>
|
||||
|
||||
@@ -27,8 +27,12 @@ $:/config/PageControlButtons/Visibility/$(listItem)$
|
||||
|
||||
<$reveal type="match" state=<<config-title>> text="hide">
|
||||
|
||||
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
|
||||
|
||||
<$transclude tiddler=<<listItem>> mode="inline"/>
|
||||
|
||||
</$set>
|
||||
|
||||
</$reveal>
|
||||
|
||||
</$list>
|
||||
|
||||
@@ -17,7 +17,7 @@ $:/config/PageControlButtons/Visibility/$(listItem)$
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
|
||||
|
||||
<div style="position:relative;">
|
||||
<div style="position:relative;" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>
|
||||
|
||||
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>>/> <i class="tc-muted"><$transclude tiddler=<<listItem>> field="description"/></i>
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$
|
||||
<div class="tc-tiddler-title">
|
||||
<div class="tc-titlebar">
|
||||
<span class="tc-tiddler-controls">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$transclude tiddler=<<listItem>>/></$reveal></$list>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>
|
||||
</span>
|
||||
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
|
||||
<$link>
|
||||
|
||||
@@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}
|
||||
description: {{$:/language/Buttons/Clone/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-new-tiddler" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/clone-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Clone/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/Clone/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}
|
||||
description: {{$:/language/Buttons/CloseOthers/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-close-other-tiddlers" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/close-others-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/CloseOthers/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -3,11 +3,14 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}
|
||||
description: {{$:/language/Buttons/Close/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/close-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Close/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text={{$:/language/Buttons/Close/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}
|
||||
description: {{$:/language/Buttons/Edit/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-edit-tiddler" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/edit-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Edit/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/Edit/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -3,12 +3,16 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}
|
||||
description: {{$:/language/Buttons/FoldOthers/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$action-sendmessage $message="tm-fold-other-tiddlers" $param=<<currentTiddler>> foldedStatePrefix="$:/state/folded/"/>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]" variable="listItem">
|
||||
{{$:/core/images/fold-others-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/FoldOthers/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -3,24 +3,32 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}
|
||||
description: {{$:/language/Buttons/Fold/Hint}}
|
||||
|
||||
<$reveal type="nomatch" state=<<folded-state>> text="hide" default="show"><$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
\whitespace trim
|
||||
<$reveal type="nomatch" state=<<folded-state>> text="hide" default="show">
|
||||
<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$action-sendmessage $message="tm-fold-tiddler" $param=<<currentTiddler>> foldedState=<<folded-state>>/>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]" variable="listItem">
|
||||
{{$:/core/images/fold-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/Fold/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button></$reveal><$reveal type="match" state=<<folded-state>> text="hide" default="show"><$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
</$button>
|
||||
</$reveal>
|
||||
<$reveal type="match" state=<<folded-state>> text="hide" default="show">
|
||||
<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$action-sendmessage $message="tm-fold-tiddler" $param=<<currentTiddler>> foldedState=<<folded-state>>/>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]" variable="listItem">
|
||||
{{$:/core/images/unfold-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/Unfold/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button></$reveal>
|
||||
</$button>
|
||||
</$reveal>
|
||||
@@ -3,12 +3,15 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}
|
||||
description: {{$:/language/Buttons/Info/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\define button-content()
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/info-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Info/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text={{$:/language/Buttons/Info/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
\end
|
||||
<$reveal state="$:/config/TiddlerInfo/Mode" type="match" text="popup">
|
||||
|
||||
@@ -3,6 +3,7 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}
|
||||
description: {{$:/language/Buttons/More/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\define config-title()
|
||||
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
|
||||
\end
|
||||
@@ -11,9 +12,13 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$
|
||||
{{$:/core/images/down-arrow}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/More/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/More/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button><$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="below" animate="yes">
|
||||
</$button>
|
||||
<$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="below" animate="yes">
|
||||
|
||||
<div class="tc-drop-down">
|
||||
|
||||
@@ -27,8 +32,12 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$
|
||||
|
||||
<$reveal type="match" state=<<config-title>> text="hide">
|
||||
|
||||
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
|
||||
|
||||
<$transclude tiddler=<<listItem>> mode="inline"/>
|
||||
|
||||
</$set>
|
||||
|
||||
</$reveal>
|
||||
|
||||
</$list>
|
||||
|
||||
@@ -3,6 +3,7 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}
|
||||
description: {{$:/language/Buttons/NewHere/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\define newHereButtonTags()
|
||||
[[$(currentTiddler)$]]
|
||||
\end
|
||||
@@ -13,7 +14,9 @@ description: {{$:/language/Buttons/NewHere/Hint}}
|
||||
{{$:/core/images/new-here-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewHere/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text={{$:/language/Buttons/NewHere/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
\end
|
||||
|
||||
@@ -3,6 +3,7 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}
|
||||
description: {{$:/language/Buttons/NewJournalHere/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\define journalButtonTags()
|
||||
[[$(currentTiddlerTag)$]] $(journalTags)$
|
||||
\end
|
||||
@@ -13,7 +14,9 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}}
|
||||
{{$:/core/images/new-journal-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewJournalHere/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
\end
|
||||
@@ -21,4 +24,6 @@ description: {{$:/language/Buttons/NewJournalHere/Hint}}
|
||||
<$set name="journalTags" value={{$:/config/NewJournal/Tags}}>
|
||||
<$set name="currentTiddlerTag" value=<<currentTiddler>>>
|
||||
<<journalButton>>
|
||||
</$set></$set></$set>
|
||||
</$set>
|
||||
</$set>
|
||||
</$set>
|
||||
@@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}
|
||||
description: {{$:/language/Buttons/OpenWindow/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-open-window" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/open-window}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/OpenWindow/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar
|
||||
caption: {{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}
|
||||
description: {{$:/language/Buttons/Permalink/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-permalink" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/permalink-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Permalink/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/Permalink/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -3,11 +3,15 @@ tags: $:/tags/ViewToolbar $:/tags/PageControls
|
||||
caption: {{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}
|
||||
description: {{$:/language/Buttons/Permaview/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button message="tm-permaview" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/permaview-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Permaview/Caption}}/></span>
|
||||
<span class="tc-btn-text">
|
||||
<$text text=" "/>
|
||||
<$text text={{$:/language/Buttons/Permaview/Caption}}/>
|
||||
</span>
|
||||
</$list>
|
||||
</$button>
|
||||
@@ -1,6 +1,6 @@
|
||||
title: $:/config/OfficialPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: http://tiddlywiki.com/library/v5.1.14/index.html
|
||||
url: https://tiddlywiki.com/library/v5.1.15/index.html
|
||||
caption: {{$:/language/OfficialPluginLibrary}}
|
||||
|
||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||
|
||||
@@ -6,17 +6,14 @@ $baseFilename$$(extension)$
|
||||
\end
|
||||
|
||||
\define exportButton(exportFilter:"[!is[system]sort[title]]",lingoBase,baseFilename:"tiddlers")
|
||||
<span class="tc-popup-keep">
|
||||
<$button popup=<<qualify "$:/state/popup/export">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
|
||||
<span class="tc-popup-keep"><$button popup=<<qualify "$:/state/popup/export">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
|
||||
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
|
||||
{{$:/core/images/export-button}}
|
||||
</$list>
|
||||
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
|
||||
<span class="tc-btn-text"><$text text={{$lingoBase$Caption}}/></span>
|
||||
</$list>
|
||||
</$button>
|
||||
</span>
|
||||
<$reveal state=<<qualify "$:/state/popup/export">> type="popup" position="below" animate="yes">
|
||||
</$button></span><$reveal state=<<qualify "$:/state/popup/export">> type="popup" position="below" animate="yes">
|
||||
<div class="tc-drop-down">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Exporter]]">
|
||||
<$set name="extension" value={{!!extension}}>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
title: $:/core/macros/image-picker
|
||||
created: 20170715180840889
|
||||
modified: 20170715180914005
|
||||
tags: $:/tags/Macro
|
||||
title: $:/core/macros/image-picker
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define image-picker-thumbnail(actions)
|
||||
<$button tag="a" tooltip="""$(imageTitle)$""">
|
||||
@@ -14,7 +17,7 @@ $actions$
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]")
|
||||
\define image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]",subfilter:"")
|
||||
<div class="tc-image-chooser">
|
||||
<$vars state-system=<<qualify "$:/state/image-picker/system">>>
|
||||
<$checkbox tiddler=<<state-system>> field="text" checked="show" unchecked="hide" default="hide">
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
title: $:/core/macros/tabs
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define tabs(tabsList,default,state:"$:/state/tab",class,template)
|
||||
\define tabs(tabsList,default,state:"$:/state/tab",class,template,buttonTemplate)
|
||||
<div class="tc-tab-set $class$">
|
||||
<div class="tc-tab-buttons $class$">
|
||||
<$list filter="$tabsList$" variable="currentTab"><$set name="save-currentTiddler" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify "$state$">> setTo=<<currentTab>> default="$default$" selectedClass="tc-tab-selected" tooltip={{!!tooltip}}>
|
||||
<$tiddler tiddler=<<save-currentTiddler>>>
|
||||
<$set name="tv-wikilinks" value="no">
|
||||
<$transclude tiddler="$buttonTemplate$" mode="inline">
|
||||
<$transclude tiddler=<<currentTab>> field="caption">
|
||||
<$macrocall $name="currentTab" $type="text/plain" $output="text/plain"/>
|
||||
</$transclude>
|
||||
</$transclude>
|
||||
</$set></$tiddler></$button></$tiddler></$set></$list>
|
||||
</div>
|
||||
<div class="tc-tab-divider $class$"/>
|
||||
|
||||
@@ -2,7 +2,6 @@ created: 20141212105914482
|
||||
modified: 20141212110330815
|
||||
tags: $:/tags/Macro
|
||||
title: $:/core/macros/timeline
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define timeline-title()
|
||||
<!-- Override this macro with a global macro
|
||||
|
||||
53
core/wiki/macros/tree.tid
Normal file
53
core/wiki/macros/tree.tid
Normal file
@@ -0,0 +1,53 @@
|
||||
title: $:/core/macros/tree
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define leaf-node(prefix)
|
||||
<li>
|
||||
<$list filter="""[[$prefix$$(chunk)$]is[shadow]] [[$prefix$$(chunk)$]is[tiddler]] +[removeprefix[$prefix$]] +[limit[1]]"""
|
||||
emptyMessage="""<$text text="$prefix$$(chunk)$"/>""">
|
||||
<span>{{$:/core/images/file}}</span> <$link to="""$prefix$$(chunk)$""">
|
||||
<$view field="title"/>
|
||||
</$link>
|
||||
</$list>
|
||||
</li>
|
||||
\end
|
||||
|
||||
\define branch-node(prefix)
|
||||
<$reveal type="nomatch" text="" default="""$(chunk)$""">
|
||||
<li>
|
||||
<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]""">
|
||||
<$reveal type="nomatch" state="""$:/state/tree/$prefix$$(chunk)$""" text="show">
|
||||
<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="show" class="tc-btn-invisible">{{$:/core/images/folder}} <$text text="""$(chunk)$"""/></$button>
|
||||
</$reveal>
|
||||
<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show">
|
||||
<$button set="""$:/state/tree/$prefix$$(chunk)$""" setTo="hide" class="tc-btn-invisible">{{$:/core/images/folder}} <$text text="""$(chunk)$"""/></$button>
|
||||
</$reveal>
|
||||
</$list>
|
||||
<$list filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]"""><span>(<$count filter="""[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]"""/>)</span>
|
||||
<$reveal type="match" state="""$:/state/tree/$prefix$$(chunk)$""" text="show">
|
||||
<$macrocall $name="tree-node" prefix="""$prefix$$(chunk)$"""/>
|
||||
</$reveal>
|
||||
</$list>
|
||||
</li>
|
||||
</$reveal>
|
||||
\end
|
||||
|
||||
\define tree-node(prefix)
|
||||
<ol>
|
||||
<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[!suffix[/]]" variable="chunk">
|
||||
<<leaf-node """$prefix$""">>
|
||||
</$list>
|
||||
<$list filter="[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[suffix[/]]" variable="chunk">
|
||||
<<branch-node """$prefix$""">>
|
||||
</$list>
|
||||
</ol>
|
||||
\end
|
||||
|
||||
\define tree(prefix)
|
||||
<div class="tc-tree">
|
||||
<span><$text text="""$prefix$"""/></span>
|
||||
<div>
|
||||
<$macrocall $name="tree-node" prefix="""$prefix$"""/>
|
||||
</div>
|
||||
</div>
|
||||
\end
|
||||
@@ -1,3 +1,3 @@
|
||||
title: $:/tags/MoreSideBar
|
||||
list: [[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Plugins]]
|
||||
list: [[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
title: $:/core/wiki/title
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}
|
||||
3
editions/aws/tiddlers/HelloThere.tid
Normal file
3
editions/aws/tiddlers/HelloThere.tid
Normal file
@@ -0,0 +1,3 @@
|
||||
title: HelloThere
|
||||
|
||||
This wiki provides a starting point for working with the AWS plugin for TiddlyWiki under Node.js.
|
||||
18
editions/aws/tiddlywiki.info
Normal file
18
editions/aws/tiddlywiki.info
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"description": "Amazon Web Services edition",
|
||||
"plugins": [
|
||||
"tiddlywiki/async",
|
||||
"tiddlywiki/jszip",
|
||||
"tiddlywiki/aws"
|
||||
],
|
||||
"themes": [
|
||||
"tiddlywiki/vanilla",
|
||||
"tiddlywiki/snowwhite"
|
||||
],
|
||||
"build": {
|
||||
"index": [
|
||||
"--rendertiddler","$:/core/save/all","index.html","text/plain"],
|
||||
"lambda": [
|
||||
"--rendertiddler","$:/plugins/tiddlywiki/aws/lambdas/main","index.js","text/plain"]
|
||||
}
|
||||
}
|
||||
@@ -55,8 +55,8 @@ TiddlyWiki markup is a dedicated markup syntax to <<tag Formatting "format your
|
||||
|[[Pretty Link|Tiddler Name]]|{{{[[Pretty Link|Tiddler Name]]}}}|
|
||||
|>| [[External Links|External Link]] |
|
||||
|A valid URL is automatically rendered as an external link.|>|
|
||||
|http://www.tiddlywiki.com|{{{http://www.tiddlywiki.com}}}|
|
||||
|[[Pretty External Link|http://www.tiddlywiki.com]]|{{{[[Pretty External Link|http://www.tiddlywiki.com]]}}}|
|
||||
|https://www.tiddlywiki.com|{{{https://www.tiddlywiki.com}}}|
|
||||
|[[Pretty External Link|https://www.tiddlywiki.com]]|{{{[[Pretty External Link|https://www.tiddlywiki.com]]}}}|
|
||||
|>| ![[Filesystem Links|Links]] |
|
||||
|You can, of course, use file system links both as plain or pretty links.|>|
|
||||
|''Windows Network Path''|{{{[[file://///server/share]]}}}|
|
||||
@@ -65,11 +65,11 @@ TiddlyWiki markup is a dedicated markup syntax to <<tag Formatting "format your
|
||||
|''Relative Path (Subfolder)''|{{{[[folder/file]]}}}|
|
||||
|>| ![[Images]] |
|
||||
|In general, image files are external to a TiddlyWiki.|>|
|
||||
|[img[http://www.tiddlywiki.com/favicon.ico]]|{{{[img[path/image.jpg]]}}}|
|
||||
| aligned right [>img[http://www.tiddlywiki.com/favicon.ico]]|{{{[>img[path/image.jpg]]}}}|
|
||||
|[<img[http://www.tiddlywiki.com/favicon.ico]] aligned left|{{{[<img[path/image.jpg]]}}}|
|
||||
|w/ internal link [>img[http://www.tiddlywiki.com/favicon.ico][TiddlyWiki]]|{{{[img[path/image.jpg][TiddlerName]]}}}|
|
||||
|w/ external link [>img[http://www.tiddlywiki.com/favicon.ico][http://www.tiddlywiki.com]]|{{{[img[path/image.jpg][TiddlyWiki|http://www.tiddlywiki.com]]}}}|
|
||||
|[img[https://www.tiddlywiki.com/favicon.ico]]|{{{[img[path/image.jpg]]}}}|
|
||||
| aligned right [>img[https://www.tiddlywiki.com/favicon.ico]]|{{{[>img[path/image.jpg]]}}}|
|
||||
|[<img[https://www.tiddlywiki.com/favicon.ico]] aligned left|{{{[<img[path/image.jpg]]}}}|
|
||||
|w/ internal link [>img[https://www.tiddlywiki.com/favicon.ico][TiddlyWiki]]|{{{[img[path/image.jpg][TiddlerName]]}}}|
|
||||
|w/ external link [>img[https://www.tiddlywiki.com/favicon.ico][https://www.tiddlywiki.com]]|{{{[img[path/image.jpg][TiddlyWiki|https://www.tiddlywiki.com]]}}}|
|
||||
|>| ![[Gradients|gradient]] |
|
||||
|<<gradient horiz #faa #afa #aaf>> __vert__ical or __horiz__ontal<br> see [[gradient macro|http://tiddlywiki.org/#%5B%5Bgradient%20(macro)%5D%5D]]>>|{{{<<gradient horiz #faa #afa #aaf>>wiki text>>}}}|
|
||||
|>| ![[Tables]] |
|
||||
|
||||
@@ -9,4 +9,4 @@ Einige interessante Projekte:
|
||||
|
||||
<<list-links filter:"[tag[Community]]">>
|
||||
|
||||
tiddlywiki.com: http://tiddlywiki.com/#Community
|
||||
tiddlywiki.com: https://tiddlywiki.com/#Community
|
||||
@@ -30,7 +30,7 @@ Anders, als bei herkömmlichen Online-Diensten, lässt Ihnen ~TiddlyWiki die Fre
|
||||
<a href="https://github.com/Jermolene/TiddlyWiki5" class="tc-btn-big-green" style="background-color:#444;" target="_blank">
|
||||
{{$:/core/images/github}} ~TiddlyWiki on ~GitHub
|
||||
</a>
|
||||
<a href="http://tiddlywiki.com" class="tc-btn-big-green" style="background-color:#green;" target="_blank">
|
||||
<a href="https://tiddlywiki.com" class="tc-btn-big-green" style="background-color:#green;" target="_blank">
|
||||
{{Motovun Jack.svg}} ~TiddlyWiki Homepage
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -10,4 +10,4 @@ Hier werden die globalen Makros aufgelistet, die in diesem Wiki beschrieben werd
|
||||
|
||||
<<list-links [tag[Makros]]>>
|
||||
|
||||
Weitere Makros siehe: http://tiddlywiki.com/#Macros
|
||||
Weitere Makros siehe: https://tiddlywiki.com/#Macros
|
||||
@@ -3,4 +3,4 @@ modified: 20150518080417093
|
||||
title: Releases
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Siehe: http://tiddlywiki.com/prerelease/#Releases
|
||||
Siehe: https://tiddlywiki.com/prerelease/#Releases
|
||||
@@ -6,4 +6,4 @@ tags: InhaltsVerzeichnis
|
||||
title: Widgets
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Es gibt momentan ca. 30 Widgets. Siehe: http://tiddlywiki.com/#Widgets
|
||||
Es gibt momentan ca. 30 Widgets. Siehe: https://tiddlywiki.com/#Widgets
|
||||
@@ -5,4 +5,4 @@ modifier: pmario
|
||||
title: WikiText mehr Beispiele
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Siehe: http://tiddlywiki.com
|
||||
Siehe: https://tiddlywiki.com
|
||||
@@ -8,5 +8,5 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
Die "~TiddlyWiki Community" hat bereits begonnen, Plugins zu erstellen, mit denen ganze Projekte verwaltet werden können.
|
||||
|
||||
* Briefcase: http://tiddlywiki.com/#%22GSD5%22%20by%20Roma%20Hicks
|
||||
* Briefcase: https://tiddlywiki.com/#%22GSD5%22%20by%20Roma%20Hicks
|
||||
* Briefcase in Aktion: http://gsd5.tiddlyspot.com/
|
||||
@@ -18,4 +18,4 @@ type: text/vnd.tiddlywiki
|
||||
* Da ~TiddlyWiki eine einzelne Datei ist, ist es sehr einfach sie mit anderen zu teilen. zB: Per mail verschicken --- fertig.
|
||||
* Erstellen einer lokalen Wissensdatenbank mit mehreren vernetzten ~TiddlyWiki Dateien.
|
||||
|
||||
Weitere interessante Anwendungsmöglichkeiten finden Sie unter [[Community]] und auf http://tiddlywiki.com
|
||||
Weitere interessante Anwendungsmöglichkeiten finden Sie unter [[Community]] und auf https://tiddlywiki.com
|
||||
@@ -1,5 +1,5 @@
|
||||
created: 20150513150003950
|
||||
source: http://tiddlywiki.com/poster
|
||||
source: https://tiddlywiki.com/poster
|
||||
tags: picture
|
||||
title: Tiddler Poster.png
|
||||
type: image/png
|
||||
|
||||
@@ -6,6 +6,6 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
Es gibt mehrere Ressourcen für Entwickler, um mehr über das TiddlyWiki Projekt zu erfahren, zu diskutieren und vor allem mitzuhelfen.
|
||||
|
||||
* [[tiddlywiki.com/dev|http://tiddlywiki.com/dev]] Offizielle Entwickler Doku.
|
||||
* [[tiddlywiki.com/dev|https://tiddlywiki.com/dev]] Offizielle Entwickler Doku.
|
||||
* [[TiddlyWikiDev group|http://groups.google.com/group/TiddlyWikiDev]] Google Diskussionsforum für Entwickler.
|
||||
* https://github.com/Jermolene/TiddlyWiki5 .. Github Repository.
|
||||
|
||||
@@ -14,7 +14,7 @@ OpenSource-Projekte, wie ~TiddlyWiki wachsen und gedeihen ''nur'' durch das Enga
|
||||
|
||||
* Zwitschern sie über ~TiddlyWiki :) [[I love TiddlyWiki because...|https://twitter.com/intent/tweet?text=I+love+TiddlyWiki+because...&source=tiddlywiki5]]
|
||||
* Klicken sie den [[TiddlyWiki5 Star Button auf GitHub|https://github.com/Jermolene/TiddlyWiki5]]
|
||||
* [[Veröffentlichen Sie das TiddlyWiki Poster|http://tiddlywiki.com/poster]]
|
||||
* [[Veröffentlichen Sie das TiddlyWiki Poster|https://tiddlywiki.com/poster]]
|
||||
|
||||
[img width=232 [Tiddler Poster.png]]
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user