From 5662ba57bde474840799efdeda60fedd462a4b41 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Fri, 22 Dec 2017 18:13:22 +0200 Subject: [PATCH 1/4] Add toSnakeCase --- snippets/toSnakeCase.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 snippets/toSnakeCase.md diff --git a/snippets/toSnakeCase.md b/snippets/toSnakeCase.md new file mode 100644 index 00000000000..0ea69bcaf76 --- /dev/null +++ b/snippets/toSnakeCase.md @@ -0,0 +1,14 @@ +### toSnakeCase + +Converts a string to snakecase. + +Use `replace()` to add underscores before capital letters, convert `toLowerCase()`, then `replace()` hyphens and spaces with underscores. + +```js +const toSnakeCase = str => + str.replace(/[A-Z]/g, (match, p1, p2, offset) => '_' + match).toLowerCase().replace(/[\s-]+/g,'_'); +// toSnakeCase("camelCase") -> 'camel_case' +// toSnakeCase("some text") -> 'some_text' +// toSnakeCase("some-javascript-property") -> 'some_javascript_property' +// toSnakeCase("some-mixed_string With spaces_underscores-and-hyphens") -> 'some_mixed_string_with_spaces_underscores_and_hyphens' +``` From 3efb63fa9f7765b7acf7a28c6c191a44c6048c0a Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Fri, 22 Dec 2017 18:15:55 +0200 Subject: [PATCH 2/4] Update tag_database --- tag_database | 1 + 1 file changed, 1 insertion(+) diff --git a/tag_database b/tag_database index deb4c89027a..e1c6987d5e1 100644 --- a/tag_database +++ b/tag_database @@ -117,6 +117,7 @@ toCamelCase:string toDecimalMark:utility toEnglishDate:date toOrdinalSuffix:utility +toSnakeCase:string truncateString:string truthCheckCollection:object union:array From a35ffe7ec215f3aa97aa12d09b939baba8441278 Mon Sep 17 00:00:00 2001 From: Elder Henrique Souza Date: Fri, 22 Dec 2017 15:55:58 -0200 Subject: [PATCH 3/4] fixed issue described in pull request checks if the uppercase charcater is preceded by another character --- snippets/toSnakeCase.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/toSnakeCase.md b/snippets/toSnakeCase.md index 0ea69bcaf76..6a82a5ba265 100644 --- a/snippets/toSnakeCase.md +++ b/snippets/toSnakeCase.md @@ -6,7 +6,7 @@ Use `replace()` to add underscores before capital letters, convert `toLowerCase( ```js const toSnakeCase = str => - str.replace(/[A-Z]/g, (match, p1, p2, offset) => '_' + match).toLowerCase().replace(/[\s-]+/g,'_'); + str.replace(/(\w)([A-Z])/g, '$1_$2').replace(/[\s-]/g, '_').toLowerCase(); // toSnakeCase("camelCase") -> 'camel_case' // toSnakeCase("some text") -> 'some_text' // toSnakeCase("some-javascript-property") -> 'some_javascript_property' From 48e65910f9931793c994b72a3d50d49d8c48978b Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 23 Dec 2017 11:58:41 +0200 Subject: [PATCH 4/4] Fixed multiple spaces/hyphens/underscores --- snippets/toSnakeCase.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/toSnakeCase.md b/snippets/toSnakeCase.md index 6a82a5ba265..957fd3a78f3 100644 --- a/snippets/toSnakeCase.md +++ b/snippets/toSnakeCase.md @@ -6,7 +6,7 @@ Use `replace()` to add underscores before capital letters, convert `toLowerCase( ```js const toSnakeCase = str => - str.replace(/(\w)([A-Z])/g, '$1_$2').replace(/[\s-]/g, '_').toLowerCase(); + str.replace(/(\w)([A-Z])/g, '$1_$2').replace(/[\s-_]+/g, '_').toLowerCase(); // toSnakeCase("camelCase") -> 'camel_case' // toSnakeCase("some text") -> 'some_text' // toSnakeCase("some-javascript-property") -> 'some_javascript_property'