github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/mapper/exprmapper/function/string/substring/substring.go (about) 1 package substring 2 3 import ( 4 "github.com/TIBCOSoftware/flogo-lib/core/mapper/exprmapper/expression/function" 5 "github.com/TIBCOSoftware/flogo-lib/logger" 6 ) 7 8 var log = logger.GetLogger("substring-function") 9 10 type Substring struct { 11 } 12 13 func init() { 14 function.Registry(&Substring{}) 15 } 16 17 func (s *Substring) GetName() string { 18 return "substring" 19 } 20 21 func (s *Substring) GetCategory() string { 22 return "string" 23 } 24 25 func (s *Substring) Eval(str string, position int, length int) string { 26 log.Debugf("Return the substring of string \"%s\"", str) 27 runes := []rune(str) 28 29 if length > 0 { 30 l := position + length 31 if l > len(runes) { 32 l = len(runes) 33 } 34 return string(runes[position:l]) 35 } else if length < 0 { 36 l := len(str) + length 37 if l < 0 { 38 return string(runes[0:0]) 39 } 40 return string(runes[len(str)+length:]) 41 } 42 return string(runes[0:0]) 43 }