@tokens-studio/graph-engine
Version:
An execution engine to handle Token Studios generators and resolvers
54 lines • 1.81 kB
JavaScript
import { Node } from '../../programmatic/node.js';
import { StringSchema } from '../../schemas/index.js';
export var NormalizationForm;
(function (NormalizationForm) {
NormalizationForm["NFD"] = "NFD";
NormalizationForm["NFC"] = "NFC";
NormalizationForm["NFKD"] = "NFKD";
NormalizationForm["NFKC"] = "NFKC";
})(NormalizationForm || (NormalizationForm = {}));
/**
* This node normalizes strings and can remove diacritical marks (accents)
*/
export default class NodeDefinition extends Node {
static title = 'Normalize';
static type = 'studio.tokens.string.normalize';
static description = 'Normalizes strings and optionally removes diacritical marks';
constructor(props) {
super(props);
this.addInput('string', {
type: StringSchema
});
this.addInput('form', {
type: {
...StringSchema,
enum: Object.values(NormalizationForm),
default: NormalizationForm.NFC
}
});
this.addInput('removeAccents', {
type: {
type: 'boolean',
title: 'Remove Accents',
description: 'Whether to remove diacritical marks',
default: true
}
});
this.addOutput('string', {
type: StringSchema
});
}
execute() {
const { string, form, removeAccents } = this.getAllInputs();
let result = string.normalize(form);
if (removeAccents) {
// Remove combining diacritical marks
result = result
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.normalize(form);
}
this.outputs.string.set(result);
}
}
//# sourceMappingURL=normalize.js.map