mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-07 03:12:33 +01:00
426395aa03
Regex-based static network filters are those most likely to cause performance degradation, and as such the best guard against undue performance degradation caused by regex-based filters is the ability to extract valid and good tokens from regex patterns. This commit introduces a complete regex parser so that the static network filtering engine can now safely extract tokens regardless of the complexity of the regex pattern. The regex parser is a library imported from: https://github.com/foo123/RegexAnalyzer The syntax highlighter adds an underline to regex-based filters as a visual aid to filter authors so as to avoid mistakenly creating regex-based filters. This commit further colors the underline as a warning when a regex-based filter is found to be untokenizable. Filter list authors are invited to spot these untokenizable regex-based filters in their lists to verify that no mistake were made for those filters, causing them to be untokenizabke. For example, what appears to be a mistake: /^https?:\/\/.*\/sw.js?.[a-zA-Z0-9%]{50,}/ Though the mistake is minor, the regex-based filter above is untokenizable as a result, and become tokenizable when the `.` is properly escaped: /^https?:\/\/.*\/sw\.js?.[a-zA-Z0-9%]{50,}/ Filter list authors can use this search expression in the asset viewer to find instances of regex-based filters: /^(@@)?\/[^\n]+\/(\$|$)/
54 lines
2.2 KiB
HTML
54 lines
2.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title data-i18n="assetViewerPageName"></title>
|
|
<link rel="stylesheet" href="lib/codemirror/lib/codemirror.css">
|
|
<link rel="stylesheet" href="lib/codemirror/addon/fold/foldgutter.css">
|
|
<link rel="stylesheet" href="lib/codemirror/addon/search/matchesonscrollbar.css">
|
|
<link rel="stylesheet" type="text/css" href="css/themes/default.css">
|
|
<link rel="stylesheet" href="css/common.css">
|
|
<link rel="stylesheet" href="css/fa-icons.css">
|
|
<link rel="stylesheet" href="css/codemirror.css">
|
|
<link rel="stylesheet" href="css/asset-viewer.css">
|
|
<link rel="shortcut icon" type="image/png" href="img/icon_32.png"/>
|
|
</head>
|
|
<body class="loading">
|
|
|
|
<div id="subscribe" class="hide">
|
|
<span class="logo"><img data-i18n-title="extName" src="img/ublock.svg"></span>
|
|
<span id="subscribePrompt"><span></span><a></a></span>
|
|
<span class="fa-icon">spinner</span>
|
|
<button id="subscribeButton" type="button" data-i18n="subscribeButton"></button>
|
|
</div>
|
|
|
|
<div id="content" class="codeMirrorContainer codeMirrorBreakAll"></div>
|
|
|
|
<script src="lib/codemirror/lib/codemirror.js"></script>
|
|
<script src="lib/codemirror/addon/display/panel.js"></script>
|
|
<script src="lib/codemirror/addon/edit/matchbrackets.js"></script>
|
|
<script src="lib/codemirror/addon/fold/foldcode.js"></script>
|
|
<script src="lib/codemirror/addon/fold/foldgutter.js"></script>
|
|
<script src="lib/codemirror/addon/scroll/annotatescrollbar.js"></script>
|
|
<script src="lib/codemirror/addon/search/searchcursor.js"></script>
|
|
<script src="lib/codemirror/addon/selection/active-line.js"></script>
|
|
<script src="lib/regexanalyzer/regex.js"></script>
|
|
|
|
<script src="js/codemirror/search.js"></script>
|
|
<script src="js/codemirror/search-thread.js"></script>
|
|
<script src="js/codemirror/ubo-static-filtering.js"></script>
|
|
|
|
<script src="js/fa-icons.js"></script>
|
|
<script src="js/vapi.js"></script>
|
|
<script src="js/vapi-common.js"></script>
|
|
<script src="js/vapi-client.js"></script>
|
|
<script src="js/udom.js"></script>
|
|
<script src="js/i18n.js"></script>
|
|
<script src="js/dashboard-common.js"></script>
|
|
<script src="js/static-filtering-parser.js"></script>
|
|
<script src="js/asset-viewer.js"></script>
|
|
|
|
</body>
|
|
</html>
|