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() interface{} {
11 func (r
*Replacer
) PrintTrie() string {
12 gen
:= r
.r
.(*genericReplacer
)
13 return gen
.printNode(&gen
.root
, 0)
16 func (r
*genericReplacer
) printNode(t
*trieNode
, depth
int) (s
string) {
25 s
+= Repeat(".", depth
) + t
.prefix
26 s
+= r
.printNode(t
.next
, depth
+len(t
.prefix
))
27 } else if t
.table
!= nil {
28 for b
, m
:= range r
.mapping
{
29 if int(m
) != r
.tableSize
&& t
.table
[m
] != nil {
30 s
+= Repeat(".", depth
) + string([]byte{byte(b
)})
31 s
+= r
.printNode(t
.table
[m
], depth
+1)
38 func StringFind(pattern
, text
string) int {
39 return makeStringFinder(pattern
).next(text
)
42 func DumpTables(pattern
string) ([]int, []int) {
43 finder
:= makeStringFinder(pattern
)
44 return finder
.badCharSkip
[:], finder
.goodSuffixSkip