UNPKG

eslint-plugin-vue

Version:
65 lines (56 loc) 1.43 kB
const assert = require('assert') const invalidChars = /[^a-zA-Z0-9:]+/g /** * Convert text to kebab-case * @param {string} str Text to be converted * @return {string} */ function kebabCase (str) { return str .replace(/([a-z])([A-Z])/g, match => match[0] + '-' + match[1]) .replace(invalidChars, '-') .toLowerCase() } /** * Convert text to camelCase * @param {string} str Text to be converted * @return {string} Converted string */ function camelCase (str) { return str .replace(/(?:^\w|[A-Z]|\b\w)/g, (letter, index) => ( index === 0 ? letter.toLowerCase() : letter.toUpperCase()) ) .replace(invalidChars, '') } /** * Convert text to PascalCase * @param {string} str Text to be converted * @return {string} Converted string */ function pascalCase (str) { return str .replace(/(?:^\w|[A-Z]|\b\w)/g, (letter, index) => letter.toUpperCase()) .replace(invalidChars, '') } const convertersMap = { 'kebab-case': kebabCase, 'camelCase': camelCase, 'PascalCase': pascalCase } module.exports = { allowedCaseOptions: [ 'camelCase', 'kebab-case', 'PascalCase' ], /** * Return case converter * @param {string} name type of converter to return ('camelCase', 'kebab-case', 'PascalCase') * @return {kebabCase|camelCase|pascalCase} */ getConverter (name) { assert(typeof name === 'string') return convertersMap[name] || pascalCase } }