summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/raylib.h3
-rw-r--r--src/rtext.c65
2 files changed, 68 insertions, 0 deletions
diff --git a/src/raylib.h b/src/raylib.h
index dfa98efb..c6128564 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -1489,6 +1489,9 @@ RLAPI int TextFindIndex(const char *text, const char *find);
RLAPI const char *TextToUpper(const char *text); // Get upper case version of provided string
RLAPI const char *TextToLower(const char *text); // Get lower case version of provided string
RLAPI const char *TextToPascal(const char *text); // Get Pascal case notation version of provided string
+RLAPI const char *TextToSnake(const char *text); // Get Snake case notation version of provided string
+RLAPI const char *TextToCamel(const char *text); // Get Camel case notation version of provided string
+
RLAPI int TextToInteger(const char *text); // Get integer value from text (negative values not supported)
RLAPI float TextToFloat(const char *text); // Get float value from text (negative values not supported)
diff --git a/src/rtext.c b/src/rtext.c
index 5ba4e8b6..118a559d 100644
--- a/src/rtext.c
+++ b/src/rtext.c
@@ -1786,6 +1786,71 @@ const char *TextToPascal(const char *text)
return buffer;
}
+// Get snake case notation version of provided string
+// WARNING: Limited functionality, only basic characters set
+const char *TextToSnake(const char *text)
+{
+ static char buffer[MAX_TEXT_BUFFER_LENGTH] = {0};
+ memset(buffer, 0, MAX_TEXT_BUFFER_LENGTH);
+
+ if (text != NULL)
+ {
+ // Check for next separator to upper case another character
+ for (int i = 0, j = 0; (i < MAX_TEXT_BUFFER_LENGTH - 1) && (text[j] != '\0'); i++, j++)
+ {
+ if ((text[j] >= 'A') && (text[j] <= 'Z'))
+ {
+ if (i >= 1)
+ {
+ buffer[i] = '_';
+ i++;
+ }
+ buffer[i] = text[j] + 32;
+ }
+ else
+ {
+ buffer[i] = text[j];
+ }
+ }
+ }
+
+ return buffer;
+}
+
+// Get Camel case notation version of provided string
+// WARNING: Limited functionality, only basic characters set
+const char *TextToCamel(const char *text)
+{
+ static char buffer[MAX_TEXT_BUFFER_LENGTH] = {0};
+ memset(buffer, 0, MAX_TEXT_BUFFER_LENGTH);
+
+ if (text != NULL)
+ {
+ // Lower case first character
+ if ((text[0] >= 'A') && (text[0] <= 'Z'))
+ buffer[0] = text[0] + 32;
+ else
+ buffer[0] = text[0];
+
+ // Check for next separator to upper case another character
+ for (int i = 1, j = 1; (i < MAX_TEXT_BUFFER_LENGTH - 1) && (text[j] != '\0'); i++, j++)
+ {
+ if (text[j] != '_')
+ buffer[i] = text[j];
+ else
+ {
+ j++;
+ if ((text[j] >= 'a') && (text[j] <= 'z'))
+ {
+ buffer[i] = text[j] - 32;
+ }
+ }
+ }
+ }
+
+ return buffer;
+}
+
// Encode text codepoint into UTF-8 text
// REQUIRES: memcpy()
// WARNING: Allocated memory must be manually freed