Single Fetcher.Fetch on the Guard that holds DenyPrefixes. skipTlsVerification is ignored. No 502. keys add writes the secret only to --out. Release binary has no -test-allow-prefix.
100 lines
3.3 KiB
ReasonML
100 lines
3.3 KiB
ReasonML
/*!include:re2c "base.re" */
|
|
|
|
// Original pattern: (?i)article|body|content|entry|hentry|h-entry|main|page|pagination|post|text|blog|story
|
|
func IsPositiveClass(input string) bool {
|
|
var cursor, marker int
|
|
input += string(rune(0)) // add terminating null
|
|
limit := len(input) - 1 // limit points at the terminating null
|
|
_ = marker
|
|
|
|
for { /*!use:re2c:base_template
|
|
re2c:case-insensitive = 1;
|
|
|
|
positive = article|body|content|entry|hentry|h-entry|main|page|pagination|post|text|blog|story;
|
|
|
|
{positive} { return true }
|
|
* { continue }
|
|
$ { return false }
|
|
*/
|
|
}
|
|
}
|
|
|
|
// For IsNegativeClass, its original pattern is like this:
|
|
// (?i)-ad-|hidden|^hid$| hid$| hid |^hid |banner|combx|comment|com-|contact|foot|footer|footnote|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget
|
|
//
|
|
// Unfortunately, re2go doesn't handle anchor like ^ and $ internally, so for convenience
|
|
// I'll split that pattern into two:
|
|
// - `^hid$| hid$| hid |^hid `
|
|
// - `-ad-|hidden|banner|combx|comment|com-|contact|foot|footer|footnote|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget`
|
|
func IsNegativeClass(input string) bool {
|
|
return isNegativeClass1(input) || isNegativeClass2(input)
|
|
}
|
|
|
|
// This one handle: `^hid$| hid$| hid |^hid `
|
|
func isNegativeClass1(input string) bool {
|
|
var cursor, marker int
|
|
input += string(rune(0)) // add terminating null
|
|
limit := len(input) - 1 // limit points at the terminating null
|
|
_ = marker
|
|
|
|
// Variable for capturing parentheses (twice the number of groups).
|
|
/*!maxnmatch:re2c*/
|
|
yypmatch := make([]int, YYMAXNMATCH*2)
|
|
var yynmatch int
|
|
_ = yynmatch
|
|
|
|
// Autogenerated tag variables used by the lexer to track tag values.
|
|
/*!stags:re2c format = 'var @@ int; _ = @@\n'; */
|
|
|
|
for { /*!use:re2c:base_template
|
|
re2c:posix-captures = 1;
|
|
re2c:case-insensitive = 1;
|
|
|
|
(.)?hid(.)? {
|
|
// Extract submatch first
|
|
var sub1, sub2 string
|
|
start, end := yypmatch[0], yypmatch[1]
|
|
|
|
if yypmatch[2] != -1 {
|
|
sub1 = input[yypmatch[2]:yypmatch[3]]
|
|
}
|
|
|
|
if yypmatch[4] != -1 {
|
|
sub2 = input[yypmatch[4]:yypmatch[5]]
|
|
}
|
|
|
|
case1 := start == 0 && end == limit && sub1 == "" && sub2 == "" // '^hid$'
|
|
case2 := end == limit && sub1 == " " && sub2 == "" // ' hid$'
|
|
case3 := start == 0 && sub1 == "" && sub2 == " " // '^hid '
|
|
case4 := sub1 == " " && sub2 == " " // ' hid '
|
|
|
|
if case1 || case2 || case3 || case4 {
|
|
return true
|
|
}
|
|
continue
|
|
}
|
|
|
|
* { continue }
|
|
$ { return false }
|
|
*/
|
|
}
|
|
}
|
|
|
|
// This one handle: `-ad-|hidden|banner|combx|comment|com-|contact|foot|footer|footnote|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget`
|
|
func isNegativeClass2(input string) bool {
|
|
var cursor, marker int
|
|
input += string(rune(0)) // add terminating null
|
|
limit := len(input) - 1 // limit points at the terminating null
|
|
_ = marker
|
|
|
|
for { /*!use:re2c:base_template
|
|
re2c:case-insensitive = 1;
|
|
|
|
negative = -ad-|hidden|banner|combx|comment|com-|contact|foot|footer|footnote|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget;
|
|
|
|
{negative} { return true }
|
|
* { continue }
|
|
$ { return false }
|
|
*/
|
|
}
|
|
} |