1
0
Fork 0
mirror of https://github.com/marty-oehme/scripts.git synced 2024-12-22 07:58:08 +00:00

Added tag marker setting and multi-word tags

This commit is contained in:
Maboroshy 2017-10-04 21:55:16 +03:00 committed by GitHub
parent f1350e10fb
commit 9694713e35

View file

@ -4,8 +4,21 @@ import QOwnNotesTypes 1.0
/** /**
* This script handles tagging in a note for tags in the note text like: * This script handles tagging in a note for tags in the note text like:
* @tag1 @tag2 @tag3 * @tag1 @tag2 @tag3
* @tag_one would tag the note with "tag one" tag.
*/ */
Script { Script {
property string tagMarker
property variant settingsVariables: [
{
"identifier": "tagMarker",
"name": "Tag word marker",
"description": "A word that starts with this characters is recognized as tag\n",
"type": "string",
"default": "@",
}
]
/** /**
* Handles note tagging for a note * Handles note tagging for a note
* *
@ -20,7 +33,7 @@ Script {
*/ */
function noteTaggingHook(note, action, tagName, newTagName) { function noteTaggingHook(note, action, tagName, newTagName) {
var noteText = note.noteText; var noteText = note.noteText;
var tagRegExp = RegExp("\\B@" + escapeRegExp(tagName) + "\\b"); var tagRegExp = RegExp("\\B%1($|\\s|\\b)".arg(escapeRegExp(tagMarker + tagName).replace(" ", "_")));
switch (action) { switch (action) {
// adds the tag "tagName" to the note // adds the tag "tagName" to the note
@ -33,7 +46,7 @@ Script {
} }
// add the tag at the end of the note // add the tag at the end of the note
noteText += "\n@" + tagName; noteText += "\n" + tagMarker + tagName.replace(" ", "_");
return noteText; return noteText;
break; break;
@ -49,17 +62,17 @@ Script {
// the new note text has to be returned so that the note can be updated // the new note text has to be returned so that the note can be updated
// returning an empty string indicates that nothing has to be changed // returning an empty string indicates that nothing has to be changed
case "rename": case "rename":
noteText = noteText.replace(tagRegExp, "@" + newTagName); noteText.replace(tagRegExp, tagMarker + newTagName.replace(" ", "_"));
return noteText; return noteText;
break; break;
// returns a list of all tag names of the note // returns a list of all tag names of the note
case "list": case "list":
var re = new RegExp("\\B@([^\\s,]+)", "gi"), var re = new RegExp("\\B%1([^\\s,;]+)".arg(escapeRegExp(tagMarker)), "gi"),
result, tagNameList = []; result, tagNameList = [];
while ((result = re.exec(noteText)) !== null) { while ((result = re.exec(noteText)) !== null) {
var tagName = result[1]; var tagName = result[1].replace("_", " ");
// add the tag if it wasn't in the list // add the tag if it wasn't in the list
if (tagNameList.indexOf(tagName) == -1) { if (tagNameList.indexOf(tagName) == -1) {