mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-09-30 07:50:47 +00:00
98 lines
2.5 KiB
JavaScript
98 lines
2.5 KiB
JavaScript
|
/*\
|
||
|
title: $:/macros/classic/macroadapter.js
|
||
|
type: application/javascript
|
||
|
module-type: module
|
||
|
\*/
|
||
|
(function(){
|
||
|
|
||
|
/*jslint node: true, browser: true */
|
||
|
/*global $tw: false */
|
||
|
"use strict";
|
||
|
/*
|
||
|
Information about this module:
|
||
|
rename macros and
|
||
|
re-jig macro params from tw2 to tw5 style
|
||
|
new macros created as a result of adapting tw2 should be
|
||
|
prepended "__system" to distinguish them from the actual used name
|
||
|
*/
|
||
|
var sliceSeparator = "::";
|
||
|
var sectionSeparator = "##";
|
||
|
|
||
|
function getsectionname(title) {
|
||
|
if(!title)
|
||
|
return "";
|
||
|
var pos = title.indexOf(sectionSeparator);
|
||
|
if(pos != -1) {
|
||
|
return title.substr(pos + sectionSeparator.length);
|
||
|
}
|
||
|
return "";
|
||
|
}
|
||
|
function getslicename(title) {
|
||
|
if(!title)
|
||
|
return "";
|
||
|
var pos = title.indexOf(sliceSeparator);
|
||
|
if(pos != -1) {
|
||
|
return title.substr(pos + sliceSeparator.length);
|
||
|
}
|
||
|
return "";
|
||
|
};
|
||
|
function gettiddlername(title) {
|
||
|
if(!title)
|
||
|
return "";
|
||
|
var pos = title.indexOf(sectionSeparator);
|
||
|
|
||
|
if(pos != -1) {
|
||
|
return title.substr(0,pos);
|
||
|
}
|
||
|
pos = title.indexOf(sliceSeparator);
|
||
|
if(pos != -1) {
|
||
|
return title.substr(0,pos);
|
||
|
}
|
||
|
return title;
|
||
|
}
|
||
|
|
||
|
var parserparams = function(paramString) {
|
||
|
var params = [],
|
||
|
reParam = /\s*(?:([A-Za-z0-9\-_]+)\s*:)?(?:\s*(?:"([^"]*)"|'([^']*)'|\[\[([^\]]*)\]\]|([^"'\s]+)))/mg,
|
||
|
paramMatch = reParam.exec(paramString);
|
||
|
while(paramMatch) {
|
||
|
// Process this parameter
|
||
|
var paramInfo = {
|
||
|
value: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]
|
||
|
};
|
||
|
if(paramMatch[1]) {
|
||
|
paramInfo.name = paramMatch[1];
|
||
|
}
|
||
|
params.push(paramInfo);
|
||
|
// Find the next match
|
||
|
paramMatch = reParam.exec(paramString);
|
||
|
}
|
||
|
return params;
|
||
|
}
|
||
|
var tabshandler = function(paramstring) {
|
||
|
var params = parserparams(paramstring);
|
||
|
var cookie = params[0].value;
|
||
|
var numTabs = (params.length-1)/3;
|
||
|
var t;
|
||
|
var tabslist = "";
|
||
|
var labelarray = {};
|
||
|
var promptarray = {};
|
||
|
for(t=0; t<numTabs; t++) {
|
||
|
var contentName = params[t*3+3].value;
|
||
|
tabslist = tabslist+" " + contentName;
|
||
|
labelarray[contentName] = params[t*3+1].value;
|
||
|
promptarray[contentName] = params[t*3+2].value;
|
||
|
}
|
||
|
//Create a list of names (tiddlers, tiddler/sections, tiddler/slices), and create maps from name -> label and name -> prompt
|
||
|
//Use json to implement maps
|
||
|
return "'"+tabslist +"' '"+JSON.stringify(promptarray)+"' '"+JSON.stringify(labelarray)+"' '"+cookie+"'";
|
||
|
};
|
||
|
var namedapter = {tabs:'__system_tabs'};
|
||
|
var paramadapter = {
|
||
|
tabs: tabshandler
|
||
|
}
|
||
|
exports.name = 'macroadapter';
|
||
|
exports.namedapter = namedapter;
|
||
|
exports.paramadapter = paramadapter;
|
||
|
})();
|