A better version of regex 101
insanely buggy
2 files changed, +6 -5
+0-1rec.js
| @@ -46,4 +46,3 @@ const buildToRegexRecursion = (build, re) => { | ||
| 46 | 46 | const d = parseBuilder(sample); |
| 47 | 47 | |
| 48 | 48 | const b = buildToRegex(d); |
| 49 | -console.log(b); |
+6-4src/builder.js
| @@ -44,18 +44,20 @@ const buildToRegex = (build, vars) => { | ||
| 44 | 44 | const buildToRegexRecursion = (build, re, vars) => { |
| 45 | 45 | if (!build?.length) return re; |
| 46 | 46 | const val = build.shift(); |
| 47 | - if (Object.keys(vars).includes(val.regex)) val.regex = vars[val.regex]; | |
| 47 | + console.log(vars); | |
| 48 | + if (vars && Object.keys(vars).includes(val.regex)) | |
| 49 | + val.regex = vars[val.regex]; | |
| 48 | 50 | if (val.type === ":") { |
| 49 | 51 | if (val.name) re += `(?P<${val.name}>${val.regex}`; |
| 50 | 52 | else re += `(?:${val.regex}`; |
| 51 | - if (val.children) re += buildToRegexRecursion(val.children, ""); | |
| 53 | + if (val.children) re += buildToRegexRecursion(val.children, "", vars); | |
| 52 | 54 | re += `)${val.optional}`; |
| 53 | 55 | } else if (val.type === ">") { |
| 54 | 56 | re += val.regex; |
| 55 | - if (val.children) re += buildToRegexRecursion(val.children, ""); | |
| 57 | + if (val.children) re += buildToRegexRecursion(val.children, "", vars); | |
| 56 | 58 | } |
| 57 | 59 | |
| 58 | - return buildToRegexRecursion(build, re); | |
| 60 | + return buildToRegexRecursion(build, re, vars); | |
| 59 | 61 | }; |
| 60 | 62 | |
| 61 | 63 | export default parseBuilder; |