UNPKG

@tokens-studio/graph-engine

Version:

An execution engine to handle Token Studios generators and resolvers

54 lines 1.81 kB
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