Skip to content

Commit

Permalink
noop: rework some types
Browse files Browse the repository at this point in the history
  • Loading branch information
gdh1995 committed Jul 15, 2019
1 parent a09c0ba commit fafffc4
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 22 deletions.
5 changes: 3 additions & 2 deletions background/bg.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,9 @@ declare namespace ExclusionsNS {
}
const enum TesterType { RegExp = 0, StringPrefix = 1, _mask = "", }
interface BaseTester {
readonly type_: TesterType & number,
readonly type_: TesterType & number;
readonly value_: RegExpOne | string;
readonly keys_: string;
}
interface RegExpTester extends BaseTester {
readonly type_: TesterType.RegExp,
Expand All @@ -198,7 +199,7 @@ declare namespace ExclusionsNS {
readonly value_: string;
}
type Tester = RegExpTester | PrefixTester;
type Rules = Array<Tester | string>;
type Rules = Tester[];
type Details = chrome.webNavigation.WebNavigationFramedCallbackDetails;
interface Listener {
(this: void, details: Details): void;
Expand Down
40 changes: 21 additions & 19 deletions background/exclusions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,31 @@ if (Settings_.get_("vimSync") || Settings_.temp_.hasEmptyLocalStorage_
&& !Settings_.updateHooks_.exclusionRules)) {
var Exclusions = {
testers_: null as never as SafeDict<ExclusionsNS.Tester>,
getRe_ (pattern: string): ExclusionsNS.Tester {
createRule_ (pattern: string, keys: string): ExclusionsNS.Tester {
let cur: ExclusionsNS.Tester | undefined = this.testers_[pattern], re: RegExp | null | undefined;
if (cur) { return cur; }
if (cur) {
return {
type_: cur.type_ as ExclusionsNS.TesterType.RegExp,
value_: (cur as ExclusionsNS.RegExpTester).value_,
keys_: cur.keys_
};
}
if (pattern[0] === "^") {
if (re = BgUtils_.makeRegexp_(pattern.startsWith("^$|") ? pattern.slice(3) : pattern, "", false)) {
/* empty */
} else {
console.log("Failed in creating an RegExp from %o", pattern);
}
}
return this.testers_[pattern] = re ? { type_: ExclusionsNS.TesterType.RegExp, value_: re as RegExpOne }
: {
return this.testers_[pattern] = re ? {
type_: ExclusionsNS.TesterType.RegExp,
value_: re as RegExpOne,
keys_: keys
} : {
type_: ExclusionsNS.TesterType.StringPrefix,
value_: pattern.startsWith(":vimium://")
? BgUtils_.formatVimiumUrl_(pattern.slice(10), false, Urls.WorkType.ConvertKnown) : pattern.slice(1)
? BgUtils_.formatVimiumUrl_(pattern.slice(10), false, Urls.WorkType.ConvertKnown) : pattern.slice(1),
keys_: keys
};
},
_listening: false,
Expand All @@ -38,12 +48,11 @@ var Exclusions = {
this.updateListeners_();
},
GetPassKeys_ (this: void, url: string, sender: Frames.Sender): string | null {
let rules = Exclusions.rules_, matchedKeys = "";
for (let _i = 0, _len = rules.length; _i < _len; _i += 2) {
const rule: ExclusionsNS.Tester = rules[_i] as Exclude<(typeof rules)[number], string>;
let matchedKeys = "";
for (const rule of Exclusions.rules_) {
if (rule.type_ === ExclusionsNS.TesterType.StringPrefix
? url.startsWith(rule.value_) : rule.value_.test(url)) {
const str = rules[_i + 1] as string;
const str = rule.keys_;
if (str.length === 0 || Exclusions.onlyFirstMatch_ || str[0] === "^" && str.length > 2) { return str; }
matchedKeys += str;
}
Expand Down Expand Up @@ -73,18 +82,11 @@ var Exclusions = {
return onURLChange;
},
format_ (rules: ExclusionsNS.StoredRule[]): ExclusionsNS.Rules {
const out = [] as ExclusionsNS.Rules;
for (let _i = 0, _len = rules.length; _i < _len; _i++) {
const rule = rules[_i];
out.push(this.getRe_(rule.pattern), BgUtils_.formatKeys_(rule.passKeys));
}
return out;
return rules.map(rule => Exclusions.createRule_(rule.pattern, BgUtils_.formatKeys_(rule.passKeys)));
},
getAllPassed_ (): SafeEnum | true | null {
const rules = this.rules_, all = BgUtils_.safeObj_() as SafeDict<1>;
let tick = 0;
for (let _i = 1, _len = rules.length; _i < _len; _i += 2) {
const passKeys = rules[_i] as string;
let all = BgUtils_.safeObj_() as SafeDict<1>, tick = 0;
for (const { keys_: passKeys } of this.rules_) {
if (passKeys) {
if (passKeys[0] === "^" && passKeys.length > 2) { return true; }
for (const ch of passKeys.split(" ")) { all[ch] = 1; tick++; }
Expand Down
2 changes: 1 addition & 1 deletion pages/options_base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ BG_.BgUtils_.require_("Exclusions").then((function (callback) {
if (patternIsSame) {
return;
}
const parsedPattern = bgExclusions.getRe_(pattern), patternElement = vnode.$pattern_;
const parsedPattern = bgExclusions.createRule_(pattern, ""), patternElement = vnode.$pattern_;
if (parsedPattern.type_ === ExclusionsNS.TesterType.StringPrefix
? !url.lastIndexOf(parsedPattern.value_, 0) : parsedPattern.value_.test(url)) {
patternElement.title = patternElement.style.color = "";
Expand Down

0 comments on commit fafffc4

Please sign in to comment.