Documentation ¶
Index ¶
- Constants
- Variables
- func ClearSyncMap(m *SyncMap)
- func Increment(value *int)
- func IsPattern(path string) bool
- func Match(pattern, path string) bool
- func MatchStart(pattern, path string) bool
- func SetCachePatterns(cachePatterns bool)
- func SetCaseSensitive(caseSensitive bool)
- func SetPathSeparator(pathSeparator string)
- func SetTrimTokens(trimTokens bool)
- type AntPathMatcher
- func (ant *AntPathMatcher) Combine(pattern1, pattern2 string) string
- func (ant *AntPathMatcher) ExtractPathWithinPattern(pattern, path string) string
- func (ant *AntPathMatcher) ExtractUriTemplateVariables(pattern, path string) *map[string]string
- func (ant *AntPathMatcher) GetPatternComparator(path string) *AntPatternComparator
- func (ant *AntPathMatcher) IsPattern(path string) bool
- func (ant *AntPathMatcher) Match(pattern, path string) bool
- func (ant *AntPathMatcher) MatchStart(pattern, path string) bool
- func (ant *AntPathMatcher) PatternCacheSize() int64
- func (ant *AntPathMatcher) SetCachePatterns(cachePatterns bool)
- func (ant *AntPathMatcher) SetCaseSensitive(caseSensitive bool)
- func (ant *AntPathMatcher) SetPathSeparator(pathSeparator string)
- func (ant *AntPathMatcher) SetTrimTokens(trimTokens bool)
- type AntPathStringMatcher
- type AntPatternComparator
- type PathMatcher
- type PathSeparatorPatternCache
- type PatternInfo
- func (pi *PatternInfo) GetDoubleWildcards() int
- func (pi *PatternInfo) GetLength() int
- func (pi *PatternInfo) GetSingleWildcards() int
- func (pi *PatternInfo) GetTotalCount() int
- func (pi *PatternInfo) GetUriVars() int
- func (pi *PatternInfo) IsLeastSpecific() bool
- func (pi *PatternInfo) IsPrefixPattern() bool
- type SyncMap
- func (m *SyncMap) MyDelete(key interface{})
- func (m *SyncMap) MyLen() int64
- func (m *SyncMap) MyLoad(key interface{}) (value interface{}, ok bool)
- func (m *SyncMap) MyLoadOrStore(key, value interface{}) (actual interface{}, loaded bool)
- func (m *SyncMap) MyRange(f func(key, value interface{}) bool)
- func (m *SyncMap) MyStore(key, value interface{})
Constants ¶
const ( DefaultVariablePattern = "(.*)" MaxFindCount = 1 << 5 // MaxFindCount默认值= 32 )
const ( DefaultPathSeparator = "/" // DefaultPathSeparator默认路径分隔符:“ /” CacheTurnoffThreshold = 65536 // 缓存关闭阈值 )
Variables ¶
var ( Asterisk = '\u002a' // * QuestionMark = '\u003f' // ? Brackets = '\u007b' // { WildcardChars = []rune{Asterisk, QuestionMark, Brackets} // 通配符字符首字母'*','?','{' VariablePattern *regexp.Regexp // pattern )
var GlobPattern *regexp.Regexp
Functions ¶
func ClearSyncMap ¶
func ClearSyncMap(m *SyncMap)
func MatchStart ¶
func SetCachePatterns ¶
func SetCachePatterns(cachePatterns bool)
func SetCaseSensitive ¶
func SetCaseSensitive(caseSensitive bool)
func SetPathSeparator ¶
func SetPathSeparator(pathSeparator string)
func SetTrimTokens ¶
func SetTrimTokens(trimTokens bool)
Types ¶
type AntPathMatcher ¶
type AntPathMatcher struct {
// contains filtered or unexported fields
}
AntPathMatcher 实现了接口PathMatcher
func New ¶
func New() *AntPathMatcher
func NewS ¶
func NewS(separator string) *AntPathMatcher
func (*AntPathMatcher) Combine ¶
func (ant *AntPathMatcher) Combine(pattern1, pattern2 string) string
Combine 将pattern1和pattern2联合成一个新的pattern
func (*AntPathMatcher) ExtractPathWithinPattern ¶
func (ant *AntPathMatcher) ExtractPathWithinPattern(pattern, path string) string
func (*AntPathMatcher) ExtractUriTemplateVariables ¶
func (ant *AntPathMatcher) ExtractUriTemplateVariables(pattern, path string) *map[string]string
func (*AntPathMatcher) GetPatternComparator ¶
func (ant *AntPathMatcher) GetPatternComparator(path string) *AntPatternComparator
func (*AntPathMatcher) IsPattern ¶
func (ant *AntPathMatcher) IsPattern(path string) bool
func (*AntPathMatcher) Match ¶
func (ant *AntPathMatcher) Match(pattern, path string) bool
func (*AntPathMatcher) MatchStart ¶
func (ant *AntPathMatcher) MatchStart(pattern, path string) bool
func (*AntPathMatcher) PatternCacheSize ¶
func (ant *AntPathMatcher) PatternCacheSize() int64
func (*AntPathMatcher) SetCachePatterns ¶
func (ant *AntPathMatcher) SetCachePatterns(cachePatterns bool)
SetCachePatterns 指定是否为传递到此匹配器的match方法中的模式缓存已分析的模式元数据。值`true`激活无限模式缓存;值`false`会完全关闭模式缓存 默认设置为启用缓存,但如果遇到任意模式的排列,遇到变种的可能性很小,则当变体在运行时遇到太多无法缓存的模式时自动关闭它(阈值为65536).重复模式
func (*AntPathMatcher) SetCaseSensitive ¶
func (ant *AntPathMatcher) SetCaseSensitive(caseSensitive bool)
SetCaseSensitive 区分大小写 The default is false
func (*AntPathMatcher) SetPathSeparator ¶
func (ant *AntPathMatcher) SetPathSeparator(pathSeparator string)
SetPathSeparator The default is "/",as in ant.
func (*AntPathMatcher) SetTrimTokens ¶
func (ant *AntPathMatcher) SetTrimTokens(trimTokens bool)
SetTrimTokens 是否去除空格 The default is false
type AntPathStringMatcher ¶
type AntPathStringMatcher struct {
// contains filtered or unexported fields
}
AntPathStringMatcher 测试字符串是否通过 该模式可能包含特殊字符:'*'表示零个或多个字符; '?'表示一个字符,并且只有一个字符; '{'和'}'表示URI模板模式。例如`/users/{user`
func NewDefaultStringMatcher ¶
func NewDefaultStringMatcher(pattern string, caseSensitive bool) *AntPathStringMatcher
NewDefaultStringMatcher part match
func NewMatchesStringMatcher ¶
func NewMatchesStringMatcher(pattern string, caseSensitive bool) *AntPathStringMatcher
NewMatchesStringMatcher full match
func (*AntPathStringMatcher) FindSubMatch ¶
func (sm *AntPathStringMatcher) FindSubMatch(source []byte, index int) *string
FindSubMatch 子查询
func (*AntPathStringMatcher) GroupCount ¶
func (sm *AntPathStringMatcher) GroupCount() int
GroupCount
func (*AntPathStringMatcher) MatchStrings ¶
func (sm *AntPathStringMatcher) MatchStrings(str string, uriTemplateVariables *map[string]string) bool
MatchStrings 主入口 如果字符串与模式匹配,则返回{@code true},否则返回{@code false}
type AntPatternComparator ¶
type AntPatternComparator struct {
// contains filtered or unexported fields
}
AntPatternComparator 由返回的默认{@link Comparator}实现 按顺序,最“通用”的模式由以下内容确定: 如果它为null或捕获所有模式(即等于“ / **”) 如果其他模式是实际匹配项 如果它是一个包罗万象的模式\(即以“ **”结尾) 如果它的"*"比其他模式多 如果"{foo}"比其他模式多 如果比其他格式短
func NewDefaultAntPatternComparator ¶
func NewDefaultAntPatternComparator(path string) *AntPatternComparator
func (*AntPatternComparator) Compare ¶
func (comparator *AntPatternComparator) Compare(pattern1, pattern2 string) int
type PathMatcher ¶
type PathMatcher interface { // IsPattern 给定的{path}是否表示可以通过此接口的实现匹配的模式? // 如果返回值为{false},则不必使用{#match}方法,因为在静态路径Strings上进行直接相等比较将得出相同的结果。 // @param path要检查的路径字符串 // @return {true},如果给定的{path}表示一个模式 IsPattern(path string) bool // Match 根据此PathMatcher的匹配策略,将给定的{@code路径}与给定的{@code模式}相匹配。 // @param pattern要匹配的模式 // @param path要测试的路径字符串 // @return {true}如果提供的{path}匹配,{false}(如果没有) Match(pattern, path string) bool // MatchStart 根据此PathMatcher的匹配策略,将给定的{@code路径}与给定的{@code模式}的对应部分进行匹配。 // 确定模式是否至少匹配给定的基本路径,并假设一条完整路径也可以匹配。 // @param pattern要匹配的模式 // @param path要测试的路径字符串 // @return {true}如果提供的{path}匹配,{false}(如果没有) MatchStart(pattern, path string) bool // ExtractPathWithinPattern 给定图案和完整路径,确定图案映射的零件. // 该方法应该找出通过实际模式动态匹配路径的哪一部分,即,它从给定的完整路径中剥离静态定义的引导路径,仅返回的实际模式匹配部分路径. // 例如:对于"root/*.html"作为模式,"root/file.html"作为完整路径,此方法应返回"file.html".详细的确定规则已指定为此PathMatcher的匹配策略. // 如果是实际模式,简单的实现可以按原样返回给定的完整路径,如果模式不包含任何动态部分(即{pattern}参数为静态路径),则为空String则不符合实际的{#isPattern模式}). // 复杂的实现将区分给定路径模式的静态部分和动态部分. // @param pattern 路径模式 // @param path 进行内省的完整路径 // @return 给定的{@code path}的模式映射部分 ExtractPathWithinPattern(pattern, path string) string // ExtractUriTemplateVariables 给定模式和完整路径,提取URI模板变量.URI模板变量通过大括号("{"和"}")表示. // 例如:对于模式"/hotels/{hotel}"和路径"/hotels/1",此方法将返回包含"hotel"->"1"的地图. // @param pattern string 模式路径模式,可能包含URI模板 // @param path string 从中提取模板变量的完整路径 // @return map[string]string 其中包含变量名作为键;将变量值作为值 ExtractUriTemplateVariables(pattern, path string) *map[string]string // GetPatternComparator 给定完整路径后,将返回一个{Comparator},适用于按照该路径的显式顺序对模式进行排序。 // 所使用的完整算法取决于基础实现,但是通常,返回的{AntPatternComparator}一个列表,因此 更具体的模式先于通用模式。 // @param path string用于比较的完整路径 // @return *AntPatternComparator 能够按显式顺序对模式进行排序的比较器 GetPatternComparator(path string) *AntPatternComparator // Combine 将两个模式组合成一个返回的新模式。 // 用于组合两种模式的完整算法取决于基础实现。 // @param pattern1 第一个模式 // @param pattern2 第二种模式 // @return string 两个模式的组合 Combine(pattern1, pattern2 string) string SetPathSeparator(pathSeparator string) SetCaseSensitive(caseSensitive bool) SetTrimTokens(trimTokens bool) SetCachePatterns(cachePatterns bool) PatternCacheSize() int64 }
PathMatcher 策略界面,用于基于路径的匹配。
默认实现是AntPathMatcher,支持Ant-style风格的模式语法。
type PathSeparatorPatternCache ¶
type PathSeparatorPatternCache struct {
// contains filtered or unexported fields
}
PathSeparatorPatternCache 用于依赖配置的路径分隔符的模式的简单缓存。
func NewDefaultPathSeparatorPatternCache ¶
func NewDefaultPathSeparatorPatternCache(pathSeparator string) *PathSeparatorPatternCache
NewDefaultPathSeparatorPatternCache 构造函数
func (*PathSeparatorPatternCache) GetEndsOnDoubleWildCard ¶
func (patternCache *PathSeparatorPatternCache) GetEndsOnDoubleWildCard() string
GetEndsOnDoubleWildCard 返回 "**"
func (*PathSeparatorPatternCache) GetEndsOnWildCard ¶
func (patternCache *PathSeparatorPatternCache) GetEndsOnWildCard() string
GetEndsOnWildCard 返回 "*"
type PatternInfo ¶
type PatternInfo struct {
// contains filtered or unexported fields
}
PatternInfo 包含有关模式信息的值类,例如 “ *”,“ **”和“ {”模式元素的出现次数
func NewDefaultPatternInfo ¶
func NewDefaultPatternInfo(pattern string) *PatternInfo
func (*PatternInfo) GetDoubleWildcards ¶
func (pi *PatternInfo) GetDoubleWildcards() int
func (*PatternInfo) GetLength ¶
func (pi *PatternInfo) GetLength() int
GetLength 返回给定模式的长度,其中模板变量被认为是1长。
func (*PatternInfo) GetSingleWildcards ¶
func (pi *PatternInfo) GetSingleWildcards() int
func (*PatternInfo) GetTotalCount ¶
func (pi *PatternInfo) GetTotalCount() int
func (*PatternInfo) GetUriVars ¶
func (pi *PatternInfo) GetUriVars() int
func (*PatternInfo) IsLeastSpecific ¶
func (pi *PatternInfo) IsLeastSpecific() bool
func (*PatternInfo) IsPrefixPattern ¶
func (pi *PatternInfo) IsPrefixPattern() bool