Skip to content

Commit 050af2b

Browse files
author
Dean Sofer
committed
Merge pull request angular-ui#85 from ProLoser/inflector
Renamed Prettify to Inflector Merging in so Andy can hack at it
2 parents b52de10 + 34a1258 commit 050af2b

File tree

4 files changed

+79
-21
lines changed

4 files changed

+79
-21
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# [Cha Cha Cha Changes](http://www.youtube.com/watch?v=pl3vxEudif8&t=0m53s)
2+
3+
## master
4+
* **Prettifier** renamed to **inflector**
5+
* Unit tests
6+
7+
## v0.1.0
8+
* New folder structure
9+
* Too many to list
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
/**
3+
* Converts variable-esque naming conventions to something presentational, capitalized words separated by space.
4+
* @param {String} value The value to be parsed and prettified.
5+
* @param {String} [inflector] The inflector to use. Default: humanize.
6+
* @return {String}
7+
* @example {{ 'Here Is my_phoneNumber' | inflector:'humanize' }} => Here Is My Phone Number
8+
* {{ 'Here Is my_phoneNumber' | inflector:'underscore' }} => here_is_my_phone_number
9+
* {{ 'Here Is my_phoneNumber' | inflector:'variable' }} => hereIsMyPhoneNumber
10+
*/
11+
angular.module('ui.filters').filter('inflector', function () {
12+
13+
var inflectors = {
14+
humanize: function(value) {
15+
return value
16+
//replace all _ and spaces and first characters in a word with upper case character
17+
.replace(/(?:_| |\b)(\w)/g, function(str, p1) { return p1.toUpperCase();})
18+
// insert a space between lower & upper
19+
.replace(/([a-z])([A-Z])/g, '$1 $2')
20+
// space before last upper in a sequence followed by lower
21+
.replace(/\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3');
22+
},
23+
underscore: function(value) {
24+
// TODO
25+
return value;
26+
},
27+
variable: function(value) {
28+
// TODO
29+
return value;
30+
}
31+
};
32+
33+
return function (text, inflector) {
34+
inflector = inflector || 'humanize';
35+
return inflectors[inflector](text);
36+
};
37+
});
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
describe('inflector', function() {
2+
var inflectorFilter, testPhrase = 'Here Is my_phoneNumber';
3+
4+
beforeEach(module('ui.filters'));
5+
beforeEach(inject(function($filter) {
6+
inflectorFilter = $filter('inflector');
7+
}));
8+
9+
describe('default', function() {
10+
it('should default to humanize', function() {
11+
expect(inflectorFilter(testPhrase)).toEqual('Here Is My Phone Number');
12+
});
13+
it('should remove extra separator characters', function() {
14+
expect(inflectorFilter(' Here Is my__phoneNumber_')).toEqual('Here Is My Phone Number');
15+
});
16+
});
17+
18+
describe('humanize', function() {
19+
it('should uppercase first letter and separate words with a space', function() {
20+
expect(inflectorFilter(testPhrase, 'humanize')).toEqual('Here Is My Phone Number');
21+
});
22+
});
23+
describe('underscore', function() {
24+
it('should lowercase everything and separate words with an underscore', function() {
25+
expect(inflectorFilter(testPhrase, 'inflector')).toEqual('here_is_my_phone_number');
26+
});
27+
});
28+
describe('variable', function() {
29+
it('should remove all separators and camelHump the phrase', function() {
30+
expect(inflectorFilter(testPhrase, 'variable')).toEqual('hereIsMyPhoneNumber');
31+
});
32+
});
33+
});

modules/filters/prettify/prettify.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)