strmatcher

package
v1.5.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2022 License: MPL-2.0 Imports: 6 Imported by: 19

Documentation

Index

Constants

View Source
const (
	TrieEdge bool = true
	FailEdge bool = false
)
View Source
const PrimeRK = 16777619

PrimeRK is the prime base used in Rabin-Karp algorithm.

Variables

This section is empty.

Functions

func RollingHash added in v1.4.3

func RollingHash(s string) uint32

calculate the rolling murmurHash of given string

Types

type ACAutomaton added in v1.4.3

type ACAutomaton struct {
	// contains filtered or unexported fields
}

func NewACAutomaton added in v1.4.3

func NewACAutomaton() *ACAutomaton

func (*ACAutomaton) Add added in v1.4.3

func (ac *ACAutomaton) Add(domain string, t Type)

func (*ACAutomaton) Build added in v1.4.3

func (ac *ACAutomaton) Build()

func (*ACAutomaton) Match added in v1.4.3

func (ac *ACAutomaton) Match(s string) bool

type DomainMatcherGroup

type DomainMatcherGroup struct {
	// contains filtered or unexported fields
}

DomainMatcherGroup is a IndexMatcher for a large set of Domain matchers. Visible for testing only.

func (*DomainMatcherGroup) Add

func (g *DomainMatcherGroup) Add(domain string, value uint32)

func (*DomainMatcherGroup) Match

func (g *DomainMatcherGroup) Match(domain string) []uint32

type Edge added in v1.4.3

type Edge struct {
	// contains filtered or unexported fields
}

type FullMatcherGroup

type FullMatcherGroup struct {
	// contains filtered or unexported fields
}

func (*FullMatcherGroup) Add

func (g *FullMatcherGroup) Add(domain string, value uint32)

func (*FullMatcherGroup) Match

func (g *FullMatcherGroup) Match(str string) []uint32

type IndexMatcher

type IndexMatcher interface {
	// Match returns the index of a matcher that matches the input. It returns empty array if no such matcher exists.
	Match(input string) []uint32
}

IndexMatcher is the interface for matching with a group of matchers.

type MatchType added in v1.4.3

type MatchType struct {
	// contains filtered or unexported fields
}

type Matcher

type Matcher interface {
	// Match returns true if the given string matches a predefined pattern.
	Match(string) bool
	String() string
}

Matcher is the interface to determine a string matches a pattern.

type MatcherGroup

type MatcherGroup struct {
	// contains filtered or unexported fields
}

MatcherGroup is an implementation of IndexMatcher. Empty initialization works.

func (*MatcherGroup) Add

func (g *MatcherGroup) Add(m Matcher) uint32

Add adds a new Matcher into the MatcherGroup, and returns its index. The index will never be 0.

func (*MatcherGroup) Match

func (g *MatcherGroup) Match(pattern string) []uint32

Match implements IndexMatcher.Match.

func (*MatcherGroup) Size

func (g *MatcherGroup) Size() uint32

Size returns the number of matchers in the MatcherGroup.

type MphMatcherGroup added in v1.4.3

type MphMatcherGroup struct {
	// contains filtered or unexported fields
}

A MphMatcherGroup is divided into three parts: 1. `full` and `domain` patterns are matched by Rabin-Karp algorithm and minimal perfect hash table; 2. `substr` patterns are matched by ac automaton; 3. `regex` patterns are matched with the regex library.

func NewMphMatcherGroup added in v1.4.3

func NewMphMatcherGroup() *MphMatcherGroup

func (*MphMatcherGroup) AddFullOrDomainPattern added in v1.4.3

func (g *MphMatcherGroup) AddFullOrDomainPattern(pattern string, t Type)

func (*MphMatcherGroup) AddPattern added in v1.4.3

func (g *MphMatcherGroup) AddPattern(pattern string, t Type) (uint32, error)

AddPattern adds a pattern to MphMatcherGroup

func (*MphMatcherGroup) Build added in v1.4.3

func (g *MphMatcherGroup) Build()

Build builds a minimal perfect hash table and ac automaton from insert rules

func (*MphMatcherGroup) Lookup added in v1.4.3

func (g *MphMatcherGroup) Lookup(h uint32, s string) bool

Lookup searches for s in t and returns its index and whether it was found.

func (*MphMatcherGroup) Match added in v1.4.3

func (g *MphMatcherGroup) Match(pattern string) []uint32

Match implements IndexMatcher.Match.

type Type

type Type byte

Type is the type of the matcher.

const (
	// Full is the type of matcher that the input string must exactly equal to the pattern.
	Full Type = iota
	// Substr is the type of matcher that the input string must contain the pattern as a sub-string.
	Substr
	// Domain is the type of matcher that the input string must be a sub-domain or itself of the pattern.
	Domain
	// Regex is the type of matcher that the input string must matches the regular-expression pattern.
	Regex
)

func (Type) New

func (t Type) New(pattern string) (Matcher, error)

New creates a new Matcher based on the given pattern.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL