mirror of
https://github.com/swc-project/swc.git
synced 2024-12-28 08:04:43 +03:00
37 lines
874 B
TypeScript
37 lines
874 B
TypeScript
// Loaded from https://raw.githubusercontent.com/lodash/lodash/master/snakeCase.js
|
|
|
|
|
|
import words from './words.js'
|
|
import toString from './toString.js'
|
|
|
|
/**
|
|
* Converts `string` to
|
|
* [snake case](https://en.wikipedia.org/wiki/Snake_case).
|
|
*
|
|
* @since 3.0.0
|
|
* @category String
|
|
* @param {string} [string=''] The string to convert.
|
|
* @returns {string} Returns the snake cased string.
|
|
* @see camelCase, lowerCase, kebabCase, startCase, upperCase, upperFirst
|
|
* @example
|
|
*
|
|
* snakeCase('Foo Bar')
|
|
* // => 'foo_bar'
|
|
*
|
|
* snakeCase('fooBar')
|
|
* // => 'foo_bar'
|
|
*
|
|
* snakeCase('--FOO-BAR--')
|
|
* // => 'foo_bar'
|
|
*
|
|
* snakeCase('foo2bar')
|
|
* // => 'foo_2_bar'
|
|
*/
|
|
const snakeCase = (string) => (
|
|
words(toString(string).replace(/['\u2019]/g, '')).reduce((result, word, index) => (
|
|
result + (index ? '_' : '') + word.toLowerCase()
|
|
), '')
|
|
)
|
|
|
|
export default snakeCase
|