From ca32d3daff79caef774078573bd8441bcf0f39b9 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Mon, 17 May 2021 20:32:14 +0200 Subject: [PATCH] Update AND detection for chrome extension --- .../scripts/boolean-algebra/outer.js | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/tools/discrete-extraction-tools/scripts/boolean-algebra/outer.js b/tools/discrete-extraction-tools/scripts/boolean-algebra/outer.js index 3da63fe..124ca4e 100644 --- a/tools/discrete-extraction-tools/scripts/boolean-algebra/outer.js +++ b/tools/discrete-extraction-tools/scripts/boolean-algebra/outer.js @@ -89,11 +89,23 @@ const whileFindReplace = (pattern, replacement, text) => { const convertToPropositionalLogic = latex => { - // replace neg - latex = replaceParens(['\\\\overline{', '}'], ['{', '}'], ['\\neg ', ''], latex); - // replace and - latex = whileFindReplace(/\b(?!\\cup|\\cap|\\text|\\quad)([A-Z0-9]|\\overline{.+})([A-Z0-9]|\\overline{.+?})(?=[\s\+])/, '($1 \\wedge $2)', latex); + const ignoreCommands = ['(?<=[\\s\\+])', '(?=[\\s\\+])'] + const char = '(?!\\\\text|&\\\\quad&|\\s|\\+)([A-Z0-9]|\\\\overline{.+?})'; + + const connectedChars2 = RegExp(`${ignoreCommands[0]}${char.repeat(2)}${ignoreCommands[1]}`) + const connectedChars3 = RegExp(`${ignoreCommands[0]}${char.repeat(3)}${ignoreCommands[1]}`) + const connectedChars4 = RegExp(`${ignoreCommands[0]}${char.repeat(4)}${ignoreCommands[1]}`) + const connectedChars5 = RegExp(`${ignoreCommands[0]}${char.repeat(5)}${ignoreCommands[1]}`) + + latex = whileFindReplace(connectedChars5, '($1 \\wedge $2 \\wedge $3 \\wedge $4 \\wedge $5)', latex); + latex = whileFindReplace(connectedChars4, '($1 \\wedge $2 \\wedge $3 \\wedge $4)', latex); + latex = whileFindReplace(connectedChars3, '($1 \\wedge $2 \\wedge $3)', latex); + latex = whileFindReplace(connectedChars2, '($1 \\wedge $2)', latex); + + // replace neg + latex = replaceParens(['\\\\overline{', '}'], ['{', '}'], ['\\neg (', ')'], latex); + latex = whileFindReplace(/\\neg \(((?:\\neg )*[A-Za-z])\)/, '\\neg $1', latex); // // replace or latex = latex.replace(/\+/g, ' \\vee '); @@ -104,7 +116,18 @@ const convertToPropositionalLogic = latex => { const convertToSetTheory = latex => { // replace and - latex = whileFindReplace(/\b(?!\\cup|\\cap|\\text|\\quad)([A-Z0-9]|\\overline{.+})([A-Z0-9]|\\overline{.+?})(?=[\s\+])/, '($1 \\cap $2)', latex); + const ignoreCommands = ['(?<=[\\s\\+])', '(?=[\\s\\+])'] + const char = '(?!\\\\text|&\\\\quad&|\\s|\\+)([A-Z0-9]|\\\\overline{.+?})'; + + const connectedChars2 = RegExp(`${ignoreCommands[0]}${char.repeat(2)}${ignoreCommands[1]}`) + const connectedChars3 = RegExp(`${ignoreCommands[0]}${char.repeat(3)}${ignoreCommands[1]}`) + const connectedChars4 = RegExp(`${ignoreCommands[0]}${char.repeat(4)}${ignoreCommands[1]}`) + const connectedChars5 = RegExp(`${ignoreCommands[0]}${char.repeat(5)}${ignoreCommands[1]}`) + + latex = whileFindReplace(connectedChars5, '($1 \\cap $2 \\cap $3 \\cap $4 \\cap $5)', latex); + latex = whileFindReplace(connectedChars4, '($1 \\cap $2 \\cap $3 \\cap $4)', latex); + latex = whileFindReplace(connectedChars3, '($1 \\cap $2 \\cap $3)', latex); + latex = whileFindReplace(connectedChars2, '($1 \\cap $2)', latex); // // replace or latex = latex.replace(/\+/g, ' \\cup ');