irongit

A better version of regex 101

ugly workaround with timeout

huncholanehuncholaneauthored
parent bc690b4commit 99370542f7fb23fac8d85a78486dd34a1a15cf3aBrowse files

1 file changed, +21 -6

+21-6src/App.jsx
@@ -14,7 +14,7 @@ const buildToRegex = (build) => {
1414 };
1515
1616 const buildToRegexRecursion = (build, re) => {
17- if (build.length === 0) return re;
17+ if (!build?.length) return re;
1818 const val = build.shift();
1919 re += `(?P<${val.name}>${val.regex}`;
2020 if (val.children) re += buildToRegexRecursion(val.children, "");
@@ -79,9 +79,12 @@ function App() {
7979 valid: true,
8080 build: [],
8181 });
82- const regexInputSpan = Array.from(document.querySelectorAll("span")).filter(
83- (span) => span.getAttribute("role") === "presentation"
84- )[0];
82+ const regexInput = document.querySelector(
83+ "#regex-app > div > div.QtZzw > div > div.AUc0W > div.rjodX > div.cO83v > div.h9z_E.T886D > div > div > div:nth-child(1) > textarea"
84+ );
85+ const regexValue = document.querySelector(
86+ "#regex-app > div > div.QtZzw > div > div.AUc0W > div.rjodX > div.cO83v > div.h9z_E.T886D > div > div > div.CodeMirror-scroll > div.CodeMirror-sizer > div > div > div > div.CodeMirror-code"
87+ );
8588
8689 return (
8790 <div>
@@ -113,8 +116,20 @@ function App() {
113116 state.build = [];
114117 setState({ ...state });
115118 const parseBuild = parseBuilder(e.target.value);
116- regexInputSpan.focus();
117- regexInputSpan.dispatchEvent(new Event("keydown", { key: "a" }));
119+ if (!parseBuild) setState({ valid: false });
120+ else setState({ valid: true });
121+ //regexInput.focus();
122+ const length = regexValue.textContent.length;
123+ for (let i = 0; i < length; i++)
124+ regexInput.dispatchEvent(
125+ new KeyboardEvent("keydown", {
126+ key: "Backspace",
127+ code: "Backspace",
128+ keyCode: 8,
129+ })
130+ );
131+ regexInput.value = parseBuild;
132+ setTimeout(() => e.target.focus(), 100);
118133 }}
119134 ></textarea>
120135 </div>