UNPKG

magicpatch

Version:

Adds IPython / Jupyter magic commands to IJavascript

42 lines (39 loc) 1.59 kB
// TODO: this is getting absurd, consider switching to peg.js const optionalWhitespace = "\\s*"; const startOfString = `^${optionalWhitespace}`; const optionalDeclKeywordRegexp = "(?:(?<declKeyword>var|let|const)\\b)?"; const variableName = "(?<varName>\\w+)"; const assignmentOperator = "(?<assignmentOperator>=)"; const optionalAssignmentStmt = `(?<assignmentStmt>${optionalWhitespace + optionalDeclKeywordRegexp + optionalWhitespace + variableName + optionalWhitespace + assignmentOperator + optionalWhitespace})?`; const docComparatorFront = "(?<getDocFront>\\?{1,2})?"; // eslint-disable-next-line jsdoc/require-jsdoc const optionalMatchNamedMagicSymbol = (magicSymbol) => `(?<magicSymbol>${magicSymbol})?`; // eslint-disable-next-line jsdoc/require-jsdoc const matchNamedMagicSymbol = (magicSymbol) => `(?<magicSymbol>${magicSymbol})`; // eslint-disable-next-line jsdoc/require-jsdoc const matchNamedMagicString = (magicString) => `(?<cmdName>${magicString})`; const docComparatorBack = "(?<getDocBack>\\?{1,2})?( |\\n|$)"; const anyWord = "\\w+"; const anyMagicSymbol = matchNamedMagicSymbol("\\W+"); const anyMagic = matchNamedMagicString("\\w+"); const endOfWord = "\\b"; const parserRegExps = { startOfString, optionalWhitespace, optionalDeclKeywordRegexp, variableName, assignmentOperator, optionalAssignmentStmt, docComparatorFront, optionalMatchNamedMagicSymbol, matchNamedMagicSymbol, matchNamedMagicString, docComparatorBack, anyWord, anyMagicSymbol, anyMagic, endOfWord, }; module.exports = { parserRegExps, };