1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
| module.exports = pluralize;
|
| /**
| * Pluralization rules.
| *
| * These rules are applied while processing the argument to `toCollectionName`.
| *
| * @deprecated remove in 4.x gh-1350
| */
|
| exports.pluralization = [
| [/(m)an$/gi, '$1en'],
| [/(pe)rson$/gi, '$1ople'],
| [/(child)$/gi, '$1ren'],
| [/^(ox)$/gi, '$1en'],
| [/(ax|test)is$/gi, '$1es'],
| [/(octop|vir)us$/gi, '$1i'],
| [/(alias|status)$/gi, '$1es'],
| [/(bu)s$/gi, '$1ses'],
| [/(buffal|tomat|potat)o$/gi, '$1oes'],
| [/([ti])um$/gi, '$1a'],
| [/sis$/gi, 'ses'],
| [/(?:([^f])fe|([lr])f)$/gi, '$1$2ves'],
| [/(hive)$/gi, '$1s'],
| [/([^aeiouy]|qu)y$/gi, '$1ies'],
| [/(x|ch|ss|sh)$/gi, '$1es'],
| [/(matr|vert|ind)ix|ex$/gi, '$1ices'],
| [/([m|l])ouse$/gi, '$1ice'],
| [/(kn|w|l)ife$/gi, '$1ives'],
| [/(quiz)$/gi, '$1zes'],
| [/s$/gi, 's'],
| [/([^a-z])$/, '$1'],
| [/$/gi, 's']
| ];
| var rules = exports.pluralization;
|
| /**
| * Uncountable words.
| *
| * These words are applied while processing the argument to `toCollectionName`.
| * @api public
| */
|
| exports.uncountables = [
| 'advice',
| 'energy',
| 'excretion',
| 'digestion',
| 'cooperation',
| 'health',
| 'justice',
| 'labour',
| 'machinery',
| 'equipment',
| 'information',
| 'pollution',
| 'sewage',
| 'paper',
| 'money',
| 'species',
| 'series',
| 'rain',
| 'rice',
| 'fish',
| 'sheep',
| 'moose',
| 'deer',
| 'news',
| 'expertise',
| 'status',
| 'media'
| ];
| var uncountables = exports.uncountables;
|
| /*!
| * Pluralize function.
| *
| * @author TJ Holowaychuk (extracted from _ext.js_)
| * @param {String} string to pluralize
| * @api private
| */
|
| function pluralize(str) {
| var found;
| str = str.toLowerCase();
| if (!~uncountables.indexOf(str)) {
| found = rules.filter(function(rule) {
| return str.match(rule[0]);
| });
| if (found[0]) {
| return str.replace(found[0][0], found[0][1]);
| }
| }
| return str;
| }
|
|