1) subString the given name
def productName = {attrs -> def name = attrs.name int max = 25 max = attrs.max if (name.size() > max) { def result = '' int length = 0 def words = name.split() def preWord int lbCount = 0 words.each {word -> //length += word.size() if((preWord?preWord.size()+word.size():word.size())>22||(length+word.size())>35) { lbCount++ } length += lbCount? 25 : word.size() if (length < max) { result += "${word} " } preWord = word } result = result[0..-2] // trim off trailing space return result += "..." } else { return name } } def attrs = [:] // attrs.name = "Unbreakable Polycarbonate 10pc. Tumbler Set Assorted" attrs.name = "Sunpentown Bagless Upright Vacuum Red V8506" attrs.max = 40 println productName(attrs)