Help us shape the future of Go! Take the 2026 Go Developer Survey

strmatcher

package
v1.8.4 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2023 License: MPL-2.0 Imports: 6 Imported by: 0

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

func RollingHash(s string) uint32

calculate the rolling murmurHash of given string

Types

type ACAutomaton

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

func NewACAutomaton

func NewACAutomaton() *ACAutomaton

func (*ACAutomaton) Add

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

func (*ACAutomaton) Build

func (ac *ACAutomaton) Build()

func (*ACAutomaton) Match

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

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

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

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

func NewMphMatcherGroup() *MphMatcherGroup

func (*MphMatcherGroup) AddFullOrDomainPattern

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

func (*MphMatcherGroup) AddPattern

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

AddPattern adds a pattern to MphMatcherGroup

func (*MphMatcherGroup) Build

func (g *MphMatcherGroup) Build()

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

func (*MphMatcherGroup) Lookup

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

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