From b570fcb5604ade91a5e302c061ef03918c67c512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Sat, 31 Oct 2020 23:35:30 +0100 Subject: [PATCH] add fromString method --- packages/core/src/utils/fromString.ts | 15 +++++++++++++++ .../utils/injectExtensionAttributesToParseRule.ts | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/core/src/utils/fromString.ts diff --git a/packages/core/src/utils/fromString.ts b/packages/core/src/utils/fromString.ts new file mode 100644 index 00000000..5371abcc --- /dev/null +++ b/packages/core/src/utils/fromString.ts @@ -0,0 +1,15 @@ +export default function fromString(value: any) { + if (value.match(/^\d*(\.\d+)?$/)) { + return Number(value) + } + + if (value === 'true') { + return true + } + + if (value === 'false') { + return false + } + + return value +} diff --git a/packages/core/src/utils/injectExtensionAttributesToParseRule.ts b/packages/core/src/utils/injectExtensionAttributesToParseRule.ts index 0cd42dd6..185d7098 100644 --- a/packages/core/src/utils/injectExtensionAttributesToParseRule.ts +++ b/packages/core/src/utils/injectExtensionAttributesToParseRule.ts @@ -1,5 +1,6 @@ import { ParseRule } from 'prosemirror-model' import { ExtensionAttribute } from '../types' +import fromString from './fromString' /** * This function merges extension attributes into parserule attributes (`attrs` or `getAttrs`). @@ -29,7 +30,7 @@ export default function injectExtensionAttributesToParseRule(parseRule: ParseRul const attributes = item.attribute.parseHTML ? item.attribute.parseHTML(node as HTMLElement) || {} : { - [item.name]: (node as HTMLElement).getAttribute(item.name), + [item.name]: fromString((node as HTMLElement).getAttribute(item.name)), } const filteredAttributes = Object.fromEntries(Object.entries(attributes)