From e9fa5174944a8fd3f917173d28e4f6aedea97354 Mon Sep 17 00:00:00 2001 From: Nicholas Jitkoff Date: Sun, 31 Jul 2022 13:16:36 -0700 Subject: [PATCH] Guard against safari's lack of lookbehind --- docs/render/recipe.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/render/recipe.js b/docs/render/recipe.js index 30319fa..50b8323 100644 --- a/docs/render/recipe.js +++ b/docs/render/recipe.js @@ -442,22 +442,25 @@ function render() { } function stepsFromText(text) { - let steps = [] - let components = text.split(/(?<=[\.\!\?]|[\.\!\?]\)|\))\s+(?!\()/); - - let append = false; - while (components.length) { - let step = components.shift() - if (append) { - steps.push(steps.pop() + " " + step) - } else { - steps.push(step); + try { + let steps = [] + let components = text.split(new RegExp("(?<=[\.\!\?]|[\.\!\?]\)|\))\s+(?!\()")); + + let append = false; + while (components.length) { + let step = components.shift() + if (append) { + steps.push(steps.pop() + " " + step) + } else { + steps.push(step); + } + if (step.indexOf("(") >= 0) { append = true; } + if (step.includes(")")) { append = false; } } - if (step.indexOf("(") >= 0) { append = true; } - if (step.includes(")")) { append = false; } + return steps; + } catch (e) { + return text.replace(/(\.\)? )+/g,"$1\n").split("\n") } - - return steps; } function flattenInstructions(instruction) { if (instruction.itemListElement) {