mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-19 16:24:51 +00:00
Merge branch 'master' into geospatial-plugin
This commit is contained in:
commit
4016e3d0ae
@ -5,7 +5,7 @@
|
|||||||
# Default to the current version number for building the plugin library
|
# Default to the current version number for building the plugin library
|
||||||
|
|
||||||
if [ -z "$TW5_BUILD_VERSION" ]; then
|
if [ -z "$TW5_BUILD_VERSION" ]; then
|
||||||
TW5_BUILD_VERSION=v5.2.4
|
TW5_BUILD_VERSION=v5.2.5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
||||||
|
@ -90,8 +90,8 @@ Plugins/Languages/Caption: Languages
|
|||||||
Plugins/Languages/Hint: Language pack plugins
|
Plugins/Languages/Hint: Language pack plugins
|
||||||
Plugins/NoInfoFound/Hint: No ''"<$text text=<<currentTab>>/>"'' found
|
Plugins/NoInfoFound/Hint: No ''"<$text text=<<currentTab>>/>"'' found
|
||||||
Plugins/NotInstalled/Hint: This plugin is not currently installed
|
Plugins/NotInstalled/Hint: This plugin is not currently installed
|
||||||
Plugins/OpenPluginLibrary: open plugin library
|
Plugins/OpenPluginLibrary: Open plugin library
|
||||||
Plugins/ClosePluginLibrary: close plugin library
|
Plugins/ClosePluginLibrary: Close plugin library
|
||||||
Plugins/PluginWillRequireReload: (requires reload)
|
Plugins/PluginWillRequireReload: (requires reload)
|
||||||
Plugins/Plugins/Caption: Plugins
|
Plugins/Plugins/Caption: Plugins
|
||||||
Plugins/Plugins/Hint: Plugins
|
Plugins/Plugins/Hint: Plugins
|
||||||
|
@ -17,9 +17,23 @@ exports["jsonget"] = function(source,operator,options) {
|
|||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
var data = $tw.utils.parseJSONSafe(title,title);
|
var data = $tw.utils.parseJSONSafe(title,title);
|
||||||
if(data) {
|
if(data) {
|
||||||
var item = getDataItemValueAsString(data,operator.operands);
|
var items = getDataItemValueAsStrings(data,operator.operands);
|
||||||
|
if(items !== undefined) {
|
||||||
|
results.push.apply(results,items);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
exports["jsonextract"] = function(source,operator,options) {
|
||||||
|
var results = [];
|
||||||
|
source(function(tiddler,title) {
|
||||||
|
var data = $tw.utils.parseJSONSafe(title,title);
|
||||||
|
if(data) {
|
||||||
|
var item = getDataItem(data,operator.operands);
|
||||||
if(item !== undefined) {
|
if(item !== undefined) {
|
||||||
results.push(item);
|
results.push(JSON.stringify(item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -31,9 +45,9 @@ exports["jsonindexes"] = function(source,operator,options) {
|
|||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
var data = $tw.utils.parseJSONSafe(title,title);
|
var data = $tw.utils.parseJSONSafe(title,title);
|
||||||
if(data) {
|
if(data) {
|
||||||
var item = getDataItemKeysAsStrings(data,operator.operands);
|
var items = getDataItemKeysAsStrings(data,operator.operands);
|
||||||
if(item !== undefined) {
|
if(items !== undefined) {
|
||||||
results.push.apply(results,item);
|
results.push.apply(results,items);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -57,11 +71,11 @@ exports["jsontype"] = function(source,operator,options) {
|
|||||||
/*
|
/*
|
||||||
Given a JSON data structure and an array of index strings, return an array of the string representation of the values at the end of the index chain, or "undefined" if any of the index strings are invalid
|
Given a JSON data structure and an array of index strings, return an array of the string representation of the values at the end of the index chain, or "undefined" if any of the index strings are invalid
|
||||||
*/
|
*/
|
||||||
function getDataItemValueAsString(data,indexes) {
|
function getDataItemValueAsStrings(data,indexes) {
|
||||||
// Get the item
|
// Get the item
|
||||||
var item = getDataItem(data,indexes);
|
var item = getDataItem(data,indexes);
|
||||||
// Return the item as a string
|
// Return the item as a string list
|
||||||
return convertDataItemValueToString(item);
|
return convertDataItemValueToStrings(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -77,15 +91,34 @@ function getDataItemKeysAsStrings(data,indexes) {
|
|||||||
/*
|
/*
|
||||||
Return an array of the string representation of the values of a data item, or "undefined" if the item is undefined
|
Return an array of the string representation of the values of a data item, or "undefined" if the item is undefined
|
||||||
*/
|
*/
|
||||||
function convertDataItemValueToString(item) {
|
function convertDataItemValueToStrings(item) {
|
||||||
// Return the item as a string
|
// Return the item as a string
|
||||||
if(item === undefined) {
|
if(item === undefined) {
|
||||||
return item;
|
return undefined;
|
||||||
|
} else if(item === null) {
|
||||||
|
return ["null"]
|
||||||
|
} else if(typeof item === "object") {
|
||||||
|
var results = [],i,t;
|
||||||
|
if($tw.utils.isArray(item)) {
|
||||||
|
// Return all the items in arrays recursively
|
||||||
|
for(i=0; i<item.length; i++) {
|
||||||
|
t = convertDataItemValueToStrings(item[i])
|
||||||
|
if(t !== undefined) {
|
||||||
|
results.push.apply(results,t);
|
||||||
}
|
}
|
||||||
if(typeof item === "object") {
|
|
||||||
return JSON.stringify(item);
|
|
||||||
}
|
}
|
||||||
return item.toString();
|
} else {
|
||||||
|
// Return all the values in objects recursively
|
||||||
|
$tw.utils.each(Object.keys(item).sort(),function(key) {
|
||||||
|
t = convertDataItemValueToStrings(item[key]);
|
||||||
|
if(t !== undefined) {
|
||||||
|
results.push.apply(results,t);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
return [item.toString()];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
title: $:/config/OfficialPluginLibrary
|
title: $:/config/OfficialPluginLibrary
|
||||||
tags: $:/tags/PluginLibrary
|
tags: $:/tags/PluginLibrary
|
||||||
url: https://tiddlywiki.com/library/v5.2.4/index.html
|
url: https://tiddlywiki.com/library/v5.2.5/index.html
|
||||||
caption: {{$:/language/OfficialPluginLibrary}}
|
caption: {{$:/language/OfficialPluginLibrary}}
|
||||||
|
|
||||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
"tiddlywiki/snowwhite"
|
"tiddlywiki/snowwhite"
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
"en-GB",
|
|
||||||
"de-AT",
|
"de-AT",
|
||||||
"de-DE"
|
"de-DE"
|
||||||
],
|
],
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
"tiddlywiki/internals"
|
"tiddlywiki/internals"
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
"en-GB",
|
|
||||||
"de-AT",
|
"de-AT",
|
||||||
"de-DE"
|
"de-DE"
|
||||||
],
|
],
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
"tiddlywiki/internals"
|
"tiddlywiki/internals"
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
"en-GB",
|
|
||||||
"de-AT",
|
"de-AT",
|
||||||
"de-DE"
|
"de-DE"
|
||||||
],
|
],
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
"de-AT",
|
"de-AT",
|
||||||
"de-DE",
|
"de-DE",
|
||||||
"el-GR",
|
"el-GR",
|
||||||
"en-GB",
|
|
||||||
"en-US",
|
"en-US",
|
||||||
"es-ES",
|
"es-ES",
|
||||||
"fa-IR",
|
"fa-IR",
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
"de-CH",
|
"de-CH",
|
||||||
"de-DE",
|
"de-DE",
|
||||||
"el-GR",
|
"el-GR",
|
||||||
"en-GB",
|
|
||||||
"en-US",
|
"en-US",
|
||||||
"es-ES",
|
"es-ES",
|
||||||
"fa-IR",
|
"fa-IR",
|
||||||
|
50
editions/prerelease/tiddlers/Release 5.2.5.tid
Normal file
50
editions/prerelease/tiddlers/Release 5.2.5.tid
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
caption: 5.2.5
|
||||||
|
created: 20221127133944178
|
||||||
|
modified: 20221127133944178
|
||||||
|
tags: ReleaseNotes
|
||||||
|
title: Release 5.2.5
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.4...master]]//
|
||||||
|
|
||||||
|
! Translation Improvements
|
||||||
|
|
||||||
|
Improvements to the following translations:
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Usability Improvements
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Widget Improvements
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Filter improvements
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Hackability Improvements
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Bug Fixes
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Node.js Improvements
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Performance Improvements
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
! Acknowledgements
|
||||||
|
|
||||||
|
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
|
||||||
|
|
||||||
|
<<.contributors """
|
||||||
|
XXXXX
|
||||||
|
""">>
|
@ -1,6 +1,6 @@
|
|||||||
title: $:/config/OfficialPluginLibrary
|
title: $:/config/OfficialPluginLibrary
|
||||||
tags: $:/tags/PluginLibrary
|
tags: $:/tags/PluginLibrary
|
||||||
url: https://tiddlywiki.com/prerelease/library/v5.2.4/index.html
|
url: https://tiddlywiki.com/prerelease/library/v5.2.5/index.html
|
||||||
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
|
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
|
||||||
|
|
||||||
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
|
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
title: TiddlyWiki Pre-release
|
title: TiddlyWiki Pre-release
|
||||||
modified: 20150428204930183
|
modified: 20150428204930183
|
||||||
|
|
||||||
This is a pre-release build of TiddlyWiki, [[also available in empty form|https://tiddlywiki.com/prerelease/empty.html]]. It is provided for testing purposes. ''Please don't try to use it for anything important'' -- you should use the latest official release from https://tiddlywiki.com.
|
This is a pre-release build of TiddlyWiki provided for testing and review purposes. ''Please don't try to depend on the pre-release for anything important'' -- you should use the latest official release from https://tiddlywiki.com.
|
||||||
|
|
||||||
|
All of the changes in this pre-release are provisional until it is released and they become frozen by our backwards compatibility policies. This is the perfect time to raise questions or make suggestions. Please [[open a ticket at GitHub|https://github.com/Jermolene/TiddlyWiki5/issues/new/choose]] or make a post at https://talk.tiddlywiki.org/.
|
||||||
|
|
||||||
|
The pre-release is also available as an [[empty wiki|https://tiddlywiki.com/prerelease/empty.html]] ready for reuse.
|
||||||
|
|
||||||
<$list filter="[tag[ReleaseNotes]!has[released]!sort[created]]">
|
<$list filter="[tag[ReleaseNotes]!has[released]!sort[created]]">
|
||||||
<div class="tc-titlebar">
|
<div class="tc-titlebar">
|
||||||
|
@ -23,7 +23,7 @@ describe("json filter tests", function() {
|
|||||||
type: "application/json"
|
type: "application/json"
|
||||||
},{
|
},{
|
||||||
title: "Second",
|
title: "Second",
|
||||||
text: '["une","deux","trois"]',
|
text: '["une","deux","trois",["quatre","cinq"]]',
|
||||||
type: "application/json"
|
type: "application/json"
|
||||||
},{
|
},{
|
||||||
title: "Third",
|
title: "Third",
|
||||||
@ -38,14 +38,14 @@ describe("json filter tests", function() {
|
|||||||
|
|
||||||
it("should support the jsonget operator", function() {
|
it("should support the jsonget operator", function() {
|
||||||
expect(wiki.filterTiddlers("[{Third}jsonget[]]")).toEqual(["This is not JSON"]);
|
expect(wiki.filterTiddlers("[{Third}jsonget[]]")).toEqual(["This is not JSON"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[]]")).toEqual(['{"a":"one","b":"","c":1.618,"d":{"e":"four","f":["five","six",true,false,null]}}']);
|
expect(wiki.filterTiddlers("[{Second}jsonget[]]")).toEqual(["une","deux","trois","quatre","cinq"]);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonget[]]")).toEqual(["one","","1.618","four","five","six","true","false","null"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[a]]")).toEqual(["one"]);
|
expect(wiki.filterTiddlers("[{First}jsonget[a]]")).toEqual(["one"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[b]]")).toEqual([""]);
|
expect(wiki.filterTiddlers("[{First}jsonget[b]]")).toEqual([""]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[missing-property]]")).toEqual([]);
|
expect(wiki.filterTiddlers("[{First}jsonget[missing-property]]")).toEqual([]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[d]]")).toEqual(['{"e":"four","f":["five","six",true,false,null]}']);
|
expect(wiki.filterTiddlers("[{First}jsonget[d]]")).toEqual(["four","five","six","true","false","null"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[d]jsonget[f]]")).toEqual(['["five","six",true,false,null]']);
|
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[d],[e]]")).toEqual(["four"]);
|
expect(wiki.filterTiddlers("[{First}jsonget[d],[e]]")).toEqual(["four"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[d],[f]]")).toEqual(['["five","six",true,false,null]']);
|
expect(wiki.filterTiddlers("[{First}jsonget[d],[f]]")).toEqual(["five","six","true","false","null"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[0]]")).toEqual(["five"]);
|
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[0]]")).toEqual(["five"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[1]]")).toEqual(["six"]);
|
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[1]]")).toEqual(["six"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[2]]")).toEqual(["true"]);
|
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[2]]")).toEqual(["true"]);
|
||||||
@ -53,8 +53,25 @@ describe("json filter tests", function() {
|
|||||||
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[4]]")).toEqual(["null"]);
|
expect(wiki.filterTiddlers("[{First}jsonget[d],[f],[4]]")).toEqual(["null"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should support the jsonextract operator", function() {
|
||||||
|
expect(wiki.filterTiddlers("[{Third}jsonextract[]]")).toEqual(['"This is not JSON"']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[]]")).toEqual(['{"a":"one","b":"","c":1.618,"d":{"e":"four","f":["five","six",true,false,null]}}']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[a]]")).toEqual(['"one"']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[b]]")).toEqual(['""']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[missing-property]]")).toEqual([]);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d]]")).toEqual(['{"e":"four","f":["five","six",true,false,null]}']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d]jsonextract[f]]")).toEqual(['["five","six",true,false,null]']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d],[e]]")).toEqual(['"four"']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d],[f]]")).toEqual(['["five","six",true,false,null]']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d],[f],[0]]")).toEqual(['"five"']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d],[f],[1]]")).toEqual(['"six"']);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d],[f],[2]]")).toEqual(["true"]);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d],[f],[3]]")).toEqual(["false"]);
|
||||||
|
expect(wiki.filterTiddlers("[{First}jsonextract[d],[f],[4]]")).toEqual(["null"]);
|
||||||
|
});
|
||||||
|
|
||||||
it("should support the jsonindexes operator", function() {
|
it("should support the jsonindexes operator", function() {
|
||||||
expect(wiki.filterTiddlers("[{Second}jsonindexes[]]")).toEqual(["0","1","2"]);
|
expect(wiki.filterTiddlers("[{Second}jsonindexes[]]")).toEqual(["0","1","2","3"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonindexes[]]")).toEqual(["a","b","c","d"]);
|
expect(wiki.filterTiddlers("[{First}jsonindexes[]]")).toEqual(["a","b","c","d"]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonindexes[a]]")).toEqual([]);
|
expect(wiki.filterTiddlers("[{First}jsonindexes[a]]")).toEqual([]);
|
||||||
expect(wiki.filterTiddlers("[{First}jsonindexes[b]]")).toEqual([]);
|
expect(wiki.filterTiddlers("[{First}jsonindexes[b]]")).toEqual([]);
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
"de-CH",
|
"de-CH",
|
||||||
"de-DE",
|
"de-DE",
|
||||||
"el-GR",
|
"el-GR",
|
||||||
"en-GB",
|
|
||||||
"en-US",
|
"en-US",
|
||||||
"es-ES",
|
"es-ES",
|
||||||
"fa-IR",
|
"fa-IR",
|
||||||
|
@ -2,7 +2,7 @@ title: JSON in TiddlyWiki
|
|||||||
tags: Features
|
tags: Features
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
created: 20220427174702859
|
created: 20220427174702859
|
||||||
modified: 20220427174702859
|
modified: 20220611104737314
|
||||||
|
|
||||||
!! Introduction
|
!! Introduction
|
||||||
|
|
||||||
|
66
editions/tw5.com/tiddlers/filters/jsonextract.tid
Normal file
66
editions/tw5.com/tiddlers/filters/jsonextract.tid
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
created: 20220611104737314
|
||||||
|
modified: 20220611104737314
|
||||||
|
tags: [[Filter Operators]] [[JSON Operators]]
|
||||||
|
title: jsonextract Operator
|
||||||
|
caption: jsonextract
|
||||||
|
op-purpose: retrieve the JSON string of a property from JSON strings
|
||||||
|
op-input: a selection of JSON strings
|
||||||
|
op-parameter: one or more indexes of the property to retrieve
|
||||||
|
op-output: the JSON string values of each of the retrieved properties
|
||||||
|
|
||||||
|
<<.from-version "5.2.4">> See [[JSON in TiddlyWiki]] for background.
|
||||||
|
|
||||||
|
The <<.op jsonextract>> operator is used to retrieve values from JSON data as JSON substrings. See also the following related operators:
|
||||||
|
|
||||||
|
* <<.olink jsonget>> to retrieve the values of a property in JSON data
|
||||||
|
* <<.olink jsontype>> to retrieve the type of a JSON value
|
||||||
|
* <<.olink jsonindexes>> to retrieve the names of the fields of a JSON object, or the indexes of a JSON array
|
||||||
|
|
||||||
|
Properties within a JSON object are identified by a sequence of indexes. In the following example, the value at `[a]` is `one`, and the value at `[d][f][0]` is `five`.
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"a": "one",
|
||||||
|
"b": "",
|
||||||
|
"c": "three",
|
||||||
|
"d": {
|
||||||
|
"e": "four",
|
||||||
|
"f": [
|
||||||
|
"five",
|
||||||
|
"six",
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
null
|
||||||
|
],
|
||||||
|
"g": {
|
||||||
|
"x": "max",
|
||||||
|
"y": "may",
|
||||||
|
"z": "maize"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The following examples assume that this JSON data is contained in a variable called `jsondata`.
|
||||||
|
|
||||||
|
The <<.op jsonextract>> operator uses multiple operands to specify the indexes of the property to retrieve. Values are returned as literal JSON strings:
|
||||||
|
|
||||||
|
```
|
||||||
|
[<jsondata>jsonextract[a]] --> "one"
|
||||||
|
[<jsondata>jsonextract[d],[e]] --> "four"
|
||||||
|
[<jsondata>jsonextract[d],[f],[0]] --> "five"
|
||||||
|
[<jsondata>jsonextract[d],[f]] --> ["five","six",true,false,null]
|
||||||
|
[<jsondata>jsonextract[d],[g]] --> {"x":"max","y":"may","z":"maize"}
|
||||||
|
```
|
||||||
|
|
||||||
|
Indexes can be dynamically composed from variables and transclusions:
|
||||||
|
|
||||||
|
```
|
||||||
|
[<jsondata>jsonextract<variable>,{!!field},[0]]
|
||||||
|
```
|
||||||
|
|
||||||
|
A subtlety is that the special case of a single blank operand is used to identify the root object. Thus:
|
||||||
|
|
||||||
|
```
|
||||||
|
[<jsondata>jsonextract[]] --> {"a":"one","b":"","c":"three","d":{"e":"four","f":["five","six",true,false,null],"g":{"x":"max","y":"may","z":"maize"}}}
|
||||||
|
```
|
@ -10,10 +10,11 @@ op-output: the values of each of the retrieved properties
|
|||||||
|
|
||||||
<<.from-version "5.2.4">> See [[JSON in TiddlyWiki]] for background.
|
<<.from-version "5.2.4">> See [[JSON in TiddlyWiki]] for background.
|
||||||
|
|
||||||
The <<.op jsonget>> operator is used to retrieve values from JSON data. See also the following related operators:
|
The <<.op jsonget>> operator is used to retrieve values from JSON data as strings. See also the following related operators:
|
||||||
|
|
||||||
* <<.olink jsontype>> to retrieve the type of a JSON value
|
* <<.olink jsontype>> to retrieve the type of a JSON value
|
||||||
* <<.olink jsonindexes>> to retrieve the names of the fields of a JSON object, or the indexes of a JSON array
|
* <<.olink jsonindexes>> to retrieve the names of the fields of a JSON object, or the indexes of a JSON array
|
||||||
|
* <<.olink jsonextract>> to retrieve a JSON value as a string of JSON
|
||||||
|
|
||||||
Properties within a JSON object are identified by a sequence of indexes. In the following example, the value at `[a]` is `one`, and the value at `[d][f][0]` is `five`.
|
Properties within a JSON object are identified by a sequence of indexes. In the following example, the value at `[a]` is `one`, and the value at `[d][f][0]` is `five`.
|
||||||
|
|
||||||
@ -65,11 +66,11 @@ Boolean values and null are returned as normal strings. The <<.olink jsontype>>
|
|||||||
[<jsondata>jsontype[d],[f],[2]] --> "boolean"
|
[<jsondata>jsontype[d],[f],[2]] --> "boolean"
|
||||||
```
|
```
|
||||||
|
|
||||||
Using the <<.op jsonget>> operator to retrieve an object or an array returns a JSON string of the values. For example:
|
Using the <<.op jsonget>> operator to retrieve an object or an array returns a list of the values. For example:
|
||||||
|
|
||||||
```
|
```
|
||||||
[<jsondata>jsonget[d],[f]] --> `["five","six",true,false,null]`
|
[<jsondata>jsonget[d],[f]] --> "five","six","true","false","null"
|
||||||
[<jsondata>jsonget[d],[g]] --> `{"x": "max","y": "may","z": "maize"}`
|
[<jsondata>jsonget[d],[g]] --> "max","may","maize"
|
||||||
```
|
```
|
||||||
|
|
||||||
The <<.olink jsonindexes>> operator retrieves the corresponding indexes:
|
The <<.olink jsonindexes>> operator retrieves the corresponding indexes:
|
||||||
@ -79,6 +80,12 @@ The <<.olink jsonindexes>> operator retrieves the corresponding indexes:
|
|||||||
[<jsondata>jsonindexes[d],[g]] --> "x", "y", "z"
|
[<jsondata>jsonindexes[d],[g]] --> "x", "y", "z"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If the object or array contains nested child objects or arrays then the values are retrieved recursively and returned flattened into a list. For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
[<jsondata>jsonget[d]] --> "four","five","six","true","false","null","max","may","maize"
|
||||||
|
```
|
||||||
|
|
||||||
A subtlety is that the special case of a single blank operand is used to identify the root object. Thus:
|
A subtlety is that the special case of a single blank operand is used to identify the root object. Thus:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -14,6 +14,7 @@ The <<.op jsonindexes>> operator is used to retrieve the property names of JSON
|
|||||||
|
|
||||||
* <<.olink jsonget>> to retrieve the values of a property in JSON data
|
* <<.olink jsonget>> to retrieve the values of a property in JSON data
|
||||||
* <<.olink jsontype>> to retrieve the type of a JSON value
|
* <<.olink jsontype>> to retrieve the type of a JSON value
|
||||||
|
* <<.olink jsonextract>> to retrieve a JSON value as a string of JSON
|
||||||
|
|
||||||
Properties within a JSON object are identified by a sequence of indexes. In the following example, the value at `[a]` is `one`, and the value at `[d][f][0]` is `five`.
|
Properties within a JSON object are identified by a sequence of indexes. In the following example, the value at `[a]` is `one`, and the value at `[d][f][0]` is `five`.
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ The <<.op jsontype>> operator is used to retrieve the type of a property in JSON
|
|||||||
|
|
||||||
* <<.olink jsonget>> to retrieve the values of a property in JSON data
|
* <<.olink jsonget>> to retrieve the values of a property in JSON data
|
||||||
* <<.olink jsonindexes>> to retrieve the names of the fields of a JSON object, or the indexes of a JSON array
|
* <<.olink jsonindexes>> to retrieve the names of the fields of a JSON object, or the indexes of a JSON array
|
||||||
|
* <<.olink jsonextract>> to retrieve a JSON value as a string of JSON
|
||||||
|
|
||||||
JSON supports the following data types:
|
JSON supports the following data types:
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
created: 20130822170200000
|
created: 20130822170200000
|
||||||
list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]]
|
list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]]
|
||||||
modified: 20221204165636777
|
modified: 20221213163110439
|
||||||
tags: TableOfContents
|
tags: TableOfContents
|
||||||
title: HelloThere
|
title: HelloThere
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
@ -5,4 +5,4 @@ image: Grok TiddlyWiki Banner
|
|||||||
caption: Grok ~TiddlyWiki
|
caption: Grok ~TiddlyWiki
|
||||||
link: "Grok TiddlyWiki" by Soren Bjornstad
|
link: "Grok TiddlyWiki" by Soren Bjornstad
|
||||||
|
|
||||||
A guided tutorial through ~TiddlyWiki
|
Everything you need to know to get the best out of ~TiddlyWiki
|
@ -1,11 +1,20 @@
|
|||||||
created: 20220427174702859
|
created: 20220427174702859
|
||||||
modified: 20220427171449102
|
modified: 20220611104737314
|
||||||
tags: [[JSON in TiddlyWiki]] Learning
|
tags: [[JSON in TiddlyWiki]] Learning
|
||||||
title: Reading data from JSON tiddlers
|
title: Reading data from JSON tiddlers
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
See [[JSON in TiddlyWiki]] for an overview of using JSON in TiddlyWiki.
|
See [[JSON in TiddlyWiki]] for an overview of using JSON in TiddlyWiki.
|
||||||
|
|
||||||
|
!! Filter Operators for Accessing JSON Data
|
||||||
|
|
||||||
|
The following filter operators allow values to be read from JSON data:
|
||||||
|
|
||||||
|
* <<.olink jsonget>> to retrieve the values of a property in JSON data
|
||||||
|
* <<.olink jsontype>> to retrieve the type of a JSON value
|
||||||
|
* <<.olink jsonindexes>> to retrieve the names of the fields of a JSON object, or the indexes of a JSON array
|
||||||
|
* <<.olink jsonextract>> to retrieve a JSON value as a string of JSON
|
||||||
|
|
||||||
!! Text References for Accessing JSON Data
|
!! Text References for Accessing JSON Data
|
||||||
|
|
||||||
[[Text references|TextReference]] are a simple shortcut syntax to look up the value of a named property. For example, if a [[DictionaryTiddler|DictionaryTiddlers]] called `MonthDays` contains:
|
[[Text references|TextReference]] are a simple shortcut syntax to look up the value of a named property. For example, if a [[DictionaryTiddler|DictionaryTiddlers]] called `MonthDays` contains:
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 106 KiB |
@ -1,11 +1,12 @@
|
|||||||
caption: 5.2.4
|
caption: 5.2.4
|
||||||
created: 20221127133944178
|
created: 20221213163110439
|
||||||
modified: 20221127133944178
|
modified: 20221213163110439
|
||||||
|
released: 20221213163110439
|
||||||
tags: ReleaseNotes
|
tags: ReleaseNotes
|
||||||
title: Release 5.2.4
|
title: Release 5.2.4
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.3...master]]//
|
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.3...v5.2.4]]//
|
||||||
|
|
||||||
<<.banner-credits
|
<<.banner-credits
|
||||||
credit:"""Congratulations to [[dmikh|https://talk.tiddlywiki.org/u/dmikh]] for their winning design for the banner for this release (here is the [[competition thread|https://talk.tiddlywiki.org/t/new-release-banner-competition-for-v5-2-4/4982]] and the [[voting thread|https://talk.tiddlywiki.org/t/vote-for-the-v5-2-4-new-release-banner/5140/2]]).
|
credit:"""Congratulations to [[dmikh|https://talk.tiddlywiki.org/u/dmikh]] for their winning design for the banner for this release (here is the [[competition thread|https://talk.tiddlywiki.org/t/new-release-banner-competition-for-v5-2-4/4982]] and the [[voting thread|https://talk.tiddlywiki.org/t/vote-for-the-v5-2-4-new-release-banner/5140/2]]).
|
||||||
@ -19,19 +20,20 @@ New [ext[Twitter Archivist|./editions/twitter-archivist]] plugin to import the t
|
|||||||
|
|
||||||
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6961">> new GenesisWidget that allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance
|
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6961">> new GenesisWidget that allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance
|
||||||
|
|
||||||
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6936">> new operators for reading and formatting JSON data: [[jsonget Operator]], [[jsonindexes Operator]], [[jsontype Operator]] and [[format Operator]]
|
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6936">> (and <<.link-badge-here "https://github.com/Jermolene/TiddlyWiki5/pull/7105">>) new operators for reading and formatting JSON data: [[jsonget Operator]], [[jsonindexes Operator]], [[jsontype Operator]], [[jsonextract Operator]] and [[format Operator]]
|
||||||
|
|
||||||
! Translation improvement
|
! Translation Improvements
|
||||||
|
|
||||||
Improvements to the following translations:
|
Improvements to the following translations:
|
||||||
|
|
||||||
* Chinese
|
* Chinese
|
||||||
* French
|
* French
|
||||||
|
* German
|
||||||
* Polish
|
* Polish
|
||||||
* Spanish
|
* Spanish
|
||||||
* Japanese
|
* Japanese
|
||||||
|
|
||||||
Improvements to the translation features of TiddlyWiki:
|
Improvements to the translation features of TiddlyWiki itself:
|
||||||
|
|
||||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6882">> the [[Translators Edition|Translate TiddlyWiki into your language]] to add an option to display the original English text underneath the text area
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6882">> the [[Translators Edition|Translate TiddlyWiki into your language]] to add an option to display the original English text underneath the text area
|
||||||
* <<.link-badge-updated "https://github.com/Jermolene/TiddlyWiki5/pull/6933">> "delete" button text in $:/AdvancedSearch so that it is translatable
|
* <<.link-badge-updated "https://github.com/Jermolene/TiddlyWiki5/pull/6933">> "delete" button text in $:/AdvancedSearch so that it is translatable
|
||||||
@ -75,22 +77,25 @@ Improvements to the translation features of TiddlyWiki:
|
|||||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7043">> support for Unix epoch timestamps in [[date format strings|DateFormat]]
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7043">> support for Unix epoch timestamps in [[date format strings|DateFormat]]
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7064">> the "big green download button" to use the defined palette colour
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7064">> the "big green download button" to use the defined palette colour
|
||||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7063">> new hidden setting [[to use horizontal tabs for the "more" sidebar tab|Hidden Setting: More Tabs Horizontal]]
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7063">> new hidden setting [[to use horizontal tabs for the "more" sidebar tab|Hidden Setting: More Tabs Horizontal]]
|
||||||
|
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/commit/bef11fe6a25fb849dee40c4aa4337d6a30daf0b4">> the [[external JavaScript templates|Using the external JavaScript template]] to allow the URL of the external script file to be configured
|
||||||
|
|
||||||
! Bug Fixes
|
! Bug Fixes
|
||||||
|
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7099">> truncated search results on small screens
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7010">> table contents overflow on small screens
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/fb34df84ed41882c1c2a6ff54f0e908b43ef95a3">> "new image" keyboard shortcut not to assign journal tags
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/fb34df84ed41882c1c2a6ff54f0e908b43ef95a3">> "new image" keyboard shortcut not to assign journal tags
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6987">> SelectWidget class to update if it uses a filter
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6987">> SelectWidget class to update if it uses a filter
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7017">> issue with wikification within the advanced search filter dropdown
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7017">> issue with wikification within the advanced search filter dropdown
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7057">> the table in $:/Import to avoid creating hidden empty rows
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7057">> the table in $:/Import to avoid creating hidden empty rows
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7008">> advanced search keyboard shortcut not navigating correctly
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7008">> advanced search keyboard shortcut not navigating correctly
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7083">> erroneous display of drafts within the advanced search filter dropdown
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7083">> erroneous display of drafts within the advanced search filter dropdown
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7092">> backwards compatibility of new field editor cascade introduced in v5.2.3
|
||||||
|
|
||||||
! Node.js Improvements
|
! Node.js Improvements
|
||||||
|
|
||||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7073">> new CommandsCommand to enable command tokens to be dynamically generated from a filter
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7073">> new CommandsCommand to enable command tokens to be dynamically generated from a filter
|
||||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6947">> console logging to avoid spaces and `<empty string>` message
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6947">> console logging to avoid spaces and `<empty string>` message
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7014">> problem with lazy loading deleting tiddler bodies under certian circumstances
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7014">> problem with lazy loading deleting tiddler bodies under certain circumstances
|
||||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/344110e2890caf711ab8f3c4f4deaa7d86771231">> handling of ".mp4" file extension so that it defaults to video not audio
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/344110e2890caf711ab8f3c4f4deaa7d86771231">> handling of ".mp4" file extension so that it defaults to video not audio
|
||||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6588">> test server to the plugin library edition
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6588">> test server to the plugin library edition
|
||||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7049">> [[Hidden Setting: Sync Logging]] to control logging of sync-related messages
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7049">> [[Hidden Setting: Sync Logging]] to control logging of sync-related messages
|
||||||
@ -111,7 +116,7 @@ AnthonyMuscio
|
|||||||
bestony
|
bestony
|
||||||
btheado
|
btheado
|
||||||
BramChen
|
BramChen
|
||||||
carlo-columbo
|
carlo-colombo
|
||||||
EvidentlyCube
|
EvidentlyCube
|
||||||
FlashSystems
|
FlashSystems
|
||||||
flibbles
|
flibbles
|
||||||
@ -126,7 +131,9 @@ pmario
|
|||||||
rmunn
|
rmunn
|
||||||
roma0104
|
roma0104
|
||||||
saqimtiaz
|
saqimtiaz
|
||||||
|
simonbaird
|
||||||
talha131
|
talha131
|
||||||
|
Telumire
|
||||||
tw-FRed
|
tw-FRed
|
||||||
twMat
|
twMat
|
||||||
xcazin
|
xcazin
|
@ -3,7 +3,7 @@ color: #29B6F6
|
|||||||
community-author: Simon Baird
|
community-author: Simon Baird
|
||||||
created: 20210422191232572
|
created: 20210422191232572
|
||||||
delivery: Service
|
delivery: Service
|
||||||
description: Online service for creating and hosting TiddlyWikis
|
description: Online service for creating and hosting ~TiddlyWikis
|
||||||
method: save
|
method: save
|
||||||
modified: 20210423003921468
|
modified: 20210423003921468
|
||||||
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge
|
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge
|
||||||
|
@ -6,7 +6,6 @@ delivery: Service
|
|||||||
description: Online TiddlyWiki hosting. (Deprecated in favour of TiddlyHost)
|
description: Online TiddlyWiki hosting. (Deprecated in favour of TiddlyHost)
|
||||||
method: save
|
method: save
|
||||||
modified: 20210423004027196
|
modified: 20210423004027196
|
||||||
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge
|
|
||||||
title: Saving on TiddlySpot
|
title: Saving on TiddlySpot
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
@ -32,9 +32,16 @@ type: text/vnd.tiddlywiki
|
|||||||
\define checkactions(item:"Linux")
|
\define checkactions(item:"Linux")
|
||||||
<$action-listops $tiddler=<<stateTiddler>> $subfilter="[[$item$]]"/>
|
<$action-listops $tiddler=<<stateTiddler>> $subfilter="[[$item$]]"/>
|
||||||
\end
|
\end
|
||||||
<$vars stateTiddler=<<qualify "$:/state/gettingstarted">> >
|
|
||||||
|
|
||||||
Available methods for saving changes with ~TiddlyWiki:
|
\define introduction-message()
|
||||||
|
<div class="tc-saving-introduction">
|
||||||
|
<div>
|
||||||
|
Use the checkboxes to explore the methods of saving that work with your platform(s)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
\end
|
||||||
|
|
||||||
|
<$vars stateTiddler=<<qualify "$:/state/gettingstarted">> >
|
||||||
|
|
||||||
<div class="tc-wrapper-flex">
|
<div class="tc-wrapper-flex">
|
||||||
<div class="tc-saving-sidebar">
|
<div class="tc-saving-sidebar">
|
||||||
@ -56,7 +63,7 @@ Available methods for saving changes with ~TiddlyWiki:
|
|||||||
<!-- Page content -->
|
<!-- Page content -->
|
||||||
<div class="tc-cards">
|
<div class="tc-cards">
|
||||||
<$wikify text=<<alltagsfilter>> name="alltagsfilterwikified">
|
<$wikify text=<<alltagsfilter>> name="alltagsfilterwikified">
|
||||||
<$list filter=<<alltagsfilterwikified>>>
|
<$list filter=<<alltagsfilterwikified>> emptyMessage=<<introduction-message>>>
|
||||||
{{||$:/_tw5.com-card-template}}
|
{{||$:/_tw5.com-card-template}}
|
||||||
</$list>
|
</$list>
|
||||||
</$wikify>
|
</$wikify>
|
||||||
|
@ -122,6 +122,15 @@ type: text/vnd.tiddlywiki
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tc-saving-introduction {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 4em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
.tc-cards {
|
.tc-cards {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
created: 20180905075846391
|
created: 20180905075846391
|
||||||
modified: 20210611055708739
|
modified: 20221207112242775
|
||||||
tags: [[WebServer Guides]]
|
tags: [[WebServer Guides]]
|
||||||
title: Using the external JavaScript template
|
title: Using the external JavaScript template
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
You can use a special template to externalise TiddlyWiki's core code into a separate file. This configuration allows the browser to cache the core for improved efficiency.
|
You can use a special template to externalise ~TiddlyWiki's core code into a separate file. This configuration allows the browser to cache the core for improved efficiency.
|
||||||
|
|
||||||
! Background
|
! Background
|
||||||
|
|
||||||
TiddlyWiki in the single file configuration ordinarily packs everything into a single file: your data, and the ~JavaScript, CSS and HTML comprising TiddlyWiki itself. This lack of dependencies is usually very convenient: it means that it is impossible for the parts of a TiddlyWiki to become separated, and enormously improves the chances of it still functioning in the future.
|
~TiddlyWiki in the single file configuration ordinarily packs everything into a single file: your data, and the ~JavaScript, CSS and HTML comprising ~TiddlyWiki itself. This lack of dependencies is usually very convenient: it means that it is impossible for the parts of a ~TiddlyWiki to become separated, and enormously improves the chances of it still functioning in the future.
|
||||||
|
|
||||||
However, there is some inefficiency in this arrangement because the core code is repeatedly loaded and saved every time the content of the wiki is saved. This inefficiency is partially ameliorated when working in the client server configuration because once the wiki is loaded by the browser the synchronisation process only transmits individual tiddlers back and forth to the server.
|
However, there is some inefficiency in this arrangement because the core code is repeatedly loaded and saved every time the content of the wiki is saved. This inefficiency is partially ameliorated when working in the client server configuration because once the wiki is loaded by the browser the synchronisation process only transmits individual tiddlers back and forth to the server.
|
||||||
|
|
||||||
The remaining inefficiency when working in the client server configuration is that the single page wiki that is initially loaded will contain a copy of the entire core code of TiddlyWiki, making it impossible for the browser to cache it.
|
The remaining inefficiency when working in the client server configuration is that the single page wiki that is initially loaded will contain a copy of the entire core code of ~TiddlyWiki, making it impossible for the browser to cache it.
|
||||||
|
|
||||||
! Using the external JavaScript template with the client-server configuration
|
! Using the external ~JavaScript template with the client-server configuration
|
||||||
|
|
||||||
The mechanism is activated by setting the [[root-tiddler|WebServer Parameter: root-tiddler]] parameter to `$:/core/save/all-external-js`. This template externalises TiddlyWiki's core JavaScript into a separate file. For example, the following command will start your server with caching enabled. It will transfer the wiki with two GET requests, and the core can be cached by the browser.
|
The mechanism is activated by setting the [[root-tiddler|WebServer Parameter: root-tiddler]] parameter to `$:/core/save/all-external-js`. This template externalises ~TiddlyWiki's core ~JavaScript into a separate file. For example, the following command will start your server with caching enabled. It will transfer the wiki with two GET requests, and the core can be cached by the browser.
|
||||||
|
|
||||||
```
|
```
|
||||||
tiddlywiki YOUR_WIKI_FOLDER --listen 'root-tiddler=$:/core/save/all-external-js' use-browser-cache=yes
|
tiddlywiki YOUR_WIKI_FOLDER --listen 'root-tiddler=$:/core/save/all-external-js' use-browser-cache=yes
|
||||||
@ -38,11 +38,11 @@ tiddlywiki ./myNewWiki --build listen
|
|||||||
The above commands perform the following:
|
The above commands perform the following:
|
||||||
|
|
||||||
* Create a new wiki with external JavaScript customization included.
|
* Create a new wiki with external JavaScript customization included.
|
||||||
* Start the server with external JavaScript enabled. The server listens on port 8080. Visit http://localhost:8080 in your browser.
|
* Start the server with external ~JavaScript enabled. The server listens on port 8080. Visit http://localhost:8080 in your browser.
|
||||||
|
|
||||||
To customize your `--build listen` command, see [[tiddlywiki.info Files]] and [[ListenCommand]].
|
To customize your `--build listen` command, see [[tiddlywiki.info Files]] and [[ListenCommand]].
|
||||||
|
|
||||||
! Using the external JavaScript template with the single file configuration
|
! Using the external ~JavaScript template with the single file configuration
|
||||||
|
|
||||||
You can use the "external-js" template with your single file wiki, but this requires that you have ~TiddlyWiki's core ~JavaScript saved alongside your HTML file. You may prefer this configuration, for example, if you have several wikis on a ~WebDav server. (See: [[Saving via WebDAV]])
|
You can use the "external-js" template with your single file wiki, but this requires that you have ~TiddlyWiki's core ~JavaScript saved alongside your HTML file. You may prefer this configuration, for example, if you have several wikis on a ~WebDav server. (See: [[Saving via WebDAV]])
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ The files `index.html` and `tiddlywikicore-5.x.x.js` will be saved in your wiki
|
|||||||
|
|
||||||
!! Obtaining the ~TiddlyWiki core in the browser
|
!! Obtaining the ~TiddlyWiki core in the browser
|
||||||
|
|
||||||
To download a copy of the TiddlyWiki core JavaScript file from any existing TiddlyWiki, visit the system tiddler $:/core/ui/ExportTiddlyWikiCore and click the download button. (You can search for ''~ExportTiddlyWikiCore'' in the ''Shadows'' tab of $:/AdvancedSearch).
|
{{$:/core/ui/ExportTiddlyWikiCore}}
|
||||||
|
|
||||||
!! Obtaining the ~TiddlyWiki core with Node.js
|
!! Obtaining the ~TiddlyWiki core with Node.js
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ tiddlywiki YOUR_WIKI_FOLDER --build tiddlywikicore
|
|||||||
|
|
||||||
<<.warning "This procedure is experimental, please take care to backup your data">>
|
<<.warning "This procedure is experimental, please take care to backup your data">>
|
||||||
|
|
||||||
Before you proceed, backup your wiki first! Follow the steps below to upgrade a single-file wiki with the external JavaScript template:
|
Before you proceed, backup your wiki first! Follow the steps below to upgrade a single-file wiki with the external ~JavaScript template:
|
||||||
|
|
||||||
# Proceed with the [[Upgrade Process for Standalone TiddlyWikis|Upgrading]]. Your wiki will be converted to a full standalone HTML.
|
# Proceed with the [[Upgrade Process for Standalone TiddlyWikis|Upgrading]]. Your wiki will be converted to a full standalone HTML.
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "tiddlywiki",
|
"name": "tiddlywiki",
|
||||||
"preferGlobal": "true",
|
"preferGlobal": "true",
|
||||||
"version": "5.2.4-prerelease",
|
"version": "5.2.5-prerelease",
|
||||||
"author": "Jeremy Ruston <jeremy@jermolene.com>",
|
"author": "Jeremy Ruston <jeremy@jermolene.com>",
|
||||||
"description": "a non-linear personal web notebook",
|
"description": "a non-linear personal web notebook",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Join the Community</h1><p>
|
<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Join the Community</h1><p>
|
||||||
<h2 class="">Official Forums</h2><p>The new official forum for talking about TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.</p><p><a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/" rel="noopener noreferrer" target="_blank">https://talk.tiddlywiki.org/</a></p><p>Note that talk.tiddlywiki.org is a community run service that we host and maintain ourselves. The modest running costs are covered by community contributions.</p><p>For the convenience of existing users, we also continue to operate the original TiddlyWiki group (hosted on Google Groups since 2005):</p><p><a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWiki" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWiki</a></p><h2 class="">Developer Forums</h2><p>There are several resources for developers to learn more about <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> and to discuss and contribute to its development.</p><ul><li><a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">tiddlywiki.com/dev</a> is the official developer documentation</li><li>Get involved in the <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">development on GitHub</a><ul><li><a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">Discussions</a> are for Q&A and open-ended discussion</li><li><a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/issues" rel="noopener noreferrer" target="_blank">Issues</a> are for raising bug reports and proposing specific, actionable new ideas</li></ul></li><li>The older TiddlyWikiDev Google Group is now closed in favour of <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">GitHub Discussions</a> but remains a useful archive: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWikiDev" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWikiDev</a><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywikidev@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/#!/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li><li>Chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> (development room coming soon)</li></ul><h2 class="">Other Forums</h2><ul><li><a class="tc-tiddlylink-external" href="https://www.reddit.com/r/TiddlyWiki5/" rel="noopener noreferrer" target="_blank">TiddlyWiki Subreddit</a></li><li>Chat with Gitter at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> !</li><li>Chat on Discord at <a class="tc-tiddlylink-external" href="https://discord.gg/HFFZVQ8" rel="noopener noreferrer" target="_blank">https://discord.gg/HFFZVQ8</a></li></ul><h3 class="">Documentation</h3><p>There is also a discussion group specifically for discussing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> documentation improvement initiatives: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/tiddlywikidocs" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/tiddlywikidocs</a>
|
<h2 class="">Official Forums</h2><p>The new official forum for talking about TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.</p><p><a class="tc-tiddlylink-external" href="https://talk.tiddlywiki.org/" rel="noopener noreferrer" target="_blank">https://talk.tiddlywiki.org/</a></p><p>Note that talk.tiddlywiki.org is a community run service that we host and maintain ourselves. The modest running costs are covered by community contributions.</p><p>For the convenience of existing users, we also continue to operate the original TiddlyWiki group (hosted on Google Groups since 2005):</p><p><a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWiki" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWiki</a></p><h2 class="">Developer Forums</h2><p>There are several resources for developers to learn more about <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> and to discuss and contribute to its development.</p><ul><li><a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev" rel="noopener noreferrer" target="_blank">tiddlywiki.com/dev</a> is the official developer documentation</li><li>Get involved in the <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">development on GitHub</a><ul><li><a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">Discussions</a> are for Q&A and open-ended discussion</li><li><a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/issues" rel="noopener noreferrer" target="_blank">Issues</a> are for raising bug reports and proposing specific, actionable new ideas</li></ul></li><li>The older TiddlyWikiDev Google Group is now closed in favour of <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/discussions" rel="noopener noreferrer" target="_blank">GitHub Discussions</a> but remains a useful archive: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/TiddlyWikiDev" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/TiddlyWikiDev</a><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywikidev@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/#!/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li><li>Chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> (development room coming soon)</li></ul><h2 class="">Other Forums</h2><ul><li><a class="tc-tiddlylink-external" href="https://www.reddit.com/r/TiddlyWiki5/" rel="noopener noreferrer" target="_blank">TiddlyWiki Subreddit</a></li><li>Chat with Gitter at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> !</li><li>Chat on Discord at <a class="tc-tiddlylink-external" href="https://discord.gg/HFFZVQ8" rel="noopener noreferrer" target="_blank">https://discord.gg/HFFZVQ8</a></li></ul><h3 class="">Documentation</h3><p>There is also a discussion group specifically for discussing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> documentation improvement initiatives: <a class="tc-tiddlylink-external" href="https://groups.google.com/group/tiddlywikidocs" rel="noopener noreferrer" target="_blank">https://groups.google.com/group/tiddlywikidocs</a>
|
||||||
</p>
|
</p>
|
||||||
</p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>Linux: <blockquote><div><em>Debian/Ubuntu</em>:<br><code>apt install nodejs</code><br>May need to be followed up by:<br><code>apt install npm</code></div><div><em>Arch Linux</em><br><code>pacman -S tiddlywiki</code> <br>(installs node and tiddlywiki)</div></blockquote></li><li>Mac<blockquote><div><code>brew install node</code></div></blockquote></li><li>Android<blockquote><div><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a></div></blockquote></li><li>Other <blockquote><div>See <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></div></blockquote></li></ul></li><li>Open a command line terminal and type:<blockquote><div><code>npm install -g tiddlywiki</code></div><div>If it fails with an error you may need to re-run the command as an administrator:</div><div><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</div></blockquote></li><li>Ensure TiddlyWiki is installed by typing:<blockquote><div><code>tiddlywiki --version</code></div></blockquote><ul><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.2.3". You may also see other debugging information reported.)</li></ul></li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <span class="doc-icon"><svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z" fill-rule="evenodd"></path></svg></span> <strong>save changes</strong> button in the sidebar, <strong>OR</strong></li><li><code>tiddlywiki mynewwiki --build index</code></li></ul></li></ol><p>The <code>-g</code> flag causes <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> to be installed globally. Without it, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> will only be available in the directory where you installed it.</p><p><div class="doc-icon-block"><div class="doc-block-icon"><svg class="tc-image-warning tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z" fill-rule="evenodd"></path></svg></div> If you are using Debian or Debian-based Linux and you are receiving a <code>node: command not found</code> error though node.js package is installed, you may need to create a symbolic link between <code>nodejs</code> and <code>node</code>. Consult your distro's manual and <code>whereis</code> to correctly create a link. See github <a class="tc-tiddlylink-external" href="http://github.com/Jermolene/TiddlyWiki5/issues/1434" rel="noopener noreferrer" target="_blank">issue 1434</a>. <br><br>Example Debian v8.0: <code>sudo ln -s /usr/bin/nodejs /usr/bin/node</code></div></p><p><br>
|
</p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>Linux: <blockquote><div><em>Debian/Ubuntu</em>:<br><code>apt install nodejs</code><br>May need to be followed up by:<br><code>apt install npm</code></div><div><em>Arch Linux</em><br><code>yay -S tiddlywiki</code> <br>(installs node and tiddlywiki)</div></blockquote></li><li>Mac<blockquote><div><code>brew install node</code></div></blockquote></li><li>Android<blockquote><div><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a></div></blockquote></li><li>Other <blockquote><div>See <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></div></blockquote></li></ul></li><li>Open a command line terminal and type:<blockquote><div><code>npm install -g tiddlywiki</code></div><div>If it fails with an error you may need to re-run the command as an administrator:</div><div><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</div></blockquote></li><li>Ensure TiddlyWiki is installed by typing:<blockquote><div><code>tiddlywiki --version</code></div></blockquote><ul><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.2.4". You may also see other debugging information reported.)</li></ul></li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <span class="doc-icon"><svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z" fill-rule="evenodd"></path></svg></span> <strong>save changes</strong> button in the sidebar, <strong>OR</strong></li><li><code>tiddlywiki mynewwiki --build index</code></li></ul></li></ol><p>The <code>-g</code> flag causes <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> to be installed globally. Without it, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> will only be available in the directory where you installed it.</p><p><div class="doc-icon-block"><div class="doc-block-icon"><svg class="tc-image-warning tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z" fill-rule="evenodd"></path></svg></div> If you are using Debian or Debian-based Linux and you are receiving a <code>node: command not found</code> error though node.js package is installed, you may need to create a symbolic link between <code>nodejs</code> and <code>node</code>. Consult your distro's manual and <code>whereis</code> to correctly create a link. See github <a class="tc-tiddlylink-external" href="http://github.com/Jermolene/TiddlyWiki5/issues/1434" rel="noopener noreferrer" target="_blank">issue 1434</a>. <br><br>Example Debian v8.0: <code>sudo ln -s /usr/bin/nodejs /usr/bin/node</code></div></p><p><br>
|
||||||
<div class="doc-icon-block"><div class="doc-block-icon"><svg class="tc-image-tip tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z" fill-rule="evenodd"></path></svg></div> You can also install prior versions like this: <br><code> npm install -g tiddlywiki@5.1.13</code></div>
|
<div class="doc-icon-block"><div class="doc-block-icon"><svg class="tc-image-tip tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z" fill-rule="evenodd"></path></svg></div> You can also install prior versions like this: <br><code> npm install -g tiddlywiki@5.1.13</code></div>
|
||||||
</p><h1 class="">Using <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p>TiddlyWiki5 includes a set of commands for use on the command line to perform an extensive set of operations based on <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolders</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlerFiles.html">TiddlerFiles</a>.</p><p>For example, the following command loads the tiddlers from a TiddlyWiki HTML file and then saves one of them in static HTML:</p><pre><code>tiddlywiki --verbose --load mywiki.html --rendertiddler ReadMe ./readme.html</code></pre><p>Running <code>tiddlywiki</code> from the command line boots the TiddlyWiki kernel, loads the core plugins and establishes an empty wiki store. It then sequentially processes the command line arguments from left to right. The arguments are separated with spaces.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves doc-from-version" href="https://tiddlywiki.com/static/Release%25205.1.20.html"><svg class="tc-image-warning tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z" fill-rule="evenodd"></path></svg> New in: 5.1.20</a> First, there can be zero or more plugin references identified by the prefix <code>+</code> for plugin names or <code>++</code> for a path to a plugin folder. These plugins are loaded in addition to any specified in the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a>.</p><p>The next argument is the optional path to the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a> to be loaded. If not present, then the current directory is used.</p><p>The commands and their individual arguments follow, each command being identified by the prefix <code>--</code>.</p><pre><code>tiddlywiki [+<pluginname> | ++<pluginpath>] [<wikipath>] [--<command> [<arg>[,<arg>]]]</code></pre><p>For example:</p><pre><code>tiddlywiki --version
|
</p><h1 class="">Using <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><p>TiddlyWiki5 includes a set of commands for use on the command line to perform an extensive set of operations based on <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolders</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlerFiles.html">TiddlerFiles</a>.</p><p>For example, the following command loads the tiddlers from a TiddlyWiki HTML file and then saves one of them in static HTML:</p><pre><code>tiddlywiki --verbose --load mywiki.html --rendertiddler ReadMe ./readme.html</code></pre><p>Running <code>tiddlywiki</code> from the command line boots the TiddlyWiki kernel, loads the core plugins and establishes an empty wiki store. It then sequentially processes the command line arguments from left to right. The arguments are separated with spaces.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves doc-from-version" href="https://tiddlywiki.com/static/Release%25205.1.20.html"><svg class="tc-image-warning tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt"><path d="M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z" fill-rule="evenodd"></path></svg> New in: 5.1.20</a> First, there can be zero or more plugin references identified by the prefix <code>+</code> for plugin names or <code>++</code> for a path to a plugin folder. These plugins are loaded in addition to any specified in the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a>.</p><p>The next argument is the optional path to the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWikiFolders.html">TiddlyWikiFolder</a> to be loaded. If not present, then the current directory is used.</p><p>The commands and their individual arguments follow, each command being identified by the prefix <code>--</code>.</p><pre><code>tiddlywiki [+<pluginname> | ++<pluginpath>] [<wikipath>] [--<command> [<arg>[,<arg>]]]</code></pre><p>For example:</p><pre><code>tiddlywiki --version
|
||||||
tiddlywiki +plugins/tiddlywiki/filesystem +plugins/tiddlywiki/tiddlyweb mywiki --listen
|
tiddlywiki +plugins/tiddlywiki/filesystem +plugins/tiddlywiki/tiddlyweb mywiki --listen
|
||||||
|
Loading…
Reference in New Issue
Block a user