349 lines
13 KiB
JavaScript
349 lines
13 KiB
JavaScript
![]() |
(function() {
|
||
|
var assert, cases, vows, util;
|
||
|
|
||
|
vows = require('vows');
|
||
|
|
||
|
assert = require('assert');
|
||
|
|
||
|
util = require('../../lib/util');
|
||
|
|
||
|
cases = require('./cases');
|
||
|
|
||
|
vows.describe('Module Inflector methods').addBatch({
|
||
|
'Test inflector method': {
|
||
|
topic: require('../../lib/methods'),
|
||
|
'camelize': {
|
||
|
'word': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.CamelToUnderscore;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.camelize(words[i]), i));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'word with first letter lower': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.UnderscoreToLowerCamel;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.camelize(i, false), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'path': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.CamelWithModuleToUnderscoreWithSlash;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.camelize(words[i]), i));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'path with first letter lower': function(topic) {
|
||
|
return assert.equal(topic.camelize('bullet_record/errors', false), 'bulletRecord.Errors');
|
||
|
}
|
||
|
},
|
||
|
'underscore': {
|
||
|
'word': function(topic) {
|
||
|
var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
|
||
|
words = cases.CamelToUnderscore;
|
||
|
_ref = Object.keys(words);
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
assert.equal(topic.underscore(i), words[i]);
|
||
|
}
|
||
|
words = cases.CamelToUnderscoreWithoutReverse;
|
||
|
_ref2 = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
|
||
|
i = _ref2[_j];
|
||
|
_results.push(assert.equal(topic.underscore(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'path': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.CamelWithModuleToUnderscoreWithSlash;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.underscore(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'from dasherize': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.UnderscoresToDashes;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.underscore(topic.dasherize(i)), i));
|
||
|
}
|
||
|
return _results;
|
||
|
}
|
||
|
},
|
||
|
'dasherize': {
|
||
|
'underscored_word': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.UnderscoresToDashes;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.dasherize(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
}
|
||
|
},
|
||
|
'demodulize': {
|
||
|
'module name': function(topic) {
|
||
|
return assert.equal(topic.demodulize('BulletRecord.CoreExtensions.Inflections'), 'Inflections');
|
||
|
},
|
||
|
'isolated module name': function(topic) {
|
||
|
return assert.equal(topic.demodulize('Inflections'), 'Inflections');
|
||
|
}
|
||
|
},
|
||
|
'foreign_key': {
|
||
|
'normal': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.ClassNameToForeignKeyWithoutUnderscore;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.foreign_key(i, false), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'with_underscore': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.ClassNameToForeignKeyWithUnderscore;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.foreign_key(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
}
|
||
|
},
|
||
|
'ordinalize': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.OrdinalNumbers;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.ordinalize(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
}
|
||
|
}
|
||
|
}).addBatch({
|
||
|
'Test inflector inflection methods': {
|
||
|
topic: function() {
|
||
|
var Inflector;
|
||
|
Inflector = require('../../lib/methods');
|
||
|
Inflector.inflections["default"]();
|
||
|
return Inflector;
|
||
|
},
|
||
|
'pluralize': {
|
||
|
'empty': function(topic) {
|
||
|
return assert.equal(topic.pluralize(''), '');
|
||
|
},
|
||
|
'uncountable': function(topic) {
|
||
|
return assert.equal(topic.pluralize('money'), 'money');
|
||
|
},
|
||
|
'normal': function(topic) {
|
||
|
topic.inflections.irregular('octopus', 'octopi');
|
||
|
return assert.equal(topic.pluralize('octopus'), 'octopi');
|
||
|
},
|
||
|
'cases': function(topic) {
|
||
|
var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
|
||
|
words = cases.SingularToPlural;
|
||
|
_ref = Object.keys(words);
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
assert.equal(topic.pluralize(i), words[i]);
|
||
|
}
|
||
|
_ref2 = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
|
||
|
i = _ref2[_j];
|
||
|
_results.push(assert.equal(topic.pluralize(util.string.capitalize(i)), util.string.capitalize(words[i])));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'cases plural': function(topic) {
|
||
|
var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
|
||
|
words = cases.SingularToPlural;
|
||
|
_ref = Object.keys(words);
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
assert.equal(topic.pluralize(words[i]), words[i]);
|
||
|
}
|
||
|
_ref2 = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
|
||
|
i = _ref2[_j];
|
||
|
_results.push(assert.equal(topic.pluralize(util.string.capitalize(words[i])), util.string.capitalize(words[i])));
|
||
|
}
|
||
|
return _results;
|
||
|
}
|
||
|
},
|
||
|
'singuralize': {
|
||
|
'empty': function(topic) {
|
||
|
return assert.equal(topic.singularize(''), '');
|
||
|
},
|
||
|
'uncountable': function(topic) {
|
||
|
return assert.equal(topic.singularize('money'), 'money');
|
||
|
},
|
||
|
'normal': function(topic) {
|
||
|
topic.inflections.irregular('octopus', 'octopi');
|
||
|
return assert.equal(topic.singularize('octopi'), 'octopus');
|
||
|
},
|
||
|
'cases': function(topic) {
|
||
|
var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
|
||
|
words = cases.SingularToPlural;
|
||
|
_ref = Object.keys(words);
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
assert.equal(topic.singularize(words[i]), i);
|
||
|
}
|
||
|
_ref2 = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
|
||
|
i = _ref2[_j];
|
||
|
_results.push(assert.equal(topic.singularize(util.string.capitalize(words[i])), util.string.capitalize(i)));
|
||
|
}
|
||
|
return _results;
|
||
|
}
|
||
|
},
|
||
|
'uncountablility': {
|
||
|
'normal': function(topic) {
|
||
|
var i, words, _i, _j, _k, _len, _len2, _len3, _results;
|
||
|
words = topic.inflections.uncountables;
|
||
|
for (_i = 0, _len = words.length; _i < _len; _i++) {
|
||
|
i = words[_i];
|
||
|
assert.equal(topic.singularize(i), i);
|
||
|
}
|
||
|
for (_j = 0, _len2 = words.length; _j < _len2; _j++) {
|
||
|
i = words[_j];
|
||
|
assert.equal(topic.pluralize(i), i);
|
||
|
}
|
||
|
_results = [];
|
||
|
for (_k = 0, _len3 = words.length; _k < _len3; _k++) {
|
||
|
i = words[_k];
|
||
|
_results.push(assert.equal(topic.singularize(i), topic.pluralize(i)));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'greedy': function(topic) {
|
||
|
var countable_word, uncountable_word;
|
||
|
uncountable_word = "ors";
|
||
|
countable_word = "sponsor";
|
||
|
topic.inflections.uncountable(uncountable_word);
|
||
|
assert.equal(topic.singularize(uncountable_word), uncountable_word);
|
||
|
assert.equal(topic.pluralize(uncountable_word), uncountable_word);
|
||
|
assert.equal(topic.pluralize(uncountable_word), topic.singularize(uncountable_word));
|
||
|
assert.equal(topic.singularize(countable_word), 'sponsor');
|
||
|
assert.equal(topic.pluralize(countable_word), 'sponsors');
|
||
|
return assert.equal(topic.singularize(topic.pluralize(countable_word)), 'sponsor');
|
||
|
}
|
||
|
},
|
||
|
'humanize': {
|
||
|
'normal': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.UnderscoreToHuman;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.humanize(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'with rule': function(topic) {
|
||
|
topic.inflections.human(/^(.*)_cnt$/i, '$1_count');
|
||
|
topic.inflections.human(/^prefix_(.*)$/i, '$1');
|
||
|
assert.equal(topic.humanize('jargon_cnt'), 'Jargon count');
|
||
|
return assert.equal(topic.humanize('prefix_request'), 'Request');
|
||
|
},
|
||
|
'with string': function(topic) {
|
||
|
topic.inflections.human('col_rpted_bugs', 'Reported bugs');
|
||
|
assert.equal(topic.humanize('col_rpted_bugs'), 'Reported bugs');
|
||
|
return assert.equal(topic.humanize('COL_rpted_bugs'), 'Col rpted bugs');
|
||
|
},
|
||
|
'with _id': function(topic) {
|
||
|
return assert.equal(topic.humanize('author_id'), 'Author');
|
||
|
},
|
||
|
'with just _id': function(topic) {
|
||
|
return assert.equal(topic.humanize('_id'), '');
|
||
|
}
|
||
|
},
|
||
|
'titleize': {
|
||
|
'normal': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.MixtureToTitleCase;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.titleize(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'with hyphens': function(topic) {
|
||
|
return assert.equal(topic.titleize('x-men: the last stand'), 'X Men: The Last Stand');
|
||
|
},
|
||
|
'with ampersands': function(topic) {
|
||
|
return assert.equal(topic.titleize('garfunkel & oates'), 'Garfunkel & Oates');
|
||
|
}
|
||
|
},
|
||
|
'tableize': function(topic) {
|
||
|
var i, words, _i, _len, _ref, _results;
|
||
|
words = cases.ClassNameToTableName;
|
||
|
_ref = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
_results.push(assert.equal(topic.tableize(i), words[i]));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'classify': {
|
||
|
'underscore': function(topic) {
|
||
|
var i, words, _i, _j, _len, _len2, _ref, _ref2, _results;
|
||
|
words = cases.ClassNameToTableName;
|
||
|
_ref = Object.keys(words);
|
||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
|
i = _ref[_i];
|
||
|
assert.equal(topic.classify(words[i]), i);
|
||
|
}
|
||
|
_ref2 = Object.keys(words);
|
||
|
_results = [];
|
||
|
for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
|
||
|
i = _ref2[_j];
|
||
|
_results.push(assert.equal(topic.classify('table_prefix.' + words[i]), i));
|
||
|
}
|
||
|
return _results;
|
||
|
},
|
||
|
'normal': function(topic) {
|
||
|
topic.inflections.irregular('octopus', 'octopi');
|
||
|
return assert.equal(topic.classify('octopi'), 'Octopus');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
})["export"](module);
|
||
|
|
||
|
}).call(this);
|