Travis build: 1006

This commit is contained in:
30secondsofcode
2018-01-04 09:08:44 +00:00
parent b0efd4af05
commit 84dd8831d2
2 changed files with 36 additions and 23 deletions

View File

@ -4322,29 +4322,35 @@ palindrome('taco cat'); // true
### pluralize
If `num` is greater than `1` returns the plural form of the given string, else return the singular form.
Returns the singular or plural form of the word based on the input number. If the first argument is an `object`, it will use a closure by returning a function that can auto-pluralize words that don't simply end in `s` if the supplied dictionary contains the word.
Check if `num` is greater than `0`. Throw an appropriate `Error` if not, return the appropriate string otherwise.
Omit the third argument, `items`, to use a default plural form same as `item` suffixed with a single `'s'`.
If `num` is either `-1` or `1`, return the singular form of the word. If `num` is any other number, return the plural form. Omit the third argument to use the default of the singular word + `s`, or supply a custom pluralized word when necessary. If the first argument is an `object`, utilize a closure by returning a function which can use the supplied dictionary to resolve the correct plural form of the word.
```js
const pluralize = (num, item, items = item + 's') =>
num <= 0
? (() => {
throw new Error(`'num' should be >= 1. Value povided was ${num}.`);
})()
: num === 1 ? item : items;
const pluralize = (val, word, plural = word + 's') => {
const _pluralize = (num, word, plural = word + 's') =>
[1, -1].includes(Number(num)) ? word : plural;
if (typeof val === 'object') return (num, word) => _pluralize(num, word, val[word]);
return _pluralize(val, word, plural);
};
```
<details>
<summary>Examples</summary>
```js
pluralize(1, 'apple', 'apples'); // 'apple'
pluralize(3, 'apple', 'apples'); // 'apples'
pluralize(0, 'apple'); // 'apples'
pluralize(1, 'apple'); // 'apple'
pluralize(2, 'apple'); // 'apples'
pluralize(0, 'apple', 'apples'); // Gives error
pluralize(-3, 'apple', 'apples'); // Gives error
pluralize(1, 'person'); // 'person'
pluralize(2, 'person', 'people'); // 'people'
const PLURALS = {
person: 'people',
radius: 'radii'
};
const autoPluralize = pluralize(PLURALS);
autoPluralize(2, 'person'); // 'people'
```
</details>

View File

