summaryrefslogtreecommitdiff
path: root/src/pattern.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pattern.go')
-rw-r--r--src/pattern.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/pattern.go b/src/pattern.go
index 11bed5f9..9a386280 100644
--- a/src/pattern.go
+++ b/src/pattern.go
@@ -393,12 +393,24 @@ func (p *Pattern) extendedMatch(item *Item, withPos bool, slab *util.Slab) ([]Of
func (p *Pattern) transformInput(item *Item) []Token {
if item.transformed != nil {
- return *item.transformed
+ transformed := *item.transformed
+ if len(transformed.nth) == len(p.nth) {
+ same := true
+ for idx, rangeItem := range transformed.nth {
+ if rangeItem != p.nth[idx] {
+ same = false
+ break
+ }
+ }
+ if same {
+ return transformed.tokens
+ }
+ }
}
tokens := Tokenize(item.text.ToString(), p.delimiter)
ret := Transform(tokens, p.nth)
- item.transformed = &ret
+ item.transformed = &transformed{p.nth, ret}
return ret
}