neat-rails 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,825 @@
1
+ // https://github.com/MSNexploder/inflect
2
+
3
+ var require = function (file, cwd) {
4
+ var resolved = require.resolve(file, cwd || '/');
5
+ var mod = require.modules[resolved];
6
+ if (!mod) throw new Error(
7
+ 'Failed to resolve module ' + file + ', tried ' + resolved
8
+ );
9
+ var res = mod._cached ? mod._cached : mod();
10
+ return res;
11
+ }
12
+
13
+ require.paths = [];
14
+ require.modules = {};
15
+ require.extensions = [".js",".coffee"];
16
+
17
+ require._core = {
18
+ 'assert': true,
19
+ 'events': true,
20
+ 'fs': true,
21
+ 'path': true,
22
+ 'vm': true
23
+ };
24
+
25
+ require.resolve = (function () {
26
+ return function (x, cwd) {
27
+ if (!cwd) cwd = '/';
28
+
29
+ if (require._core[x]) return x;
30
+ var path = require.modules.path();
31
+ var y = cwd || '.';
32
+
33
+ if (x.match(/^(?:\.\.?\/|\/)/)) {
34
+ var m = loadAsFileSync(path.resolve(y, x))
35
+ || loadAsDirectorySync(path.resolve(y, x));
36
+ if (m) return m;
37
+ }
38
+
39
+ var n = loadNodeModulesSync(x, y);
40
+ if (n) return n;
41
+
42
+ throw new Error("Cannot find module '" + x + "'");
43
+
44
+ function loadAsFileSync (x) {
45
+ if (require.modules[x]) {
46
+ return x;
47
+ }
48
+
49
+ for (var i = 0; i < require.extensions.length; i++) {
50
+ var ext = require.extensions[i];
51
+ if (require.modules[x + ext]) return x + ext;
52
+ }
53
+ }
54
+
55
+ function loadAsDirectorySync (x) {
56
+ x = x.replace(/\/+$/, '');
57
+ var pkgfile = x + '/package.json';
58
+ if (require.modules[pkgfile]) {
59
+ var pkg = require.modules[pkgfile]();
60
+ var b = pkg.browserify;
61
+ if (typeof b === 'object' && b.main) {
62
+ var m = loadAsFileSync(path.resolve(x, b.main));
63
+ if (m) return m;
64
+ }
65
+ else if (typeof b === 'string') {
66
+ var m = loadAsFileSync(path.resolve(x, b));
67
+ if (m) return m;
68
+ }
69
+ else if (pkg.main) {
70
+ var m = loadAsFileSync(path.resolve(x, pkg.main));
71
+ if (m) return m;
72
+ }
73
+ }
74
+
75
+ return loadAsFileSync(x + '/index');
76
+ }
77
+
78
+ function loadNodeModulesSync (x, start) {
79
+ var dirs = nodeModulesPathsSync(start);
80
+ for (var i = 0; i < dirs.length; i++) {
81
+ var dir = dirs[i];
82
+ var m = loadAsFileSync(dir + '/' + x);
83
+ if (m) return m;
84
+ var n = loadAsDirectorySync(dir + '/' + x);
85
+ if (n) return n;
86
+ }
87
+
88
+ var m = loadAsFileSync(x);
89
+ if (m) return m;
90
+ }
91
+
92
+ function nodeModulesPathsSync (start) {
93
+ var parts;
94
+ if (start === '/') parts = [ '' ];
95
+ else parts = path.normalize(start).split('/');
96
+
97
+ var dirs = [];
98
+ for (var i = parts.length - 1; i >= 0; i--) {
99
+ if (parts[i] === 'node_modules') continue;
100
+ var dir = parts.slice(0, i + 1).join('/') + '/node_modules';
101
+ dirs.push(dir);
102
+ }
103
+
104
+ return dirs;
105
+ }
106
+ };
107
+ })();
108
+
109
+ require.alias = function (from, to) {
110
+ var path = require.modules.path();
111
+ var res = null;
112
+ try {
113
+ res = require.resolve(from + '/package.json', '/');
114
+ }
115
+ catch (err) {
116
+ res = require.resolve(from, '/');
117
+ }
118
+ var basedir = path.dirname(res);
119
+
120
+ var keys = Object_keys(require.modules);
121
+
122
+ for (var i = 0; i < keys.length; i++) {
123
+ var key = keys[i];
124
+ if (key.slice(0, basedir.length + 1) === basedir + '/') {
125
+ var f = key.slice(basedir.length);
126
+ require.modules[to + f] = require.modules[basedir + f];
127
+ }
128
+ else if (key === basedir) {
129
+ require.modules[to] = require.modules[basedir];
130
+ }
131
+ }
132
+ };
133
+
134
+ require.define = function (filename, fn) {
135
+ var dirname = require._core[filename]
136
+ ? ''
137
+ : require.modules.path().dirname(filename)
138
+ ;
139
+
140
+ var require_ = function (file) {
141
+ return require(file, dirname)
142
+ };
143
+ require_.resolve = function (name) {
144
+ return require.resolve(name, dirname);
145
+ };
146
+ require_.modules = require.modules;
147
+ require_.define = require.define;
148
+ var module_ = { exports : {} };
149
+
150
+ require.modules[filename] = function () {
151
+ require.modules[filename]._cached = module_.exports;
152
+ fn.call(
153
+ module_.exports,
154
+ require_,
155
+ module_,
156
+ module_.exports,
157
+ dirname,
158
+ filename
159
+ );
160
+ require.modules[filename]._cached = module_.exports;
161
+ return module_.exports;
162
+ };
163
+ };
164
+
165
+ var Object_keys = Object.keys || function (obj) {
166
+ var res = [];
167
+ for (var key in obj) res.push(key)
168
+ return res;
169
+ };
170
+
171
+ if (typeof process === 'undefined') process = {};
172
+
173
+ if (!process.nextTick) process.nextTick = function (fn) {
174
+ setTimeout(fn, 0);
175
+ };
176
+
177
+ if (!process.title) process.title = 'browser';
178
+
179
+ if (!process.binding) process.binding = function (name) {
180
+ if (name === 'evals') return require('vm')
181
+ else throw new Error('No such module')
182
+ };
183
+
184
+ if (!process.cwd) process.cwd = function () { return '.' };
185
+
186
+ require.define("path", function (require, module, exports, __dirname, __filename) {
187
+ function filter (xs, fn) {
188
+ var res = [];
189
+ for (var i = 0; i < xs.length; i++) {
190
+ if (fn(xs[i], i, xs)) res.push(xs[i]);
191
+ }
192
+ return res;
193
+ }
194
+
195
+ // resolves . and .. elements in a path array with directory names there
196
+ // must be no slashes, empty elements, or device names (c:\) in the array
197
+ // (so also no leading and trailing slashes - it does not distinguish
198
+ // relative and absolute paths)
199
+ function normalizeArray(parts, allowAboveRoot) {
200
+ // if the path tries to go above the root, `up` ends up > 0
201
+ var up = 0;
202
+ for (var i = parts.length; i >= 0; i--) {
203
+ var last = parts[i];
204
+ if (last == '.') {
205
+ parts.splice(i, 1);
206
+ } else if (last === '..') {
207
+ parts.splice(i, 1);
208
+ up++;
209
+ } else if (up) {
210
+ parts.splice(i, 1);
211
+ up--;
212
+ }
213
+ }
214
+
215
+ // if the path is allowed to go above the root, restore leading ..s
216
+ if (allowAboveRoot) {
217
+ for (; up--; up) {
218
+ parts.unshift('..');
219
+ }
220
+ }
221
+
222
+ return parts;
223
+ }
224
+
225
+ // Regex to split a filename into [*, dir, basename, ext]
226
+ // posix version
227
+ var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/;
228
+
229
+ // path.resolve([from ...], to)
230
+ // posix version
231
+ exports.resolve = function() {
232
+ var resolvedPath = '',
233
+ resolvedAbsolute = false;
234
+
235
+ for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) {
236
+ var path = (i >= 0)
237
+ ? arguments[i]
238
+ : process.cwd();
239
+
240
+ // Skip empty and invalid entries
241
+ if (typeof path !== 'string' || !path) {
242
+ continue;
243
+ }
244
+
245
+ resolvedPath = path + '/' + resolvedPath;
246
+ resolvedAbsolute = path.charAt(0) === '/';
247
+ }
248
+
249
+ // At this point the path should be resolved to a full absolute path, but
250
+ // handle relative paths to be safe (might happen when process.cwd() fails)
251
+
252
+ // Normalize the path
253
+ resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
254
+ return !!p;
255
+ }), !resolvedAbsolute).join('/');
256
+
257
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
258
+ };
259
+
260
+ // path.normalize(path)
261
+ // posix version
262
+ exports.normalize = function(path) {
263
+ var isAbsolute = path.charAt(0) === '/',
264
+ trailingSlash = path.slice(-1) === '/';
265
+
266
+ // Normalize the path
267
+ path = normalizeArray(filter(path.split('/'), function(p) {
268
+ return !!p;
269
+ }), !isAbsolute).join('/');
270
+
271
+ if (!path && !isAbsolute) {
272
+ path = '.';
273
+ }
274
+ if (path && trailingSlash) {
275
+ path += '/';
276
+ }
277
+
278
+ return (isAbsolute ? '/' : '') + path;
279
+ };
280
+
281
+
282
+ // posix version
283
+ exports.join = function() {
284
+ var paths = Array.prototype.slice.call(arguments, 0);
285
+ return exports.normalize(filter(paths, function(p, index) {
286
+ return p && typeof p === 'string';
287
+ }).join('/'));
288
+ };
289
+
290
+
291
+ exports.dirname = function(path) {
292
+ var dir = splitPathRe.exec(path)[1] || '';
293
+ var isWindows = false;
294
+ if (!dir) {
295
+ // No dirname
296
+ return '.';
297
+ } else if (dir.length === 1 ||
298
+ (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) {
299
+ // It is just a slash or a drive letter with a slash
300
+ return dir;
301
+ } else {
302
+ // It is a full dirname, strip trailing slash
303
+ return dir.substring(0, dir.length - 1);
304
+ }
305
+ };
306
+
307
+
308
+ exports.basename = function(path, ext) {
309
+ var f = splitPathRe.exec(path)[2] || '';
310
+ // TODO: make this comparison case-insensitive on windows?
311
+ if (ext && f.substr(-1 * ext.length) === ext) {
312
+ f = f.substr(0, f.length - ext.length);
313
+ }
314
+ return f;
315
+ };
316
+
317
+
318
+ exports.extname = function(path) {
319
+ return splitPathRe.exec(path)[3] || '';
320
+ };
321
+
322
+ });
323
+
324
+ require.define("/node_modules/files", function (require, module, exports, __dirname, __filename) {
325
+ module.exports = {"package.json":"{\n \"name\": \"inflect\",\n \"description\": \"A port of the Rails / ActiveSupport inflector to JavaScript.\",\n \"keywords\": [\"inflect\", \"activerecord\", \"rails\", \"activesupport\", \"string\"],\n \"version\": \"0.2.0\",\n \"author\": \"Stefan Huber <MSNexploder@gmail.com>\",\n \"homepage\": \"http://msnexploder.github.com/inflect/\",\n \"main\": \"lib/inflect\",\n \"files\": [\n \"Cakefile\",\n \"CHANGELOG.md\",\n \"doc\",\n \"lib\",\n \"LICENSE\",\n \"README.md\",\n \"spec\",\n \"src\"\n ],\n \"scripts\": {\n \"test\": \"cake test\"\n },\n \"directories\": {\n \"doc\":\"./doc\",\n \"lib\":\"./lib\"\n },\n \"engines\": {\n \"node\": \">= 0.4.x <= 0.6.x\"\n },\n \"devDependencies\": {\n \"coffee-script\": \">= 1.1.2 < 2.0.0\",\n \"docco\": \">= 0.3.0 < 0.4.0\",\n \"vows\": \">= 0.6.0 < 0.7.0\",\n \"browserify\": \">= 1.8.1 < 1.9.0\",\n \"fileify\": \">= 0.3.1 < 0.4.0\",\n \"uglify-js\": \">= 1.1.1 < 1.2.0\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/MSNexploder/inflect.git\"\n },\n \"bugs\": { \"url\": \"https://github.com/MSNexploder/inflect/issues\" },\n \"licenses\": [\n { \"type\": \"MIT\",\n \"url\": \"https://github.com/MSNexploder/inflect/raw/master/LICENSE\"\n }\n ]\n}"}
326
+
327
+ });
328
+
329
+ require.define("/inflect/index.coffee", function (require, module, exports, __dirname, __filename) {
330
+ (function() {
331
+ var Inflections, inflections, methods, number_extensions, string_extensions, version;
332
+
333
+ version = require('./version');
334
+
335
+ exports.package = version.package;
336
+
337
+ exports.version = version.version;
338
+
339
+ Inflections = require('./inflections').Inflections;
340
+
341
+ inflections = function(callback) {
342
+ if (callback != null) callback.call(this, Inflections.instance());
343
+ return Inflections.instance();
344
+ };
345
+
346
+ exports.Inflections = Inflections;
347
+
348
+ exports.inflections = inflections;
349
+
350
+ methods = require('./methods');
351
+
352
+ exports.camelize = methods.camelize;
353
+
354
+ exports.underscore = methods.underscore;
355
+
356
+ exports.dasherize = methods.dasherize;
357
+
358
+ exports.titleize = methods.titleize;
359
+
360
+ exports.capitalize = methods.capitalize;
361
+
362
+ exports.pluralize = methods.pluralize;
363
+
364
+ exports.singularize = methods.singularize;
365
+
366
+ exports.humanize = methods.humanize;
367
+
368
+ exports.ordinalize = methods.ordinalize;
369
+
370
+ exports.parameterize = methods.parameterize;
371
+
372
+ string_extensions = require('./string_extensions');
373
+
374
+ number_extensions = require('./number_extensions');
375
+
376
+ exports.enableStringExtensions = string_extensions.enableStringExtensions;
377
+
378
+ exports.enableNumberExtensions = number_extensions.enableNumberExtensions;
379
+
380
+ exports.enableExtensions = function() {
381
+ string_extensions.enableStringExtensions();
382
+ return number_extensions.enableNumberExtensions();
383
+ };
384
+
385
+ require('./default_inflections');
386
+
387
+ }).call(this);
388
+
389
+ });
390
+
391
+ require.define("/inflect/version.coffee", function (require, module, exports, __dirname, __filename) {
392
+ (function() {
393
+ var data, path;
394
+
395
+ path = require('path');
396
+
397
+ if (process.title === 'browser') {
398
+ data = require('files')['package.json'];
399
+ } else {
400
+ data = require('fs').readFileSync(path.join(__dirname, '/../../package.json'));
401
+ }
402
+
403
+ exports.package = JSON.parse(data);
404
+
405
+ exports.version = exports.package.version;
406
+
407
+ }).call(this);
408
+
409
+ });
410
+
411
+ require.define("fs", function (require, module, exports, __dirname, __filename) {
412
+ // nothing to see here... no file methods for the browser
413
+
414
+ });
415
+
416
+ require.define("/inflect/inflections.coffee", function (require, module, exports, __dirname, __filename) {
417
+ (function() {
418
+ var Inflections;
419
+ var __slice = Array.prototype.slice;
420
+
421
+ Inflections = (function() {
422
+
423
+ Inflections.instance = function() {
424
+ return this.__instance__ || (this.__instance__ = new this);
425
+ };
426
+
427
+ function Inflections() {
428
+ this.plurals = [];
429
+ this.singulars = [];
430
+ this.uncountables = [];
431
+ this.humans = [];
432
+ }
433
+
434
+ Inflections.prototype.plural = function(rule, replacement) {
435
+ var index;
436
+ if (typeof rule === 'string' && (index = this.uncountables.indexOf(rule)) !== -1) {
437
+ this.uncountables.splice(index, 1);
438
+ }
439
+ if ((index = this.uncountables.indexOf(replacement)) !== -1) {
440
+ this.uncountables.splice(index, 1);
441
+ }
442
+ return this.plurals.unshift([rule, replacement]);
443
+ };
444
+
445
+ Inflections.prototype.singular = function(rule, replacement) {
446
+ var index;
447
+ if (typeof rule === 'string' && (index = this.uncountables.indexOf(rule)) !== -1) {
448
+ this.uncountables.splice(index, 1);
449
+ }
450
+ if ((index = this.uncountables.indexOf(replacement)) !== -1) {
451
+ this.uncountables.splice(index, 1);
452
+ }
453
+ return this.singulars.unshift([rule, replacement]);
454
+ };
455
+
456
+ Inflections.prototype.irregular = function(singular, plural) {
457
+ var index;
458
+ if ((index = this.uncountables.indexOf(singular)) !== -1) {
459
+ this.uncountables.splice(index, 1);
460
+ }
461
+ if ((index = this.uncountables.indexOf(plural)) !== -1) {
462
+ this.uncountables.splice(index, 1);
463
+ }
464
+ if (singular[0].toUpperCase() === plural[0].toUpperCase()) {
465
+ this.plural(new RegExp("(" + singular[0] + ")" + singular.slice(1) + "$", "i"), '$1' + plural.slice(1));
466
+ this.plural(new RegExp("(" + plural[0] + ")" + plural.slice(1) + "$", "i"), '$1' + plural.slice(1));
467
+ return this.singular(new RegExp("(" + plural[0] + ")" + plural.slice(1) + "$", "i"), '$1' + singular.slice(1));
468
+ } else {
469
+ this.plural(new RegExp("" + (singular[0].toUpperCase()) + singular.slice(1) + "$"), plural[0].toUpperCase() + plural.slice(1));
470
+ this.plural(new RegExp("" + (singular[0].toLowerCase()) + singular.slice(1) + "$"), plural[0].toLowerCase() + plural.slice(1));
471
+ this.plural(new RegExp("" + (plural[0].toUpperCase()) + plural.slice(1) + "$"), plural[0].toUpperCase() + plural.slice(1));
472
+ this.plural(new RegExp("" + (plural[0].toLowerCase()) + plural.slice(1) + "$"), plural[0].toLowerCase() + plural.slice(1));
473
+ this.singular(new RegExp("" + (plural[0].toUpperCase()) + plural.slice(1) + "$"), singular[0].toUpperCase() + singular.slice(1));
474
+ return this.singular(new RegExp("" + (plural[0].toLowerCase()) + plural.slice(1) + "$"), singular[0].toLowerCase() + singular.slice(1));
475
+ }
476
+ };
477
+
478
+ Inflections.prototype.uncountable = function() {
479
+ var words;
480
+ words = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
481
+ return this.uncountables = this.uncountables.concat(words);
482
+ };
483
+
484
+ Inflections.prototype.human = function(rule, replacement) {
485
+ return this.humans.unshift([rule, replacement]);
486
+ };
487
+
488
+ Inflections.prototype.clear = function(scope) {
489
+ if (scope == null) scope = 'all';
490
+ if (scope === 'all') {
491
+ this.plurals = [];
492
+ this.singulars = [];
493
+ this.uncountables = [];
494
+ return this.humans = [];
495
+ } else {
496
+ return this[scope] = [];
497
+ }
498
+ };
499
+
500
+ return Inflections;
501
+
502
+ })();
503
+
504
+ exports.Inflections = Inflections;
505
+
506
+ }).call(this);
507
+
508
+ });
509
+
510
+ require.define("/inflect/methods.coffee", function (require, module, exports, __dirname, __filename) {
511
+ (function() {
512
+ var camelize, capitalize, dasherize, humanize, inflections, ordinalize, parameterize, pluralize, singularize, titleize, underscore;
513
+
514
+ inflections = require('../inflect').inflections;
515
+
516
+ camelize = function(lower_case_and_underscored_word, first_letter_in_uppercase) {
517
+ var rest;
518
+ if (first_letter_in_uppercase == null) first_letter_in_uppercase = true;
519
+ rest = lower_case_and_underscored_word.replace(/_./g, function(val) {
520
+ return val.slice(1).toUpperCase();
521
+ });
522
+ if (first_letter_in_uppercase) {
523
+ return lower_case_and_underscored_word[0].toUpperCase() + rest.slice(1);
524
+ } else {
525
+ return lower_case_and_underscored_word[0].toLowerCase() + rest.slice(1);
526
+ }
527
+ };
528
+
529
+ underscore = function(camel_cased_word) {
530
+ var word;
531
+ word = camel_cased_word.toString();
532
+ word = word.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2');
533
+ word = word.replace(/([a-z\d])([A-Z])/g, '$1_$2');
534
+ word = word.replace(/-/g, '_');
535
+ word = word.toLowerCase();
536
+ return word;
537
+ };
538
+
539
+ dasherize = function(underscored_word) {
540
+ return underscored_word.replace(/_/g, '-');
541
+ };
542
+
543
+ titleize = function(word) {
544
+ return humanize(underscore(word)).replace(/\b('?[a-z])/g, function(val) {
545
+ return capitalize(val);
546
+ });
547
+ };
548
+
549
+ capitalize = function(word) {
550
+ return (word[0] || '').toUpperCase() + (word.slice(1) || '').toLowerCase();
551
+ };
552
+
553
+ pluralize = function(word) {
554
+ var plural, replacement, result, rule, _i, _len, _ref;
555
+ result = word.toString();
556
+ if (word.length === 0 || inflections().uncountables.indexOf(result.toLowerCase()) !== -1) {
557
+ return result;
558
+ } else {
559
+ _ref = inflections().plurals;
560
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
561
+ plural = _ref[_i];
562
+ rule = plural[0];
563
+ replacement = plural[1];
564
+ if (result.search(rule) !== -1) {
565
+ result = result.replace(rule, replacement);
566
+ break;
567
+ }
568
+ }
569
+ return result;
570
+ }
571
+ };
572
+
573
+ singularize = function(word) {
574
+ var inflection, replacement, result, rule, singular, uncountable, _i, _j, _len, _len2, _ref, _ref2;
575
+ result = word.toString();
576
+ uncountable = false;
577
+ _ref = inflections().uncountables;
578
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
579
+ inflection = _ref[_i];
580
+ if (result.search(new RegExp("\\b" + inflection + "$", 'i')) !== -1) {
581
+ uncountable = true;
582
+ break;
583
+ }
584
+ }
585
+ if (word.length === 0 || uncountable) {
586
+ return result;
587
+ } else {
588
+ _ref2 = inflections().singulars;
589
+ for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
590
+ singular = _ref2[_j];
591
+ rule = singular[0];
592
+ replacement = singular[1];
593
+ if (result.search(rule) !== -1) {
594
+ result = result.replace(rule, replacement);
595
+ break;
596
+ }
597
+ }
598
+ return result;
599
+ }
600
+ };
601
+
602
+ humanize = function(lower_case_and_underscored_word) {
603
+ var human, replacement, result, rule, _i, _len, _ref;
604
+ result = lower_case_and_underscored_word.toString();
605
+ _ref = inflections().humans;
606
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
607
+ human = _ref[_i];
608
+ rule = human[0];
609
+ replacement = human[1];
610
+ if (result.search(rule) !== -1) {
611
+ result = result.replace(rule, replacement);
612
+ break;
613
+ }
614
+ }
615
+ return capitalize(result.replace(/_id$/, '').replace(/_/g, ' '));
616
+ };
617
+
618
+ ordinalize = function(number) {
619
+ var number_int;
620
+ number_int = parseInt(number, 10);
621
+ if ([11, 12, 13].indexOf(number_int % 100) !== -1) {
622
+ return "" + number + "th";
623
+ } else {
624
+ switch (number_int % 10) {
625
+ case 1:
626
+ return "" + number + "st";
627
+ case 2:
628
+ return "" + number + "nd";
629
+ case 3:
630
+ return "" + number + "rd";
631
+ default:
632
+ return "" + number + "th";
633
+ }
634
+ }
635
+ };
636
+
637
+ parameterize = function(string, sep) {
638
+ var parameterized_string;
639
+ if (sep == null) sep = '-';
640
+ parameterized_string = string.toString();
641
+ parameterized_string = parameterized_string.replace(/[^a-z0-9\-_]+/gi, sep);
642
+ if (sep != null) {
643
+ parameterized_string = parameterized_string.replace(new RegExp("" + sep + "{2,}", 'g'), sep);
644
+ parameterized_string = parameterized_string.replace(new RegExp("^" + sep + "|" + sep + "$", 'gi'), '');
645
+ }
646
+ return parameterized_string.toLowerCase();
647
+ };
648
+
649
+ exports.camelize = camelize;
650
+
651
+ exports.underscore = underscore;
652
+
653
+ exports.dasherize = dasherize;
654
+
655
+ exports.titleize = titleize;
656
+
657
+ exports.capitalize = capitalize;
658
+
659
+ exports.pluralize = pluralize;
660
+
661
+ exports.singularize = singularize;
662
+
663
+ exports.humanize = humanize;
664
+
665
+ exports.ordinalize = ordinalize;
666
+
667
+ exports.parameterize = parameterize;
668
+
669
+ }).call(this);
670
+
671
+ });
672
+
673
+ require.define("/inflect/string_extensions.coffee", function (require, module, exports, __dirname, __filename) {
674
+ (function() {
675
+ var enableStringExtensions, inflect;
676
+
677
+ inflect = require('../inflect');
678
+
679
+ enableStringExtensions = function() {
680
+ String.prototype.pluralize = function() {
681
+ return inflect.pluralize(this);
682
+ };
683
+ String.prototype.singularize = function() {
684
+ return inflect.singularize(this);
685
+ };
686
+ String.prototype.camelize = function(first_letter_in_uppercase) {
687
+ if (first_letter_in_uppercase == null) first_letter_in_uppercase = true;
688
+ return inflect.camelize(this, first_letter_in_uppercase);
689
+ };
690
+ String.prototype.capitalize = function() {
691
+ return inflect.capitalize(this);
692
+ };
693
+ String.prototype.titleize = function() {
694
+ return inflect.titleize(this);
695
+ };
696
+ String.prototype.underscore = function() {
697
+ return inflect.underscore(this);
698
+ };
699
+ String.prototype.dasherize = function() {
700
+ return inflect.dasherize(this);
701
+ };
702
+ String.prototype.parameterize = function(sep) {
703
+ if (sep == null) sep = '-';
704
+ return inflect.parameterize(this, sep);
705
+ };
706
+ return String.prototype.humanize = function() {
707
+ return inflect.humanize(this);
708
+ };
709
+ };
710
+
711
+ exports.enableStringExtensions = enableStringExtensions;
712
+
713
+ }).call(this);
714
+
715
+ });
716
+
717
+ require.define("/inflect/number_extensions.coffee", function (require, module, exports, __dirname, __filename) {
718
+ (function() {
719
+ var enableNumberExtensions, inflect;
720
+
721
+ inflect = require('../inflect');
722
+
723
+ enableNumberExtensions = function() {
724
+ return Number.prototype.ordinalize = function() {
725
+ return inflect.ordinalize(this);
726
+ };
727
+ };
728
+
729
+ exports.enableNumberExtensions = enableNumberExtensions;
730
+
731
+ }).call(this);
732
+
733
+ });
734
+
735
+ require.define("/inflect/default_inflections.coffee", function (require, module, exports, __dirname, __filename) {
736
+ (function() {
737
+ var inflect;
738
+
739
+ inflect = require('../inflect');
740
+
741
+ inflect.inflections(function(inflect) {
742
+ inflect.plural(/$/, 's');
743
+ inflect.plural(/s$/i, 's');
744
+ inflect.plural(/(ax|test)is$/i, '$1es');
745
+ inflect.plural(/(octop|vir)us$/i, '$1i');
746
+ inflect.plural(/(octop|vir)i$/i, '$1i');
747
+ inflect.plural(/(alias|status)$/i, '$1es');
748
+ inflect.plural(/(bu)s$/i, '$1ses');
749
+ inflect.plural(/(buffal|tomat)o$/i, '$1oes');
750
+ inflect.plural(/([ti])um$/i, '$1a');
751
+ inflect.plural(/([ti])a$/i, '$1a');
752
+ inflect.plural(/sis$/i, 'ses');
753
+ inflect.plural(/(?:([^f])fe|([lr])f)$/i, '$1$2ves');
754
+ inflect.plural(/(hive)$/i, '$1s');
755
+ inflect.plural(/([^aeiouy]|qu)y$/i, '$1ies');
756
+ inflect.plural(/(x|ch|ss|sh)$/i, '$1es');
757
+ inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '$1ices');
758
+ inflect.plural(/([m|l])ouse$/i, '$1ice');
759
+ inflect.plural(/([m|l])ice$/i, '$1ice');
760
+ inflect.plural(/^(ox)$/i, '$1en');
761
+ inflect.plural(/^(oxen)$/i, '$1');
762
+ inflect.plural(/(quiz)$/i, '$1zes');
763
+ inflect.singular(/s$/i, '');
764
+ inflect.singular(/(n)ews$/i, '$1ews');
765
+ inflect.singular(/([ti])a$/i, '$1um');
766
+ inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '$1$2sis');
767
+ inflect.singular(/(^analy)ses$/i, '$1sis');
768
+ inflect.singular(/([^f])ves$/i, '$1fe');
769
+ inflect.singular(/(hive)s$/i, '$1');
770
+ inflect.singular(/(tive)s$/i, '$1');
771
+ inflect.singular(/([lr])ves$/i, '$1f');
772
+ inflect.singular(/([^aeiouy]|qu)ies$/i, '$1y');
773
+ inflect.singular(/(s)eries$/i, '$1eries');
774
+ inflect.singular(/(m)ovies$/i, '$1ovie');
775
+ inflect.singular(/(x|ch|ss|sh)es$/i, '$1');
776
+ inflect.singular(/([m|l])ice$/i, '$1ouse');
777
+ inflect.singular(/(bus)es$/i, '$1');
778
+ inflect.singular(/(o)es$/i, '$1');
779
+ inflect.singular(/(shoe)s$/i, '$1');
780
+ inflect.singular(/(cris|ax|test)es$/i, '$1is');
781
+ inflect.singular(/(octop|vir)i$/i, '$1us');
782
+ inflect.singular(/(alias|status)es$/i, '$1');
783
+ inflect.singular(/^(ox)en/i, '$1');
784
+ inflect.singular(/(vert|ind)ices$/i, '$1ex');
785
+ inflect.singular(/(matr)ices$/i, '$1ix');
786
+ inflect.singular(/(quiz)zes$/i, '$1');
787
+ inflect.singular(/(database)s$/i, '$1');
788
+ inflect.irregular('person', 'people');
789
+ inflect.irregular('man', 'men');
790
+ inflect.irregular('child', 'children');
791
+ inflect.irregular('move', 'moves');
792
+ inflect.irregular('she', 'they');
793
+ inflect.irregular('he', 'they');
794
+ inflect.irregular('myself', 'ourselves');
795
+ inflect.irregular('yourself', 'ourselves');
796
+ inflect.irregular('himself', 'themselves');
797
+ inflect.irregular('herself', 'themselves');
798
+ inflect.irregular('themself', 'themselves');
799
+ inflect.irregular('mine', 'ours');
800
+ inflect.irregular('hers', 'theirs');
801
+ inflect.irregular('his', 'theirs');
802
+ inflect.irregular('its', 'theirs');
803
+ inflect.irregular('theirs', 'theirs');
804
+ inflect.irregular('sex', 'sexes');
805
+ inflect.irregular('cow', 'kine');
806
+ inflect.irregular('zombie', 'zombies');
807
+ inflect.uncountable('advice', 'energy', 'excretion', 'digestion', 'cooperation', 'health', 'justice', 'jeans');
808
+ inflect.uncountable('labour', 'machinery', 'equipment', 'information', 'pollution', 'sewage', 'paper', 'money');
809
+ inflect.uncountable('species', 'series', 'rain', 'rice', 'fish', 'sheep', 'moose', 'deer', 'bison', 'proceedings');
810
+ inflect.uncountable('shears', 'pincers', 'breeches', 'hijinks', 'clippers', 'chassis', 'innings', 'elk');
811
+ return inflect.uncountable('rhinoceros', 'swine', 'you', 'news');
812
+ });
813
+
814
+ }).call(this);
815
+
816
+ });
817
+
818
+ require.define("/index.coffee", function (require, module, exports, __dirname, __filename) {
819
+
820
+ module.exports = require("./inflect");
821
+
822
+ });
823
+ require("/index.coffee");
824
+
825
+ window.inflect = require('./inflect');