summaryrefslogtreecommitdiffstats
path: root/js/vendor/angular-ui/modules/filters/format
diff options
context:
space:
mode:
Diffstat (limited to 'js/vendor/angular-ui/modules/filters/format')
-rw-r--r--js/vendor/angular-ui/modules/filters/format/format.js34
-rw-r--r--js/vendor/angular-ui/modules/filters/format/test/formatSpec.js21
2 files changed, 55 insertions, 0 deletions
diff --git a/js/vendor/angular-ui/modules/filters/format/format.js b/js/vendor/angular-ui/modules/filters/format/format.js
new file mode 100644
index 000000000..cedd3fb84
--- /dev/null
+++ b/js/vendor/angular-ui/modules/filters/format/format.js
@@ -0,0 +1,34 @@
+
+/**
+ * A replacement utility for internationalization very similar to sprintf.
+ *
+ * @param replace {mixed} The tokens to replace depends on type
+ * string: all instances of $0 will be replaced
+ * array: each instance of $0, $1, $2 etc. will be placed with each array item in corresponding order
+ * object: all attributes will be iterated through, with :key being replaced with its corresponding value
+ * @return string
+ *
+ * @example: 'Hello :name, how are you :day'.format({ name:'John', day:'Today' })
+ * @example: 'Records $0 to $1 out of $2 total'.format(['10', '20', '3000'])
+ * @example: '$0 agrees to all mentions $0 makes in the event that $0 hits a tree while $0 is driving drunk'.format('Bob')
+ */
+angular.module('ui.filters').filter('format', function(){
+ return function(value, replace) {
+ if (!value) {
+ return value;
+ }
+ var target = value.toString(), token;
+ if (replace === undefined) {
+ return target;
+ }
+ if (!angular.isArray(replace) && !angular.isObject(replace)) {
+ return target.split('$0').join(replace);
+ }
+ token = angular.isArray(replace) && '$' || ':';
+
+ angular.forEach(replace, function(value, key){
+ target = target.split(token+key).join(value);
+ });
+ return target;
+ };
+});
diff --git a/js/vendor/angular-ui/modules/filters/format/test/formatSpec.js b/js/vendor/angular-ui/modules/filters/format/test/formatSpec.js
new file mode 100644
index 000000000..5d83fdb63
--- /dev/null
+++ b/js/vendor/angular-ui/modules/filters/format/test/formatSpec.js
@@ -0,0 +1,21 @@
+describe('format', function() {
+ var formatFilter;
+
+ beforeEach(module('ui.filters'));
+ beforeEach(inject(function($filter) {
+ formatFilter = $filter('format');
+ }));
+
+ it('should replace all instances of $0 if string token is passed', function() {
+ expect(formatFilter('First $0, then $0, finally $0', 'bob')).toEqual('First bob, then bob, finally bob');
+ });
+ it('should replace all instances of $n based on order of token array', function() {
+ expect(formatFilter('First is $0, then $1, finally $2', ['bob','frank','dianne'])).toEqual('First is bob, then frank, finally dianne');
+ });
+ it('should replace all instances :tokens based on keys of token object', function() {
+ expect(formatFilter('First is :first, next is :second, finally there is :third', {first:'bob',second:'frank',third:'dianne'})).toEqual('First is bob, next is frank, finally there is dianne');
+ });
+ it('should do nothing if tokens are undefined', function() {
+ expect(formatFilter('Hello There')).toEqual('Hello There');
+ });
+}); \ No newline at end of file