js_stack 1.11.1 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2df64d90b6e228709173b8b89d0a623103fd4137
4
- data.tar.gz: 082102bb1a1a0594be909500d5b1395ddbb5df22
3
+ metadata.gz: e18613e1a854b61cd62ab38af1097a1e698e6ce2
4
+ data.tar.gz: 9fbe7406315e3a6111e522eb7a546be7c8223830
5
5
  SHA512:
6
- metadata.gz: b22d55c0fe6a882ab4ab332f82f4ac500dac53fc39736c0b154660a33fd432d83e5973b006d62c8e90083fd64a3b98a3224d4dfbd63164eab04d268ea0724a06
7
- data.tar.gz: 2176cf4664d8514c07b7ac9d67dc95c1fd37b0e3b1c2308a4d79b9f32ff9dbb89ef66527487a472440472f9574a0bddae63ed4348042dc16785b2ecba645fec1
6
+ metadata.gz: 05cab61f037677653bec5069d45dbe086887e5d2b66b48d27e6319081fd5cd4f5cb4d212f21349529908d13c61ccc7c8e03973f2da0ba75f19cb49a3b11eef70
7
+ data.tar.gz: fdf05134893a57f6efc7fa9be95ee8602af045b6ae41bd3b68383332508f47817fe230a5890c631e3e30ddd8b262f4fa4d09bdc1f0ab6676bccd70b9268b127e
@@ -1,10 +1,10 @@
1
1
  # Changelog
2
2
 
3
- # 1.11.1
3
+ # 1.12.0
4
4
 
5
- * remove momentjs-rails require [@gvl]
5
+ * add underscore.inflections 1.3.0 [@dstodolny]
6
6
 
7
- # 1.11.0
7
+ # 1.11.1
8
8
 
9
9
  * update backbone 1.1.2 -> 1.2.3 [@gvl]
10
10
  * update marionette 2.4.1 -> 2.4.3 [@gvl]
