1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
7 func (r
*Replacer
) Replacer() any
{
12 func (r
*Replacer
) PrintTrie() string {
13 r
.once
.Do(r
.buildOnce
)
14 gen
:= r
.r
.(*genericReplacer
)
15 return gen
.printNode(&gen
.root
, 0)
18 func (r
*genericReplacer
) printNode(t
*trieNode
, depth
int) (s
string) {
27 s
+= Repeat(".", depth
) + t
.prefix
28 s
+= r
.printNode(t
.next
, depth
+len(t
.prefix
))
29 } else if t
.table
!= nil {
30 for b
, m
:= range r
.mapping
{
31 if int(m
) != r
.tableSize
&& t
.table
[m
] != nil {
32 s
+= Repeat(".", depth
) + string([]byte{byte(b
)})
33 s
+= r
.printNode(t
.table
[m
], depth
+1)
40 func StringFind(pattern
, text
string) int {
41 return makeStringFinder(pattern
).next(text
)
44 func DumpTables(pattern
string) ([]int, []int) {
45 finder
:= makeStringFinder(pattern
)
46 return finder
.badCharSkip
[:], finder
.goodSuffixSkip