mirror of
https://github.com/zadam/trilium.git
synced 2025-11-13 08:45:50 +01:00
server-ts: Port battribute
This commit is contained in:
49
src/services/promoted_attribute_definition_parser.ts
Normal file
49
src/services/promoted_attribute_definition_parser.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
interface DefinitionObject {
|
||||
isPromoted: boolean;
|
||||
labelType: string;
|
||||
multiplicity: string;
|
||||
numberPrecision: number;
|
||||
promotedAlias: string;
|
||||
inverseRelation: string;
|
||||
}
|
||||
|
||||
function parse(value: string): DefinitionObject {
|
||||
const tokens = value.split(',').map(t => t.trim());
|
||||
const defObj: Partial<DefinitionObject> = {};
|
||||
|
||||
for (const token of tokens) {
|
||||
if (token === 'promoted') {
|
||||
defObj.isPromoted = true;
|
||||
}
|
||||
else if (['text', 'number', 'boolean', 'date', 'datetime', 'url'].includes(token)) {
|
||||
defObj.labelType = token;
|
||||
}
|
||||
else if (['single', 'multi'].includes(token)) {
|
||||
defObj.multiplicity = token;
|
||||
}
|
||||
else if (token.startsWith('precision')) {
|
||||
const chunks = token.split('=');
|
||||
|
||||
defObj.numberPrecision = parseInt(chunks[1]);
|
||||
}
|
||||
else if (token.startsWith('alias')) {
|
||||
const chunks = token.split('=');
|
||||
|
||||
defObj.promotedAlias = chunks[1];
|
||||
}
|
||||
else if (token.startsWith('inverse')) {
|
||||
const chunks = token.split('=');
|
||||
|
||||
defObj.inverseRelation = chunks[1].replace(/[^\p{L}\p{N}_:]/ug, "")
|
||||
}
|
||||
else {
|
||||
console.log("Unrecognized attribute definition token:", token);
|
||||
}
|
||||
}
|
||||
|
||||
return defObj as DefinitionObject;
|
||||
}
|
||||
|
||||
export = {
|
||||
parse
|
||||
};
|
||||
Reference in New Issue
Block a user