data/README.md CHANGED
@@ -68,7 +68,7 @@ Examples:
68
68
  | backbone virtualcollection | **0.6.6**, 0.5.3, 0.4.15 | [changelog](https://github.com/p3drosola/Backbone.VirtualCollection/wiki/Changelog) | [homepage](https://github.com/p3drosola/Backbone.VirtualCollection) |
69
69
  | cocktail | **0.5.10** | None | [homepage](https://github.com/onsi/cocktail) |
70
70
  | momentjs | **2.10.6** | [changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) | [homepage](https://github.com/moment/moment) |
71
- | underscore inflections | **0.2.1** | None | [homepage](https://github.com/geetarista/underscore.inflections) |
71
+ | underscore inflections | **1.3.0**, 0.2.1 | None | [homepage](https://github.com/jeremyruppel/underscore.inflection) [homepage 0.2.1](https://github.com/geetarista/underscore.inflections) |
72
72
  | underscore string | **3.2.2**, 3.0.3, 2.4.0, 2.3.2 | [changelog](https://github.com/epeli/underscore.string/blob/master/CHANGELOG.markdown) | [homepage](http://epeli.github.io/underscore.string/) |
73
73
 
74
74
  ## Contributing
@@ -1,3 +1,3 @@
1
1
  module JsStack
2
- VERSION = '1.11.1'
2
+ VERSION = '1.12.0'
3
3
  end
@@ -1 +1 @@
1
- //= require js_stack/plugins/underscore/inflections/0.2.1
1
+ //= require js_stack/plugins/underscore/inflections/1.3.0
@@ -0,0 +1,255 @@
1
+ // Underscore.inflection.js
2
+ // (c) 2014 Jeremy Ruppel
3
+ // Underscore.inflection is freely distributable under the MIT license.
4
+ // Portions of Underscore.inflection are inspired or borrowed from ActiveSupport
5
+ // Version 1.0.0
6
+
7
+ (function(root, factory) {
8
+ if (typeof define === 'function' && define.amd) {
9
+ // AMD. Register as an anonymous module.
10
+ define(['underscore'], factory);
11
+ } else if (typeof require === 'function' && typeof exports === 'object') {
12
+ // CommonJS
13
+ module.exports = factory(require('underscore'));
14
+ } else {
15
+ // Browser globals (root is window)
16
+ factory(root._);
17
+ }
18
+ })(this, function(_, undefined) {
19
+ var plurals = [];
20
+ var singulars = [];
21
+ var uncountables = [];
22
+
23
+ /**
24
+ * Inflector
25
+ */
26
+ var inflector = {
27
+
28
+ /**
29
+ * `gsub` is a method that is just slightly different than our
30
+ * standard `String#replace`. The main differences are that it
31
+ * matches globally every time, and if no substitution is made
32
+ * it returns `null`. It accepts a string for `word` and
33
+ * `replacement`, and `rule` can be either a string or a regex.
34
+ */
35
+ gsub: function(word, rule, replacement) {
36
+ var pattern = new RegExp(rule.source || rule, 'gi');
37
+
38
+ return pattern.test(word) ? word.replace(pattern, replacement) : null;
39
+ },
40
+
41
+ /**
42
+ * `plural` creates a new pluralization rule for the inflector.
43
+ * `rule` can be either a string or a regex.
44
+ */
45
+ plural: function(rule, replacement) {
46
+ plurals.unshift([rule, replacement]);
47
+ },
48
+
49
+ /**
50
+ * Pluralizes the string passed to it. It also can accept a
51
+ * number as the second parameter. If a number is provided,
52
+ * it will pluralize the word to match the number. Optionally,
53
+ * you can pass `true` as a third parameter. If found, this
54
+ * will include the count with the output.
55
+ */
56
+ pluralize: function(word, count, includeNumber) {
57
+ var result;
58
+
59
+ if (count !== undefined) {
60
+ count = parseFloat(count);
61
+ result = (count === 1) ? this.singularize(word) : this.pluralize(word);
62
+ result = (includeNumber) ? [count, result].join(' ') : result;
63
+ } else {
64
+ if (_(uncountables).include(word)) {
65
+ return word;
66
+ }
67
+
68
+ result = word;
69
+
70
+ _(plurals).detect(function(rule) {
71
+ var gsub = this.gsub(word, rule[0], rule[1]);
72
+
73
+ return gsub ? (result = gsub) : false;
74
+ },
75
+ this);
76
+ }
77
+
78
+ return result;
79
+ },
80
+
81
+ /**
82
+ * `singular` creates a new singularization rule for the
83
+ * inflector. `rule` can be either a string or a regex.
84
+ */
85
+ singular: function(rule, replacement) {
86
+ singulars.unshift([rule, replacement]);
87
+ },
88
+
89
+ /**
90
+ * `singularize` returns the singular version of the plural
91
+ * passed to it.
92
+ */
93
+ singularize: function(word) {
94
+ if (_(uncountables).include(word)) {
95
+ return word;
96
+ }
97
+
98
+ var result = word;
99
+
100
+ _(singulars).detect(function(rule) {
101
+ var gsub = this.gsub(word, rule[0], rule[1]);
102
+
103
+ return gsub ? (result = gsub) : false;
104
+ },
105
+ this);
106
+
107
+ return result;
108
+ },
109
+
110
+ /**
111
+ * `irregular` is a shortcut method to create both a
112
+ * pluralization and singularization rule for the word at
113
+ * the same time. You must supply both the singular form
114
+ * and the plural form as explicit strings.
115
+ */
116
+ irregular: function(singular, plural) {
117
+ this.plural('\\b' + singular + '\\b', plural);
118
+ this.singular('\\b' + plural + '\\b', singular);
119
+ },
120
+
121
+ /**
122
+ * `uncountable` creates a new uncountable rule for `word`.
123
+ * Uncountable words do not get pluralized or singularized.
124
+ */
125
+ uncountable: function(word) {
126
+ uncountables.unshift(word);
127
+ },
128
+
129
+ /**
130
+ * `ordinalize` adds an ordinal suffix to `number`.
131
+ */
132
+ ordinalize: function(number) {
133
+ if (isNaN(number)) {
134
+ return number;
135
+ }
136
+
137
+ number = number.toString();
138
+ var lastDigit = number.slice(-1);
139
+ var lastTwoDigits = number.slice(-2);
140
+
141
+ if (lastTwoDigits === '11' || lastTwoDigits === '12' || lastTwoDigits === '13') {
142
+ return number + 'th';
143
+ }
144
+
145
+ switch (lastDigit) {
146
+ case '1':
147
+ return number + 'st';
148
+ case '2':
149
+ return number + 'nd';
150
+ case '3':
151
+ return number + 'rd';
152
+ default:
153
+ return number + 'th';
154
+ }
155
+ },
156
+
157
+ /**
158
+ * `titleize` capitalizes the first letter of each word in
159
+ * the string `words`. It preserves the existing whitespace.
160
+ */
161
+ titleize: function(words) {
162
+ if (typeof words !== 'string') {
163
+ return words;
164
+ }
165
+
166
+ return words.replace(/\S+/g, function(word) {
167
+ return word.charAt(0).toUpperCase() + word.slice(1);
168
+ });
169
+ },
170
+
171
+ /**
172
+ * Resets the inflector's rules to their initial state,
173
+ * clearing out any custom rules that have been added.
174
+ */
175
+ resetInflections: function() {
176
+ plurals = [];
177
+ singulars = [];
178
+ uncountables = [];
179
+
180
+ this.plural(/$/, 's');
181
+ this.plural(/s$/, 's');
182
+ this.plural(/(ax|test)is$/, '$1es');
183
+ this.plural(/(octop|vir)us$/, '$1i');
184
+ this.plural(/(octop|vir)i$/, '$1i');
185
+ this.plural(/(alias|status)$/, '$1es');
186
+ this.plural(/(bu)s$/, '$1ses');
187
+ this.plural(/(buffal|tomat)o$/, '$1oes');
188
+ this.plural(/([ti])um$/, '$1a');
189
+ this.plural(/([ti])a$/, '$1a');
190
+ this.plural(/sis$/, 'ses');
191
+ this.plural(/(?:([^f])fe|([lr])?f)$/, '$1$2ves');
192
+ this.plural(/(hive)$/, '$1s');
193
+ this.plural(/([^aeiouy]|qu)y$/, '$1ies');
194
+ this.plural(/(x|ch|ss|sh)$/, '$1es');
195
+ this.plural(/(matr|vert|ind)(?:ix|ex)$/, '$1ices');
196
+ this.plural(/([m|l])ouse$/, '$1ice');
197
+ this.plural(/([m|l])ice$/, '$1ice');
198
+ this.plural(/^(ox)$/, '$1en');
199
+ this.plural(/^(oxen)$/, '$1');
200
+ this.plural(/(quiz)$/, '$1zes');
201
+
202
+ this.singular(/s$/, '');
203
+ this.singular(/(n)ews$/, '$1ews');
204
+ this.singular(/([ti])a$/, '$1um');
205
+ this.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/, '$1$2sis');
206
+ this.singular(/(^analy)ses$/, '$1sis');
207
+ this.singular(/([^f])ves$/, '$1fe');
208
+ this.singular(/(hive)s$/, '$1');
209
+ this.singular(/(tive)s$/, '$1');
210
+ this.singular(/([lr])ves$/, '$1f');
211
+ this.singular(/([^aeiouy]|qu)ies$/, '$1y');
212
+ this.singular(/(s)eries$/, '$1eries');
213
+ this.singular(/(m)ovies$/, '$1ovie');
214
+ this.singular(/(x|ch|ss|sh)es$/, '$1');
215
+ this.singular(/([m|l])ice$/, '$1ouse');
216
+ this.singular(/(bus)es$/, '$1');
217
+ this.singular(/(o)es$/, '$1');
218
+ this.singular(/(shoe)s$/, '$1');
219
+ this.singular(/(cris|ax|test)es$/, '$1is');
220
+ this.singular(/(octop|vir)i$/, '$1us');
221
+ this.singular(/(alias|status)es$/, '$1');
222
+ this.singular(/^(ox)en/, '$1');
223
+ this.singular(/(vert|ind)ices$/, '$1ex');
224
+ this.singular(/(matr)ices$/, '$1ix');
225
+ this.singular(/(quiz)zes$/, '$1');
226
+ this.singular(/(database)s$/, '$1');
227
+
228
+ this.irregular('person', 'people');
229
+ this.irregular('man', 'men');
230
+ this.irregular('child', 'children');
231
+ this.irregular('sex', 'sexes');
232
+ this.irregular('move', 'moves');
233
+ this.irregular('cow', 'kine');
234
+
235
+ this.uncountable('equipment');
236
+ this.uncountable('information');
237
+ this.uncountable('rice');
238
+ this.uncountable('money');
239
+ this.uncountable('species');
240
+ this.uncountable('series');
241
+ this.uncountable('fish');
242
+ this.uncountable('sheep');
243
+ this.uncountable('jeans');
244
+
245
+ return this;
246
+ }
247
+ };
248
+
249
+ /**
250
+ * Underscore integration
251
+ */
252
+ _.mixin(inflector.resetInflections());
253
+
254
+ return inflector;
255
+ });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: js_stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.1
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomasz Pewiński
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-16 00:00:00.000000000 Z
12
+ date: 2015-10-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: haml_coffee_assets
@@ -228,6 +228,7 @@ files:
228
228
  - vendor/assets/javascripts/js_stack/plugins/underscore.inflections.js
229
229
  - vendor/assets/javascripts/js_stack/plugins/underscore.string.js
230
230
  - vendor/assets/javascripts/js_stack/plugins/underscore/inflections/0.2.1.js
231
+ - vendor/assets/javascripts/js_stack/plugins/underscore/inflections/1.3.0.js
231
232
  - vendor/assets/javascripts/js_stack/plugins/underscore/string/2.3.2.js
232
233
  - vendor/assets/javascripts/js_stack/plugins/underscore/string/2.4.0.js
233
234
  - vendor/assets/javascripts/js_stack/plugins/underscore/string/3.0.3.js