update: 增加对正则 Flag 的匹配

This commit is contained in:
microud 2020-03-23 22:50:16 +08:00
parent 3d646548e3
commit f1a23bffed
3 changed files with 21 additions and 16 deletions

View File

@ -38,7 +38,7 @@ export default function useDiagram(context: ExtensionContext) {
const position = editor?.selection.active; const position = editor?.selection.active;
const line = editor?.document.lineAt(position?.line!); const line = editor?.document.lineAt(position?.line!);
const text = editor?.document.getText(new Range(line?.range.start!, line?.range.end!)); const text = editor?.document.getText(new Range(line?.range.start!, line?.range.end!));
const regex = /(?<!\\)\/(.+?)(?<!\\)\//g; const regex = /(?<!\\)\/(.+?)(?<!\\)\/([gmiyus]{0,6})/g;
const regexpList: string[] = []; // text?.match(/(?<!\\)\/(.+?)(?<!\\)\//g); const regexpList: string[] = []; // text?.match(/(?<!\\)\/(.+?)(?<!\\)\//g);
let matches; let matches;
while ((matches = regex.exec(text)) !== null) { while ((matches = regex.exec(text)) !== null) {
@ -46,20 +46,25 @@ export default function useDiagram(context: ExtensionContext) {
if (matches.index === regex.lastIndex) { if (matches.index === regex.lastIndex) {
regex.lastIndex++; regex.lastIndex++;
} }
console.log(matches);
regexpList.push(matches[1]); regexpList.push(matches[1]);
} }
const panel = window.createWebviewPanel( if (regexpList.length) {
'Diagram', const panel = window.createWebviewPanel(
'Diagram', 'Diagram',
ViewColumn.Two, 'Diagram',
{ ViewColumn.Two,
enableScripts: true, {
} enableScripts: true,
); }
panel.webview.html = getWebViewContent(context, 'out/diagram/index.html') );
.replace('{{ inject-script }}', `<script src="${getExtensionFileVscodeResource(context, 'out/diagram/diagram.js')}"></script>`); panel.webview.html = getWebViewContent(context, 'out/diagram/index.html')
panel.webview.postMessage({ .replace('{{ inject-script }}', `<script src="${getExtensionFileVscodeResource(context, 'out/diagram/diagram.js')}"></script>`);
regexpGroups: regexpList, panel.webview.postMessage({
}); regexpGroups: regexpList,
});
} else {
window.showWarningMessage('未找到正则表达式');
}
}); });
} }

View File

@ -2,7 +2,7 @@ import * as React from 'react';
import { parse, visualize, Raphael } from 'regulex-cjs'; import { parse, visualize, Raphael } from 'regulex-cjs';
import { useEffect } from 'react'; import { useEffect } from 'react';
interface IDiagramProps { interface IDiagramProps extends React.HTMLAttributes<HTMLDivElement> {
regexp: string | RegExp; regexp: string | RegExp;
} }

View File

@ -8,7 +8,7 @@ export const RegexpDiagramView: React.FC = () => {
return ( return (
<> <>
<div> <div>
{regexpGroups.map((regexp: string) => <RegExpDiagram regexp={new RegExp(regexp)} />)} {regexpGroups.map((regexp: string) => <RegExpDiagram className="regexp-diagram" regexp={new RegExp(regexp)} />)}
</div> </div>
</> </>
); );