mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-10-31 23:26:18 +00:00
Add explodePlugins=yes option to savewikifolder command (#7490)
* add option explodeplugins refactor Maintain Parameter Compatibility change let to var Refactoring the code add conditional judgment use === to avoid type-casting errors refactor use <path> [<name>=<value>] delete redundant code backward compatibility support easier to use improve code add documentation * Update Notes * Improve the code
This commit is contained in:
parent
158384867b
commit
28aef51855
@ -4,7 +4,7 @@ description: Saves a wiki to a new wiki folder
|
|||||||
<<.from-version "5.1.20">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:
|
<<.from-version "5.1.20">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:
|
||||||
|
|
||||||
```
|
```
|
||||||
--savewikifolder <wikifolderpath> [<filter>]
|
--savewikifolder <wikifolderpath> [<filter>] [ [<name>=<value>] ]*
|
||||||
```
|
```
|
||||||
|
|
||||||
* The target wiki folder must be empty or non-existent
|
* The target wiki folder must be empty or non-existent
|
||||||
@ -12,8 +12,19 @@ description: Saves a wiki to a new wiki folder
|
|||||||
* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file
|
* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file
|
||||||
* Custom plugins are unpacked into their own folder
|
* Custom plugins are unpacked into their own folder
|
||||||
|
|
||||||
|
The following options are supported:
|
||||||
|
|
||||||
|
* ''filter'': a filter expression that defines the tiddlers to include in the output.
|
||||||
|
* ''explodePlugins'': set to "no" to save plugins to the tiddlers directory of the target wiki folder, to suppress breaking plugins into their constituent shadow tiddlers (default is "yes").
|
||||||
|
|
||||||
A common usage is to convert a TiddlyWiki HTML file into a wiki folder:
|
A common usage is to convert a TiddlyWiki HTML file into a wiki folder:
|
||||||
|
|
||||||
```
|
```
|
||||||
tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder
|
tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Save the plugin to the tiddlers directory of the target wiki folder:
|
||||||
|
|
||||||
|
```
|
||||||
|
tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder explodePlugins=no
|
||||||
|
```
|
@ -5,7 +5,14 @@ module-type: command
|
|||||||
|
|
||||||
Command to save the current wiki as a wiki folder
|
Command to save the current wiki as a wiki folder
|
||||||
|
|
||||||
--savewikifolder <wikifolderpath> [<filter>]
|
--savewikifolder <wikifolderpath> [ [<name>=<value>] ]*
|
||||||
|
|
||||||
|
The following options are supported:
|
||||||
|
|
||||||
|
* ''filter'': a filter expression defining the tiddlers to be included in the output
|
||||||
|
* ''explodePlugins'': set to "no" to suppress exploding plugins into their constituent shadow tiddlers (defaults to "yes")
|
||||||
|
|
||||||
|
Supports backward compatibility with --savewikifolder <wikifolderpath> [<filter>] [ [<name>=<value>] ]*
|
||||||
|
|
||||||
\*/
|
\*/
|
||||||
(function(){
|
(function(){
|
||||||
@ -35,14 +42,28 @@ Command.prototype.execute = function() {
|
|||||||
if(this.params.length < 1) {
|
if(this.params.length < 1) {
|
||||||
return "Missing wiki folder path";
|
return "Missing wiki folder path";
|
||||||
}
|
}
|
||||||
var wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);
|
var regFilter = /^[a-zA-Z0-9\.\-_]+=/g, // dynamic parameters
|
||||||
|
namedParames,
|
||||||
|
tiddlerFilter,
|
||||||
|
options = {};
|
||||||
|
if (regFilter.test(this.params[1])) {
|
||||||
|
namedParames = this.commander.extractNamedParameters(this.params.slice(1));
|
||||||
|
tiddlerFilter = namedParames.filter || "[all[tiddlers]]";
|
||||||
|
} else {
|
||||||
|
namedParames = this.commander.extractNamedParameters(this.params.slice(2));
|
||||||
|
tiddlerFilter = this.params[1];
|
||||||
|
}
|
||||||
|
tiddlerFilter = tiddlerFilter || "[all[tiddlers]]";
|
||||||
|
options.explodePlugins = namedParames.explodePlugins || "yes";
|
||||||
|
var wikifoldermaker = new WikiFolderMaker(this.params[0],tiddlerFilter,this.commander,options);
|
||||||
return wikifoldermaker.save();
|
return wikifoldermaker.save();
|
||||||
};
|
};
|
||||||
|
|
||||||
function WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {
|
function WikiFolderMaker(wikiFolderPath,wikiFilter,commander,options) {
|
||||||
this.wikiFolderPath = wikiFolderPath;
|
this.wikiFolderPath = wikiFolderPath;
|
||||||
this.wikiFilter = wikiFilter || "[all[tiddlers]]";
|
this.wikiFilter = wikiFilter;
|
||||||
this.commander = commander;
|
this.commander = commander;
|
||||||
|
this.explodePlugins = options.explodePlugins;
|
||||||
this.wiki = commander.wiki;
|
this.wiki = commander.wiki;
|
||||||
this.savedPaths = []; // So that we can detect filename clashes
|
this.savedPaths = []; // So that we can detect filename clashes
|
||||||
}
|
}
|
||||||
@ -93,10 +114,13 @@ WikiFolderMaker.prototype.save = function() {
|
|||||||
self.log("Adding built-in plugin: " + libraryDetails.name);
|
self.log("Adding built-in plugin: " + libraryDetails.name);
|
||||||
newWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];
|
newWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];
|
||||||
$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);
|
$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);
|
||||||
} else {
|
} else if(self.explodePlugins !== "no") {
|
||||||
// A custom plugin
|
// A custom plugin
|
||||||
self.log("Processing custom plugin: " + title);
|
self.log("Processing custom plugin: " + title);
|
||||||
self.saveCustomPlugin(tiddler);
|
self.saveCustomPlugin(tiddler);
|
||||||
|
} else if(self.explodePlugins === "no") {
|
||||||
|
self.log("Processing custom plugin to tiddlders folder: " + title);
|
||||||
|
self.saveTiddler("tiddlers", tiddler);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Ordinary tiddler
|
// Ordinary tiddler
|
||||||
|
Loading…
Reference in New Issue
Block a user