Initial commit
[yaffs-website] / node_modules / camelcase / index.js
1 'use strict';
2
3 function preserveCamelCase(str) {
4         var isLastCharLower = false;
5
6         for (var i = 0; i < str.length; i++) {
7                 var c = str.charAt(i);
8
9                 if (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) {
10                         str = str.substr(0, i) + '-' + str.substr(i);
11                         isLastCharLower = false;
12                         i++;
13                 } else {
14                         isLastCharLower = (c.toLowerCase() === c);
15                 }
16         }
17
18         return str;
19 }
20
21 module.exports = function () {
22         var str = [].map.call(arguments, function (str) {
23                 return str.trim();
24         }).filter(function (str) {
25                 return str.length;
26         }).join('-');
27
28         if (!str.length) {
29                 return '';
30         }
31
32         if (str.length === 1) {
33                 return str;
34         }
35
36         if (!(/[_.\- ]+/).test(str)) {
37                 if (str === str.toUpperCase()) {
38                         return str.toLowerCase();
39                 }
40
41                 if (str[0] !== str[0].toLowerCase()) {
42                         return str[0].toLowerCase() + str.slice(1);
43                 }
44
45                 return str;
46         }
47
48         str = preserveCamelCase(str);
49
50         return str
51         .replace(/^[_.\- ]+/, '')
52         .toLowerCase()
53         .replace(/[_.\- ]+(\w|$)/g, function (m, p1) {
54                 return p1.toUpperCase();
55         });
56 };