diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-06-11 16:35:30 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-06-11 16:35:30 -0300 |
| commit | cc1a01870e287a756633e43b6f6d437434c4af32 (patch) | |
| tree | c9963cdd1f53764b90abe6bfa93098f219c30b42 | |
| parent | 52d3cbdc331c4d9ebf6d3f67d70a985b874818c0 (diff) | |
validators, yaml: URL OK!!
| -rw-r--r-- | src/data/yaml.js | 12 | ||||
| -rw-r--r-- | src/validators.js | 33 |
2 files changed, 42 insertions, 3 deletions
diff --git a/src/data/yaml.js b/src/data/yaml.js index 15d7b0ba..f8591311 100644 --- a/src/data/yaml.js +++ b/src/data/yaml.js @@ -751,12 +751,22 @@ export function parseURLs(entries) { if (typeof item !== 'string') return item; - const match = item.match(extractAccentRegex); + let bypassValidation, restOfItem; + if (item.endsWith(' (URL OK!!)')) { + bypassValidation = true; + restOfItem = item.slice(0, -' (URL OK!!)'.length); + } else { + bypassValidation = false; + restOfItem = item; + } + + const match = restOfItem.match(extractAccentRegex); if (!match) return item; return { url: match.groups.main, annotation: match.groups.accent, + bypassValidation, }; }); } diff --git a/src/validators.js b/src/validators.js index 28f3cef7..8f32e669 100644 --- a/src/validators.js +++ b/src/validators.js @@ -839,10 +839,39 @@ export const validateURLEntry = (isURL) => }); export const isURLEntry = - validateURLEntry(isURL); + validateProperties({ + url: isURL, + annotation: optional(isStringNonEmpty), + }); export const isCuratedURLEntry = - validateURLEntry(isCuratedURL); + (() => { + const commonProperties = { + annotation: optional(isStringNonEmpty), + }; + + const pickyValidator = + validateProperties({ + url: isCuratedURL, + ...commonProperties, + bypassValidation: optional(is(false)), + }); + + const niceysValidator = + validateProperties({ + url: isURL, + ...commonProperties, + bypassValidation: is(true), + }); + + return value => { + if (typeof value === 'object' && value.bypassValidation) { + return niceysValidator(value); + } else { + return pickyValidator(value); + } + }; + })(); export const isURLList = validateArrayItems(isURLEntry); |