mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
51 lines
994 B
JavaScript
51 lines
994 B
JavaScript
"use strict"
|
|
|
|
function formatAttrForSearch(attr, searchWithValue) {
|
|
let searchStr = '';
|
|
|
|
if (attr.type === 'label') {
|
|
searchStr += '#';
|
|
}
|
|
else if (attr.type === 'relation') {
|
|
searchStr += '~';
|
|
}
|
|
else {
|
|
throw new Error(`Unrecognized attribute type ${JSON.stringify(attr)}`);
|
|
}
|
|
|
|
searchStr += attr.name;
|
|
|
|
if (searchWithValue && attr.value) {
|
|
if (attr.type === 'relation') {
|
|
searchStr += ".noteId";
|
|
}
|
|
|
|
searchStr += '=';
|
|
searchStr += formatValue(attr.value);
|
|
}
|
|
|
|
return searchStr;
|
|
}
|
|
|
|
function formatValue(val) {
|
|
if (!/[^\w_]/.test(val)) {
|
|
return val;
|
|
}
|
|
else if (!val.includes('"')) {
|
|
return `"${val}"`;
|
|
}
|
|
else if (!val.includes("'")) {
|
|
return `'${val}'`;
|
|
}
|
|
else if (!val.includes("`")) {
|
|
return `\`${val}\``;
|
|
}
|
|
else {
|
|
return `"${val.replace(/"/g, '\\"')}"`;
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
formatAttrForSearch
|
|
}
|