mirror of
https://github.com/marty-oehme/scripts.git
synced 2024-12-22 07:58:08 +00:00
Extend insert-toc to generate links to sections
This commit is contained in:
parent
d3461faa95
commit
45fd167d0b
2 changed files with 35 additions and 13 deletions
|
@ -2,7 +2,7 @@
|
|||
"name": "Insert Table of Contents (TOC)",
|
||||
"identifier": "insert-toc",
|
||||
"script": "insert-toc.qml",
|
||||
"authors": ["@flopp"],
|
||||
"authors": ["@flopp", "@toindev"],
|
||||
"platforms": ["linux", "macos", "windows"],
|
||||
"version": "0.0.1",
|
||||
"minAppVersion": "17.06.2",
|
||||
|
|
|
@ -6,6 +6,7 @@ import QOwnNotesTypes 1.0
|
|||
|
||||
Script {
|
||||
property string tocTitle
|
||||
property bool tocLinks
|
||||
|
||||
property variant settingsVariables: [
|
||||
{
|
||||
|
@ -15,6 +16,13 @@ Script {
|
|||
"type": "string",
|
||||
"default": "Table of Contents",
|
||||
},
|
||||
{
|
||||
"identifier": "tocLinks",
|
||||
"name": "Generate links to sections",
|
||||
"description": "",
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
},
|
||||
]
|
||||
|
||||
function init() {
|
||||
|
@ -28,13 +36,21 @@ Script {
|
|||
if (match) {
|
||||
toc.push({
|
||||
"depth": match[1].length,
|
||||
"title": match[2].trim()
|
||||
"title": match[2].trim(),
|
||||
"link": extractLink(match[2].trim())
|
||||
});
|
||||
}
|
||||
}
|
||||
return toc;
|
||||
}
|
||||
|
||||
function extractLink(title) {
|
||||
var lowercase = title.toLowerCase()
|
||||
var spaceReplaced = lowercase.replace(/ /g, "-")
|
||||
var invalidCharsRemoved = spaceReplaced.replace(/[^A-Za-zÀ-ÿ-_]/g, "")
|
||||
return invalidCharsRemoved;
|
||||
}
|
||||
|
||||
function normalizeDepths(toc) {
|
||||
var min = -1;
|
||||
for (var n = 0; n < toc.length; n++) {
|
||||
|
@ -73,13 +89,19 @@ Script {
|
|||
for (var n = 0; n < toc.length; n++) {
|
||||
var depth = toc[n].depth;
|
||||
var title = toc[n].title;
|
||||
var link = toc[n].link;
|
||||
if (depth > lastDepth) {
|
||||
indexByDepth[depth] = 1;
|
||||
} else {
|
||||
indexByDepth[depth] += 1;
|
||||
}
|
||||
lastDepth = depth;
|
||||
script.noteTextEditWrite(indent(depth) + indexByDepth[depth] + ". " + title + "\n");
|
||||
|
||||
if (tocLinks) {
|
||||
script.noteTextEditWrite(indent(depth) + indexByDepth[depth] + ". [" + title + "](#" + link + ")\n");
|
||||
} else {
|
||||
script.noteTextEditWrite(indent(depth) + indexByDepth[depth] + ". " + title + "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue