From 3178eda501fbfde16e9dd79b513de66e35f5dd41 Mon Sep 17 00:00:00 2001 From: Al Date: Sun, 2 Aug 2015 14:35:18 -0600 Subject: [PATCH] [utils] string_contains_hyphen method --- src/string_utils.c | 21 +++++++++++++++++++++ src/string_utils.h | 3 +++ 2 files changed, 24 insertions(+) diff --git a/src/string_utils.c b/src/string_utils.c index d8c8da03..9dcbfb9e 100644 --- a/src/string_utils.c +++ b/src/string_utils.c @@ -335,6 +335,27 @@ inline size_t utf8_common_prefix_ignore_separators(const char *str1, const char } +bool string_contains_hyphen_len(char *str, size_t len) { + uint8_t *ptr = (uint8_t *)str; + int32_t codepoint; + ssize_t idx = 0; + + while (idx < len) { + ssize_t char_len = utf8proc_iterate(ptr, len, &codepoint); + + if (char_len <= 0) break; + + if (utf8_is_hyphen(codepoint)) return true; + ptr += char_len; + idx += char_len; + } + return false; +} + +inline bool string_contains_hyphen(char *str) { + return string_contains_hyphen_len(str, strlen(str)); +} + size_t string_rtrim(char *str) { size_t spaces = 0; diff --git a/src/string_utils.h b/src/string_utils.h index 5a2bf550..9bf8a86d 100644 --- a/src/string_utils.h +++ b/src/string_utils.h @@ -69,6 +69,9 @@ bool utf8_is_punctuation(int cat); bool utf8_is_symbol(int cat); bool utf8_is_separator(int cat); +bool string_contains_hyphen(char *str); +bool string_contains_hyphen_len(char *str, size_t len); + size_t string_ltrim(char *str); size_t string_rtrim(char *str); size_t string_trim(char *str);