@ -940,17 +940,24 @@ a <span class="token operator">===</span> b<span class="token punctuation">;</sp
);
};</span>
</pre><label class="collapse">Show examples</label><pre class="language-js"><span class="token function">palindrome</span><span class="token punctuation">(</span><span class="token string">'taco cat'</span><span class="token punctuation">);</span> <span class="token comment">// true</span>
</pre><button class="primary clipboard-copy"><img src="clipboard.svg" alt="clipboard">&nbsp;Copy to clipboard</button></div></div><div class="card fluid"><h3 id="pluralize" class="section double-padded">pluralize</h3><div class="section double-padded"><p>If <code>num</code> is greater than <code>1</code> returns the plural form of the given string, else return the singular form.</p><p>Check if <code>num</code> is greater than <code>0</code>. Throw an appropriate <code>Error</code> if not, return the appropriate string otherwise. Omit the third argument, <code>items</code>, to use a default plural form same as <code>item</code> suffixed with a single <code>'s'</code>.</p><pre class="language-js"><span class="token keyword">const</span> pluralize <span class="token operator">=</span> <span class="token punctuation">(</span>num<span class="token punctuation">,</span> item<span class="token punctuation">,</span> items <span class="token operator">=</span> item <span class="token operator">+</span> <span class="token string">'s'</span><span class="token punctuation">)</span> <span class="token operator">=></span>
num <span class="token operator">&lt;=</span> <span class="token number">0</span>
<span class="token operator">?</span> <span class="token punctuation">(()</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
<span class="token keyword">throw new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token template-string"><span class="token string">`'num' should be >= 1. Value povided was </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>num<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">.`</span></span><span class="token punctuation">);
})()
:</span> num <span class="token operator">===</span> <span class="token number">1</span> <span class="token operator">?</span> item <span class="token punctuation">:</span> items<span class="token punctuation">;</span>
</pre><label class="collapse">Show examples</label><pre class="language-js"><span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'apple'</span><span class="token punctuation">,</span> <span class="token string">'apples'</span><span class="token punctuation">);</span> <span class="token comment">// 'apple'</span>
<span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token string">'apple'</span><span class="token punctuation">,</span> <span class="token string">'apples'</span><span class="token punctuation">);</span> <span class="token comment">// 'apples'</span>
</pre><button class="primary clipboard-copy"><img src="clipboard.svg" alt="clipboard">&nbsp;Copy to clipboard</button></div></div><div class="card fluid"><h3 id="pluralize" class="section double-padded">pluralize</h3><div class="section double-padded"><p>Returns the singular or plural form of the word based on the input number. If the first argument is an <code>object</code>, it will use a closure by returning a function that can auto-pluralize words that don't simply end in <code>s</code> if the supplied dictionary contains the word.</p><p>If <code>num</code> is either <code>-1</code> or <code>1</code>, return the singular form of the word. If <code>num</code> is any other number, return the plural form. Omit the third argument to use the default of the singular word + <code>s</code>, or supply a custom pluralized word when necessary. If the first argument is an <code>object</code>, utilize a closure by returning a function which can use the supplied dictionary to resolve the correct plural form of the word.</p><pre class="language-js"><span class="token keyword">const</span> pluralize <span class="token operator">=</span> <span class="token punctuation">(</span>val<span class="token punctuation">,</span> word<span class="token punctuation">,</span> plural <span class="token operator">=</span> word <span class="token operator">+</span> <span class="token string">'s'</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> _pluralize <span class="token operator">=</span> <span class="token punctuation">(</span>num<span class="token punctuation">,</span> word<span class="token punctuation">,</span> plural <span class="token operator">=</span> word <span class="token operator">+</span> <span class="token string">'s'</span><span class="token punctuation">)</span> <span class="token operator">=></span>
<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">].</span><span class="token function">includes</span><span class="token punctuation">(</span><span class="token function">Number</span><span class="token punctuation">(</span>num<span class="token punctuation">))</span> <span class="token operator">?</span> word <span class="token punctuation">:</span> plural<span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> val <span class="token operator">===</span> <span class="token string">'object'</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token punctuation">(</span>num<span class="token punctuation">,</span> word<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token function">_pluralize</span><span class="token punctuation">(</span>num<span class="token punctuation">,</span> word<span class="token punctuation">,</span> val<span class="token punctuation">[</span>word<span class="token punctuation">]);</span>
<span class="token keyword">return</span> <span class="token function">_pluralize</span><span class="token punctuation">(</span>val<span class="token punctuation">,</span> word<span class="token punctuation">,</span> plural<span class="token punctuation">);
};</span>
</pre><label class="collapse">Show examples</label><pre class="language-js"><span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'apple'</span><span class="token punctuation">);</span> <span class="token comment">// 'apples'</span>
<span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'apple'</span><span class="token punctuation">);</span> <span class="token comment">// 'apple'</span>
<span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'apple'</span><span class="token punctuation">);</span> <span class="token comment">// 'apples'</span>
<span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'apple'</span><span class="token punctuation">,</span> <span class="token string">'apples'</span><span class="token punctuation">);</span> <span class="token comment">// Gives error</span>
<span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token string">'apple'</span><span class="token punctuation">,</span> <span class="token string">'apples'</span><span class="token punctuation">);</span> <span class="token comment">// Gives error</span>
<span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">'person'</span><span class="token punctuation">);</span> <span class="token comment">// 'person'</span>
<span class="token function">pluralize</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'person'</span><span class="token punctuation">,</span> <span class="token string">'people'</span><span class="token punctuation">);</span> <span class="token comment">// 'people'</span>
<span class="token keyword">const</span> PLURALS <span class="token operator">=</span> <span class="token punctuation">{</span>
person<span class="token punctuation">:</span> <span class="token string">'people'</span><span class="token punctuation">,</span>
radius<span class="token punctuation">:</span> <span class="token string">'radii'</span>
<span class="token punctuation">};</span>
<span class="token keyword">const</span> autoPluralize <span class="token operator">=</span> <span class="token function">pluralize</span><span class="token punctuation">(</span>PLURALS<span class="token punctuation">);</span>
<span class="token function">autoPluralize</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">'person'</span><span class="token punctuation">);</span> <span class="token comment">// 'people'</span>
</pre><button class="primary clipboard-copy"><img src="clipboard.svg" alt="clipboard">&nbsp;Copy to clipboard</button></div></div><div class="card fluid"><h3 id="repeatstring" class="section double-padded">repeatString</h3><div class="section double-padded"><p>Repeats a string n times using <code>String.repeat()</code></p><p>If no string is provided the default is <code>&quot;&quot;</code> and the default number of times is 2.</p><pre class="language-js"><span class="token keyword">const</span> repeatString <span class="token operator">=</span> <span class="token punctuation">(</span>str <span class="token operator">=</span> <span class="token string">''</span><span class="token punctuation">,</span> num <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> num <span class="token operator">>=</span> <span class="token number">0</span> <span class="token operator">?</span> str<span class="token punctuation">.</span><span class="token function">repeat</span><span class="token punctuation">(</span>num<span class="token punctuation">) :</span> str<span class="token punctuation">;
};</span>