diff options
-rw-r--r-- | src/util/wiki-data.js | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/util/wiki-data.js b/src/util/wiki-data.js index 8c318d02..aa7f1f56 100644 --- a/src/util/wiki-data.js +++ b/src/util/wiki-data.js @@ -89,8 +89,12 @@ export function getKebabCase(name) { // This regular expression *doesn't* match bodies, which will need to be parsed // out of the original string based on the indices matched using this. // + +const dateRegex = groupName => + String.raw`(?<${groupName}>[a-zA-Z]+ [0-9]{1,2}, [0-9]{4,4}|[0-9]{1,2} [^,]*[0-9]{4,4}|[0-9]{1,4}[-/][0-9]{1,4}[-/][0-9]{1,4})`; + const commentaryRegexRaw = - String.raw`^<i>(?<artistReferences>.+?)(?:\|(?<artistDisplayText>.+))?:<\/i>(?: \((?<annotation>(?:.*?(?=,|\)[^)]*$))*?)(?:,? ?(?<date>[a-zA-Z]+ [0-9]{1,2}, [0-9]{4,4}|[0-9]{1,2} [^,]*[0-9]{4,4}|[0-9]{1,4}[-/][0-9]{1,4}[-/][0-9]{1,4}))?(?: (?<accessKind>captured|accessed) (?<accessDate>[a-zA-Z]+ [0-9]{1,2}, [0-9]{4,4}|[0-9]{1,2} [^,]*[0-9]{4,4}|[0-9]{1,4}[-/][0-9]{1,4}[-/][0-9]{1,4}))?\))?`; + String.raw`^<i>(?<artistReferences>.+?)(?:\|(?<artistDisplayText>.+))?:<\/i>(?: \((?<annotation>(?:.*?(?=,|\)[^)]*$))*?)(?:,? ?${dateRegex('date')})?(?: (?<accessKind>captured|accessed) ${dateRegex('accessDate')})?\))?`; export const commentaryRegexCaseInsensitive = new RegExp(commentaryRegexRaw, 'gmi'); export const commentaryRegexCaseSensitive = |