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  }