mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-12 03:47:50 +00:00
Add _.startCase.
This commit is contained in:
@@ -9451,6 +9451,31 @@
|
|||||||
return result + (index ? '-' : '') + word.toLowerCase();
|
return result + (index ? '-' : '') + word.toLowerCase();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts `string` to start case.
|
||||||
|
* See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage)
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
* @memberOf _
|
||||||
|
* @category String
|
||||||
|
* @param {string} [string=''] The string to convert.
|
||||||
|
* @returns {string} Returns the start cased string.
|
||||||
|
* @example
|
||||||
|
*
|
||||||
|
* _.startCase('Foo Bar');
|
||||||
|
* // => 'Foo Bar'
|
||||||
|
*
|
||||||
|
* _.startCase('fooBar');
|
||||||
|
* // => 'Foo Bar'
|
||||||
|
*
|
||||||
|
* _.startCase('__foo_bar__');
|
||||||
|
* // => 'Foo Bar'
|
||||||
|
*/
|
||||||
|
var startCase = createCompounder(function(result, word, index) {
|
||||||
|
return result + (index ? ' ' : '') + capitalize(word);
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pads `string` on the left and right sides if it is shorter then the given
|
* Pads `string` on the left and right sides if it is shorter then the given
|
||||||
* padding length. The `chars` string may be truncated if the number of padding
|
* padding length. The `chars` string may be truncated if the number of padding
|
||||||
@@ -10747,6 +10772,7 @@
|
|||||||
lodash.some = some;
|
lodash.some = some;
|
||||||
lodash.sortedIndex = sortedIndex;
|
lodash.sortedIndex = sortedIndex;
|
||||||
lodash.sortedLastIndex = sortedLastIndex;
|
lodash.sortedLastIndex = sortedLastIndex;
|
||||||
|
lodash.startCase = startCase;
|
||||||
lodash.startsWith = startsWith;
|
lodash.startsWith = startsWith;
|
||||||
lodash.template = template;
|
lodash.template = template;
|
||||||
lodash.trim = trim;
|
lodash.trim = trim;
|
||||||
|
|||||||
21
test/test.js
21
test/test.js
@@ -1444,7 +1444,7 @@
|
|||||||
|
|
||||||
QUnit.module('case methods');
|
QUnit.module('case methods');
|
||||||
|
|
||||||
_.each(['camel', 'kebab', 'snake'], function(caseName) {
|
_.each(['camel', 'kebab', 'snake', 'start'], function(caseName) {
|
||||||
var methodName = caseName + 'Case',
|
var methodName = caseName + 'Case',
|
||||||
func = _[methodName];
|
func = _[methodName];
|
||||||
|
|
||||||
@@ -1458,12 +1458,17 @@
|
|||||||
case 'camel': return 'fooBar';
|
case 'camel': return 'fooBar';
|
||||||
case 'kebab': return 'foo-bar';
|
case 'kebab': return 'foo-bar';
|
||||||
case 'snake': return 'foo_bar';
|
case 'snake': return 'foo_bar';
|
||||||
|
case 'start': return 'Foo Bar';
|
||||||
}
|
}
|
||||||
}());
|
}());
|
||||||
|
|
||||||
test('`_.' + methodName + '` should convert `string` to ' + caseName + ' case', 1, function() {
|
test('`_.' + methodName + '` should convert `string` to ' + caseName + ' case', 1, function() {
|
||||||
var actual = _.map(strings, function(string) {
|
var actual = _.map(strings, function(string) {
|
||||||
return func(string) === expected;
|
if (caseName === 'start' && string === 'FOO BAR') {
|
||||||
|
return func(string) === 'FOO BAR';
|
||||||
|
} else {
|
||||||
|
return func(string) === expected;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
deepEqual(actual, _.map(strings, _.constant(true)));
|
deepEqual(actual, _.map(strings, _.constant(true)));
|
||||||
@@ -1471,7 +1476,11 @@
|
|||||||
|
|
||||||
test('`_.' + methodName + '` should handle double-converting strings', 1, function() {
|
test('`_.' + methodName + '` should handle double-converting strings', 1, function() {
|
||||||
var actual = _.map(strings, function(string) {
|
var actual = _.map(strings, function(string) {
|
||||||
return func(func(string)) === expected;
|
if (caseName === 'start' && string === 'FOO BAR') {
|
||||||
|
return func(func(string)) === 'FOO BAR';
|
||||||
|
} else {
|
||||||
|
return func(func(string)) === expected;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
deepEqual(actual, _.map(strings, _.constant(true)));
|
deepEqual(actual, _.map(strings, _.constant(true)));
|
||||||
@@ -1479,7 +1488,9 @@
|
|||||||
|
|
||||||
test('`_.' + methodName + '` should deburr letters', 1, function() {
|
test('`_.' + methodName + '` should deburr letters', 1, function() {
|
||||||
var actual = _.map(burredLetters, function(burred, index) {
|
var actual = _.map(burredLetters, function(burred, index) {
|
||||||
return func(burred) === deburredLetters[index].toLowerCase();
|
var letter = deburredLetters[index].toLowerCase();
|
||||||
|
letter = caseName === 'start' ? _.capitalize(letter) : letter;
|
||||||
|
return func(burred) === letter;
|
||||||
});
|
});
|
||||||
|
|
||||||
deepEqual(actual, _.map(burredLetters, _.constant(true)));
|
deepEqual(actual, _.map(burredLetters, _.constant(true)));
|
||||||
@@ -14870,7 +14881,7 @@
|
|||||||
|
|
||||||
var acceptFalsey = _.difference(allMethods, rejectFalsey);
|
var acceptFalsey = _.difference(allMethods, rejectFalsey);
|
||||||
|
|
||||||
test('should accept falsey arguments', 205, function() {
|
test('should accept falsey arguments', 206, function() {
|
||||||
var emptyArrays = _.map(falsey, _.constant([])),
|
var emptyArrays = _.map(falsey, _.constant([])),
|
||||||
isExposed = '_' in root,
|
isExposed = '_' in root,
|
||||||
oldDash = root._;
|
oldDash = root._;
|
||||||
|
|||||||
Reference in New Issue
Block a user