diff --git a/packages/ember-runtime/lib/ext/string.js b/packages/ember-runtime/lib/ext/string.js index 29bdcceec74..5fec0874f0f 100644 --- a/packages/ember-runtime/lib/ext/string.js +++ b/packages/ember-runtime/lib/ext/string.js @@ -25,6 +25,7 @@ if (Ember.EXTEND_PROTOTYPES === true || Ember.EXTEND_PROTOTYPES.String) { @method fmt @for String @private + @deprecated */ StringPrototype.fmt = function (...args) { return fmt(this, args); diff --git a/packages/ember-runtime/lib/system/string.js b/packages/ember-runtime/lib/system/string.js index 3b9b8500300..8a3352d9c57 100644 --- a/packages/ember-runtime/lib/system/string.js +++ b/packages/ember-runtime/lib/system/string.js @@ -60,7 +60,7 @@ var DECAMELIZE_CACHE = new Cache(1000, function(str) { return str.replace(STRING_DECAMELIZE_REGEXP, '$1_$2').toLowerCase(); }); -function fmt(str, formats) { +function _fmt(str, formats) { var cachedFormats = formats; if (!isArray(cachedFormats) || arguments.length > 2) { @@ -80,13 +80,22 @@ function fmt(str, formats) { }); } +function fmt(str, formats) { + Ember.deprecate( + 'Ember.String.fmt is deprecated, use ES6 template strings instead.', + false, + { id: 'ember-string-utils.fmt', until: '3.0.0', url: 'https://babeljs.io/docs/learn-es6/#template-strings' } + ); + return _fmt(...arguments); +} + function loc(str, formats) { if (!isArray(formats) || arguments.length > 2) { formats = Array.prototype.slice.call(arguments, 1); } str = Ember.STRINGS[str] || str; - return fmt(str, formats); + return _fmt(str, formats); } function w(str) { diff --git a/packages/ember-runtime/tests/system/string/fmt_string_test.js b/packages/ember-runtime/tests/system/string/fmt_string_test.js index d16b80b351c..ec588d47f98 100644 --- a/packages/ember-runtime/tests/system/string/fmt_string_test.js +++ b/packages/ember-runtime/tests/system/string/fmt_string_test.js @@ -10,6 +10,7 @@ if (!Ember.EXTEND_PROTOTYPES && !Ember.EXTEND_PROTOTYPES.String) { } QUnit.test('\'Hello %@ %@\'.fmt(\'John\', \'Doe\') => \'Hello John Doe\'', function() { + expectDeprecation('Ember.String.fmt is deprecated, use ES6 template strings instead.'); equal(fmt('Hello %@ %@', ['John', 'Doe']), 'Hello John Doe'); if (Ember.EXTEND_PROTOTYPES) { equal('Hello %@ %@'.fmt('John', 'Doe'), 'Hello John Doe'); @@ -17,6 +18,7 @@ QUnit.test('\'Hello %@ %@\'.fmt(\'John\', \'Doe\') => \'Hello John Doe\'', funct }); QUnit.test('\'Hello %@2 %@1\'.fmt(\'John\', \'Doe\') => \'Hello Doe John\'', function() { + expectDeprecation('Ember.String.fmt is deprecated, use ES6 template strings instead.'); equal(fmt('Hello %@2 %@1', ['John', 'Doe']), 'Hello Doe John'); if (Ember.EXTEND_PROTOTYPES) { equal('Hello %@2 %@1'.fmt('John', 'Doe'), 'Hello Doe John'); @@ -24,6 +26,7 @@ QUnit.test('\'Hello %@2 %@1\'.fmt(\'John\', \'Doe\') => \'Hello Doe John\'', fun }); QUnit.test('\'%@08 %@07 %@06 %@05 %@04 %@03 %@02 %@01\'.fmt(\'One\', \'Two\', \'Three\', \'Four\', \'Five\', \'Six\', \'Seven\', \'Eight\') => \'Eight Seven Six Five Four Three Two One\'', function() { + expectDeprecation('Ember.String.fmt is deprecated, use ES6 template strings instead.'); equal(fmt('%@08 %@07 %@06 %@05 %@04 %@03 %@02 %@01', ['One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight']), 'Eight Seven Six Five Four Three Two One'); if (Ember.EXTEND_PROTOTYPES) { @@ -32,6 +35,7 @@ QUnit.test('\'%@08 %@07 %@06 %@05 %@04 %@03 %@02 %@01\'.fmt(\'One\', \'Two\', \' }); QUnit.test('\'data: %@\'.fmt({ id: 3 }) => \'data: {id: 3}\'', function() { + expectDeprecation('Ember.String.fmt is deprecated, use ES6 template strings instead.'); equal(fmt('data: %@', [{ id: 3 }]), 'data: {id: 3}'); if (Ember.EXTEND_PROTOTYPES) { equal('data: %@'.fmt({ id: 3 }), 'data: {id: 3}'); @@ -39,6 +43,7 @@ QUnit.test('\'data: %@\'.fmt({ id: 3 }) => \'data: {id: 3}\'', function() { }); QUnit.test('works with argument form', function() { + expectDeprecation('Ember.String.fmt is deprecated, use ES6 template strings instead.'); equal(fmt('%@', 'John'), 'John'); equal(fmt('%@ %@', ['John'], 'Doe'), '[John] Doe'); });