From 89e9d9731d58be7eff9934ac79f417ec63b79287 Mon Sep 17 00:00:00 2001 From: joeybloggs Date: Mon, 13 Jul 2015 14:21:06 -0400 Subject: [PATCH] update to use utf8.RuneCountInString for string length comparisons updated baked in functions: hasLengthOf isGt isGte isLt isLte to use utf8.RuneCountInString for string length comparisons, not counting multi-bye characters but runes in string length comparisons. --- baked_in.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/baked_in.go b/baked_in.go index 701757c..0e394bd 100644 --- a/baked_in.go +++ b/baked_in.go @@ -592,7 +592,7 @@ func isGte(top interface{}, current interface{}, field interface{}, param string case reflect.String: p := asInt(param) - return int64(len(st.String())) >= p + return int64(utf8.RuneCountInString(st.String())) >= p case reflect.Slice, reflect.Map, reflect.Array: p := asInt(param) @@ -637,7 +637,7 @@ func isGt(top interface{}, current interface{}, field interface{}, param string) case reflect.String: p := asInt(param) - return int64(len(st.String())) > p + return int64(utf8.RuneCountInString(st.String())) > p case reflect.Slice, reflect.Map, reflect.Array: p := asInt(param) @@ -681,7 +681,7 @@ func hasLengthOf(top interface{}, current interface{}, field interface{}, param case reflect.String: p := asInt(param) - return int64(len([]rune(st.String()))) == p + return int64(utf8.RuneCountInString(st.String())) == p case reflect.Slice, reflect.Map, reflect.Array: p := asInt(param) @@ -875,7 +875,7 @@ func isLte(top interface{}, current interface{}, field interface{}, param string case reflect.String: p := asInt(param) - return int64(len(st.String())) <= p + return int64(utf8.RuneCountInString(st.String())) <= p case reflect.Slice, reflect.Map, reflect.Array: p := asInt(param) @@ -920,7 +920,7 @@ func isLt(top interface{}, current interface{}, field interface{}, param string) case reflect.String: p := asInt(param) - return int64(len(st.String())) < p + return int64(utf8.RuneCountInString(st.String())) < p case reflect.Slice, reflect.Map, reflect.Array: p := asInt(param)