LEFT | RIGHT |
1 // Copyright 2011 The Go Authors. All rights reserved. | 1 // Copyright 2011 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 package strings | 5 package strings |
6 | 6 |
7 func (r *Replacer) Replacer() interface{} { | 7 func (r *Replacer) Replacer() interface{} { |
8 return r.r | 8 return r.r |
9 } | 9 } |
10 | 10 |
11 func (r *Replacer) PrintTrie() string { | 11 func (r *Replacer) PrintTrie() string { |
12 gen := r.r.(*genericReplacer) | 12 gen := r.r.(*genericReplacer) |
13 » return gen.printNode(gen.root, 0) | 13 » return gen.printNode(&gen.root, 0) |
14 } | 14 } |
15 | 15 |
16 func (r *genericReplacer) printNode(t *trie, depth int) (s string) { | 16 func (r *genericReplacer) printNode(t *trieNode, depth int) (s string) { |
17 if t.priority > 0 { | 17 if t.priority > 0 { |
18 s += "+" | 18 s += "+" |
19 } else { | 19 } else { |
20 s += "-" | 20 s += "-" |
21 } | 21 } |
22 s += "\n" | 22 s += "\n" |
23 | 23 |
24 if t.prefix != "" { | 24 if t.prefix != "" { |
25 s += Repeat(".", depth) + t.prefix | 25 s += Repeat(".", depth) + t.prefix |
26 s += r.printNode(t.next, depth+len(t.prefix)) | 26 s += r.printNode(t.next, depth+len(t.prefix)) |
27 } else if t.table != nil { | 27 } else if t.table != nil { |
28 for b, m := range r.mapping { | 28 for b, m := range r.mapping { |
29 » » » index := int(m) | 29 » » » if int(m) != r.tableSize && t.table[m] != nil { |
30 » » » if index != r.tableSize && t.table[index] != nil { | |
31 s += Repeat(".", depth) + string([]byte{byte(b)}
) | 30 s += Repeat(".", depth) + string([]byte{byte(b)}
) |
32 » » » » s += r.printNode(t.table[index], depth+1) | 31 » » » » s += r.printNode(t.table[m], depth+1) |
33 } | 32 } |
34 } | 33 } |
35 } | 34 } |
36 return | 35 return |
37 } | 36 } |
LEFT | RIGHT |