antstyle

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2021 License: MIT Imports: 6 Imported by: 0

README

Ant-Style

默认实现是AntPathMatcher,支持* Ant-Style的模式语法。 该描述来自java spring框架。

ant path 通配规则

Table Ant Wildcard Characters

| Wildcard | Description | | :-- | :--| |?|匹配任何单字符| |*|匹配0或者任意数量的字符| |**|匹配0或者更多的目录|

Table Example Ant-Style Path Patterns

| Path | Description | | :-- | :-- | | /app/.x | 匹配(Matches)所有在app路径下的.x文件 | | /app/p?ttern | 匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern | | //example | 匹配( Matches) /app/example, /app/foo/example, 和 /example | | /app//dir/file. | 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java | | /**/.jsp | 匹配(Matches)任何的.jsp 文件 |

基本使用PathMatcher接口

使用demo

package main

import "fmt"
import "gitee.com/titan-kit/titan/integrated/antstyle"

func main(){
	fmt.Println(antstyle.Match("test","test"))
	fmt.Println(antstyle.Match("test*aaa", "testblaaaa"))
	fmt.Println(antstyle.Match("t?st", "test"))
	fmt.Println(antstyle.Match("/{bla}.*", "/testing.html"))
}

Documentation

Index

Constants

View Source
const (
	DefaultVariablePattern = "(.*)"
	MaxFindCount           = 1 << 5 // MaxFindCount默认值= 32
)
View Source
const (
	DefaultPathSeparator  = "/"   // DefaultPathSeparator默认路径分隔符:“ /”
	CacheTurnoffThreshold = 65536 // 缓存关闭阈值
)

Variables

View Source
var (
	Asterisk        = '\u002a'                                 // *
	QuestionMark    = '\u003f'                                 // ?
	Brackets        = '\u007b'                                 // {
	WildcardChars   = []rune{Asterisk, QuestionMark, Brackets} // 通配符字符首字母'*','?','{'
	VariablePattern *regexp.Regexp                             // pattern

)
View Source
var GlobPattern *regexp.Regexp

Functions

func ClearSyncMap

func ClearSyncMap(m *SyncMap)

func Increment

func Increment(value *int)

func IsPattern

func IsPattern(path string) bool

func Match

func Match(pattern, path string) bool

func MatchStart

func MatchStart(pattern, path string) bool

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

type SyncMap

type SyncMap struct {
	sync.Map
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*SyncMap) MyDelete

func (m *SyncMap) MyDelete(key interface{})

func (*SyncMap) MyLen

func (m *SyncMap) MyLen() int64

func (*SyncMap) MyLoad

func (m *SyncMap) MyLoad(key interface{}) (value interface{}, ok bool)

func (*SyncMap) MyLoadOrStore

func (m *SyncMap) MyLoadOrStore(key, value interface{}) (actual interface{}, loaded bool)

func (*SyncMap) MyRange

func (m *SyncMap) MyRange(f func(key, value interface{}) bool)

func (*SyncMap) MyStore

func (m *SyncMap) MyStore(key, value interface{})

Jump to

Keyboard shortcuts

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