12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- const assert = require('assert')
- const invalidChars = /[^a-zA-Z0-9:]+/g
- function kebabCase (str) {
- return str
- .replace(/[A-Z]/g, match => '-' + match)
- .replace(/([^a-zA-Z])-([A-Z])/g, match => match[0] + match[2])
- .replace(/^-/, '')
- .replace(invalidChars, '-')
- .toLowerCase()
- }
- function snakeCase (str) {
- return str
- .replace(/[A-Z]/g, match => '_' + match)
- .replace(/([^a-zA-Z])_([A-Z])/g, match => match[0] + match[2])
- .replace(/^_/, '')
- .replace(invalidChars, '_')
- .toLowerCase()
- }
- function camelCase (str) {
- return str
- .replace(/_/g, (_, index) => index === 0 ? _ : '-')
- .replace(/(?:^\w|[A-Z]|\b\w)/g, (letter, index) =>
- index === 0 ? letter.toLowerCase() : letter.toUpperCase()
- )
- .replace(invalidChars, '')
- }
- function pascalCase (str) {
- return str
- .replace(/_/g, (_, index) => index === 0 ? _ : '-')
- .replace(/(?:^\w|[A-Z]|\b\w)/g, (letter, index) => letter.toUpperCase())
- .replace(invalidChars, '')
- }
- const convertersMap = {
- 'kebab-case': kebabCase,
- 'snake_case': snakeCase,
- 'camelCase': camelCase,
- 'PascalCase': pascalCase
- }
- module.exports = {
- allowedCaseOptions: [
- 'camelCase',
- 'kebab-case',
- 'PascalCase'
- ],
-
- getConverter (name) {
- assert(typeof name === 'string')
- return convertersMap[name] || pascalCase
- },
- camelCase,
- pascalCase,
- kebabCase,
- snakeCase
- }
|