ember-intl
Version:
Ember toolbox for internationalization.
1,327 lines (1,076 loc) • 93.6 kB
JavaScript
define('dummy/app', ['exports', 'ember', 'ember/resolver', 'ember/load-initializers', 'dummy/config/environment'], function (exports, Ember, Resolver, loadInitializers, config) {
'use strict';
Ember['default'].MODEL_FACTORY_INJECTIONS = true;
var App = Ember['default'].Application.extend({
modulePrefix: config['default'].modulePrefix,
podModulePrefix: config['default'].podModulePrefix,
Resolver: Resolver['default'],
ready: function () {
this.intl.setProperties({
locales: ['en-US'],
defaultLocale: 'en-US'
});
}
});
loadInitializers['default'](App, config['default'].modulePrefix);
exports['default'] = App;
});
define('dummy/cldrs/en-us', ['exports'], function (exports) {
'use strict';
// GENERATED FILE, DO NOT COPY INTO PROJECT
// THIS IS SOLELY FOR THE DUMMY APP SINCE IT
// DOES NOT GO THROUGH THE BROCCOLI PLUGIN
// WHICH PARSES OUT THE CLDR DATA BELOW
exports['default'] = {
locale: "en-us",
fields: {"year":{"displayName":"Year","relative":{"0":"this year","1":"next year","-1":"last year"},"relativeTime":{"future":{"one":"in {0} year","other":"in {0} years"},"past":{"one":"{0} year ago","other":"{0} years ago"}}},"month":{"displayName":"Month","relative":{"0":"this month","1":"next month","-1":"last month"},"relativeTime":{"future":{"one":"in {0} month","other":"in {0} months"},"past":{"one":"{0} month ago","other":"{0} months ago"}}},"day":{"displayName":"Day","relative":{"0":"today","1":"tomorrow","-1":"yesterday"},"relativeTime":{"future":{"one":"in {0} day","other":"in {0} days"},"past":{"one":"{0} day ago","other":"{0} days ago"}}},"hour":{"displayName":"Hour","relativeTime":{"future":{"one":"in {0} hour","other":"in {0} hours"},"past":{"one":"{0} hour ago","other":"{0} hours ago"}}},"minute":{"displayName":"Minute","relativeTime":{"future":{"one":"in {0} minute","other":"in {0} minutes"},"past":{"one":"{0} minute ago","other":"{0} minutes ago"}}},"second":{"displayName":"Second","relative":{"0":"now"},"relativeTime":{"future":{"one":"in {0} second","other":"in {0} seconds"},"past":{"one":"{0} second ago","other":"{0} seconds ago"}}}},
pluralRuleFunction: function (n) {var i=Math.floor(Math.abs(n)),v=n.toString().replace(/^[^.]*\.?/,"").length;n=Math.floor(n);if(i===1&&v===0)return"one";return"other";}
};
});
define('dummy/cldrs/es', ['exports'], function (exports) {
'use strict';
// GENERATED FILE, DO NOT COPY INTO PROJECT
// THIS IS SOLELY FOR THE DUMMY APP SINCE IT
// DOES NOT GO THROUGH THE BROCCOLI PLUGIN
// WHICH PARSES OUT THE CLDR DATA BELOW
exports['default'] = {
locale: "es",
fields: {"year":{"displayName":"año","relative":{"0":"este año","1":"el próximo año","-1":"el año pasado"},"relativeTime":{"future":{"one":"dentro de {0} año","other":"dentro de {0} años"},"past":{"one":"hace {0} año","other":"hace {0} años"}}},"month":{"displayName":"mes","relative":{"0":"este mes","1":"el próximo mes","-1":"el mes pasado"},"relativeTime":{"future":{"one":"dentro de {0} mes","other":"dentro de {0} meses"},"past":{"one":"hace {0} mes","other":"hace {0} meses"}}},"day":{"displayName":"día","relative":{"0":"hoy","1":"mañana","2":"pasado mañana","-2":"antes de ayer","-1":"ayer"},"relativeTime":{"future":{"one":"dentro de {0} día","other":"dentro de {0} días"},"past":{"one":"hace {0} día","other":"hace {0} días"}}},"hour":{"displayName":"hora","relativeTime":{"future":{"one":"dentro de {0} hora","other":"dentro de {0} horas"},"past":{"one":"hace {0} hora","other":"hace {0} horas"}}},"minute":{"displayName":"minuto","relativeTime":{"future":{"one":"dentro de {0} minuto","other":"dentro de {0} minutos"},"past":{"one":"hace {0} minuto","other":"hace {0} minutos"}}},"second":{"displayName":"segundo","relative":{"0":"ahora"},"relativeTime":{"future":{"one":"dentro de {0} segundo","other":"dentro de {0} segundos"},"past":{"one":"hace {0} segundo","other":"hace {0} segundos"}}}},
pluralRuleFunction: function (n) {n=Math.floor(n);if(n===1)return"one";return"other";}
};
});
define('dummy/cldrs/fr-fr', ['exports'], function (exports) {
'use strict';
// GENERATED FILE, DO NOT COPY INTO PROJECT
// THIS IS SOLELY FOR THE DUMMY APP SINCE IT
// DOES NOT GO THROUGH THE BROCCOLI PLUGIN
// WHICH PARSES OUT THE CLDR DATA BELOW
exports['default'] = {
locale: "fr-fr",
fields: {"year":{"displayName":"année","relative":{"0":"cette année","1":"l’année prochaine","-1":"l’année dernière"},"relativeTime":{"future":{"one":"dans {0} an","other":"dans {0} ans"},"past":{"one":"il y a {0} an","other":"il y a {0} ans"}}},"month":{"displayName":"mois","relative":{"0":"ce mois-ci","1":"le mois prochain","-1":"le mois dernier"},"relativeTime":{"future":{"one":"dans {0} mois","other":"dans {0} mois"},"past":{"one":"il y a {0} mois","other":"il y a {0} mois"}}},"day":{"displayName":"jour","relative":{"0":"aujourd’hui","1":"demain","2":"après-demain","-2":"avant-hier","-1":"hier"},"relativeTime":{"future":{"one":"dans {0} jour","other":"dans {0} jours"},"past":{"one":"il y a {0} jour","other":"il y a {0} jours"}}},"hour":{"displayName":"heure","relativeTime":{"future":{"one":"dans {0} heure","other":"dans {0} heures"},"past":{"one":"il y a {0} heure","other":"il y a {0} heures"}}},"minute":{"displayName":"minute","relativeTime":{"future":{"one":"dans {0} minute","other":"dans {0} minutes"},"past":{"one":"il y a {0} minute","other":"il y a {0} minutes"}}},"second":{"displayName":"seconde","relative":{"0":"maintenant"},"relativeTime":{"future":{"one":"dans {0} seconde","other":"dans {0} secondes"},"past":{"one":"il y a {0} seconde","other":"il y a {0} secondes"}}}},
pluralRuleFunction: function (n) {var i=Math.floor(Math.abs(n));n=Math.floor(n);if(i===0||i===1)return"one";return"other";}
};
});
define('dummy/components/code-snippet', ['exports', 'ember', 'dummy/snippets'], function (exports, Ember, Snippets) {
'use strict';
var Highlight = require('highlight.js');
exports['default'] = Ember['default'].Component.extend({
tagName: 'pre',
classNameBindings: ['language'],
unindent: true,
_unindent: function(src) {
if (!this.get('unindent')) {
return src;
}
var match, min, lines = src.split("\n");
for (var i = 0; i < lines.length; i++) {
match = /^\s*/.exec(lines[i]);
if (match && (typeof min === 'undefined' || min > match[0].length)) {
min = match[0].length;
}
}
if (typeof min !== 'undefined' && min > 0) {
src = src.replace(new RegExp("(\\n|^)\\s{" + min + "}", 'g'), "$1");
}
return src;
},
source: function(){
return this._unindent(
(Snippets['default'][this.get('name')] || "")
.replace(/^(\s*\n)*/, '')
.replace(/\s*$/, '')
);
}.property('name'),
didInsertElement: function(){
Highlight.highlightBlock(this.get('element'));
},
language: function(){
var m = /\.(\w+)$/i.exec(this.get('name'));
if (m) {
switch (m[1].toLowerCase()) {
case 'js':
return 'javascript';
case 'hbs':
return 'handlebars';
}
}
}.property('name')
});
});
define('dummy/controllers/application', ['exports', 'ember'], function (exports, Ember) {
'use strict';
exports['default'] = Ember['default'].Controller.extend({
options: ['en-US', 'fr-FR', 'es'],
value: Ember['default'].computed('intl.locales', function (key, value) {
if (arguments.length === 2) {
this.intl.set('locales', arguments[1]);
}
return this.intl.get('locales.firstObject') || this.intl.get('locales');
})
});
});
define('dummy/controllers/index', ['exports', 'ember'], function (exports, Ember) {
'use strict';
var now = new Date();
var yesterday = now.setDate(now.getDate() - 1);
function computedNumber (number, options) {
return Ember['default'].computed('intl.locales', function () {
return this.intl.formatNumber(number, options);
});
}
exports['default'] = Ember['default'].Controller.extend({
numType: 'currency',
num: 1000,
yesterday: yesterday,
deadline: Ember['default'].computed.readOnly('yesterday'),
now: now,
messages: {
photos: '{name} took {numPhotos, plural,\n =0 {no photos}\n =1 {one photo}\n other {# photos}\n} on {takenDate, date, long}.\n'
},
computedMessage: Ember['default'].computed(function () {
return 'messages.product.info';
}),
incrementTime: Ember['default'].on('init', function() {
var self = this;
setInterval(function() {
Ember['default'].run(function() {
self.set('now', new Date());
self.incrementProperty('num');
});
}, 200);
})
});
});
define('dummy/controllers/smoke', ['exports', 'ember'], function (exports, Ember) {
'use strict';
var Controller = Ember['default'].Controller;
var computed = Ember['default'].computed;
var now = new Date();
var yesterday = new Date(now).setDate(now.getDate() - 1);
exports['default'] = Controller.extend({
locales: ['en-US', 'fr-FR', 'es'],
num: 1000,
yesterday: yesterday,
currentLocale: computed('intl.locales', function (key, value) {
if (arguments.length === 2) {
this.set('intl.locales', arguments[1]);
}
return this.get('intl.locales.firstObject') || this.get('intl.locales');
})
});
});
define('dummy/ember-intl/tests/ember-intl/format-cache/memoizer.jshint', function () {
'use strict';
module('JSHint - ember-intl/format-cache');
test('ember-intl/format-cache/memoizer.js should pass jshint', function() {
ok(true, 'ember-intl/format-cache/memoizer.js should pass jshint.');
});
});
define('dummy/ember-intl/tests/ember-intl/formatter-base.jshint', function () {
'use strict';
module('JSHint - ember-intl');
test('ember-intl/formatter-base.js should pass jshint', function() {
ok(true, 'ember-intl/formatter-base.js should pass jshint.');
});
});
define('dummy/ember-intl/tests/ember-intl/helpers/base.jshint', function () {
'use strict';
module('JSHint - ember-intl/helpers');
test('ember-intl/helpers/base.js should pass jshint', function() {
ok(true, 'ember-intl/helpers/base.js should pass jshint.');
});
});
define('dummy/ember-intl/tests/ember-intl/index.jshint', function () {
'use strict';
module('JSHint - ember-intl');
test('ember-intl/index.js should pass jshint', function() {
ok(true, 'ember-intl/index.js should pass jshint.');
});
});
define('dummy/ember-intl/tests/ember-intl/models/locale.jshint', function () {
'use strict';
module('JSHint - ember-intl/models');
test('ember-intl/models/locale.js should pass jshint', function() {
ok(true, 'ember-intl/models/locale.js should pass jshint.');
});
});
define('dummy/ember-intl/tests/ember-intl/utils/data.jshint', function () {
'use strict';
module('JSHint - ember-intl/utils');
test('ember-intl/utils/data.js should pass jshint', function() {
ok(true, 'ember-intl/utils/data.js should pass jshint.');
});
});
define('dummy/ember-intl/tests/ember-intl/utils/streams.jshint', function () {
'use strict';
module('JSHint - ember-intl/utils');
test('ember-intl/utils/streams.js should pass jshint', function() {
ok(true, 'ember-intl/utils/streams.js should pass jshint.');
});
});
define('dummy/formats', ['exports', 'ember'], function (exports, Ember) {
'use strict';
exports['default'] = {
date: {
'time-style': {
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
}
},
number: {
currency: {
style: 'currency',
minimumFractionDigits: 2
},
EUR: { style: 'currency', currency: 'EUR' },
USD: { style: 'currency', currency: 'USD' },
JPY: { style: 'currency', currency: 'JPY' }
},
time: {
hhmmss: {
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
}
}
};
});
define('dummy/formatters/format-date', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var FormatDate = Formatter['default'].extend({
format: function (value, hash) {
var args = this.buildOptions(value, hash);
var intl = this.intl;
return intl.formatDate.apply(intl, args);
}
});
FormatDate.reopenClass({
formatOptions: [
'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday',
'era', 'year', 'month', 'day', 'hour', 'minute', 'second',
'timeZoneName'
]
});
exports['default'] = FormatDate;
});
define('dummy/formatters/format-html-message', ['exports', 'ember', 'dummy/formatters/format-message'], function (exports, Ember, FormatterMessage) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var FormatHtmlMessage = FormatterMessage['default'].extend({
escapeProps: function (props) {
return Object.keys(props).reduce(function (escapedProps, name) {
var value = props[name];
// TODO: Can we force string coersion here? Or would that not be needed
// and possible mess with IntlMessageFormat?
if (typeof value === 'string') {
value = Ember['default'].Handlebars.Utils.escapeExpression(value);
}
escapedProps[name] = value;
return escapedProps;
}, {});
},
format: function (value, hash, context) {
var icuKeys = this.extractICUKeys(value);
var model = {};
if (icuKeys && icuKeys.length) {
model = Ember['default'].$.extend(Ember['default'].getProperties(context, icuKeys), hash);
}
var formatOptions = {
formats: hash.format || this.filterFormatOptions(hash)
};
if (hash.locales) {
formatOptions.locales = hash.locales;
}
return Ember['default'].String.htmlSafe(this.intl.formatMessage(value, this.escapeProps(model), formatOptions));
}
});
exports['default'] = FormatHtmlMessage;
});
define('dummy/formatters/format-message', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var validKey = /[\w|.]/;
var FormatMessage = Formatter['default'].extend({
extractICUKeys: function (msg) {
var length = msg.length;
var buf = [], out = Ember['default'].A();
var i = 0;
var char, key;
for (; i < length; i++) {
char = msg[i];
if (buf.length && !validKey.test(char)) {
buf.shift();
key = buf.join('');
// do not include empty strings: {}
if (key) { out.addObject(key); }
buf = [];
}
else if (
// does not include escaped curly braces
// and double curly braces does not mistake the first
// as the starting point of the key {{foo}} should return `foo`
(char === '{' && msg[i-1] !== "\\" && msg[i+1] !== '{') ||
buf.length
)
{
buf.push(char);
}
}
return out;
},
format: function (value, hash, context) {
var icuKeys = this.extractICUKeys(value);
var model;
if (icuKeys && icuKeys.length) {
model = Ember['default'].$.extend(Ember['default'].getProperties(context, icuKeys), hash);
}
var formatOptions = {
formats: hash.format || this.filterFormatOptions(hash)
};
if (hash.locales) {
formatOptions.locales = hash.locales;
}
return this.intl.formatMessage(value, model, formatOptions);
}
});
FormatMessage.reopenClass({
formatOptions: [
'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday',
'era', 'year', 'month', 'day', 'hour', 'minute', 'second',
'timeZoneName'
]
});
exports['default'] = FormatMessage;
});
define('dummy/formatters/format-number', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var FormatNumber = Formatter['default'].extend({
format: function (value, hash) {
var args = this.buildOptions(value, hash);
var intl = this.intl;
return intl.formatNumber.apply(intl, args);
}
});
FormatNumber.reopenClass({
formatOptions: [
'localeMatcher', 'style', 'currency', 'currencyDisplay',
'useGrouping', 'minimumIntegerDigits', 'minimumFractionDigits',
'maximumFractionDigits', 'minimumSignificantDigits',
'maximumSignificantDigits'
]
});
exports['default'] = FormatNumber;
});
define('dummy/formatters/format-relative', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var FormatRelative = Formatter['default'].extend({
format: function (value, hash) {
var args = this.buildOptions(value, hash);
var intl = this.intl;
return intl.formatRelative.apply(intl, args);
}
});
FormatRelative.reopenClass({
formatOptions: ['style', 'units']
});
exports['default'] = FormatRelative;
});
define('dummy/formatters/format-time', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var FormatTime = Formatter['default'].extend({
format: function (value, hash) {
var args = this.buildOptions(value, hash);
var intl = this.intl;
return intl.formatTime.apply(intl, args);
}
});
FormatTime.reopenClass({
formatOptions: [
'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday',
'era', 'year', 'month', 'day', 'hour', 'minute', 'second',
'timeZoneName'
]
});
exports['default'] = FormatTime;
});
define('dummy/helpers/format-date', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
exports['default'] = FormatHelper['default']('format-date');
});
define('dummy/helpers/format-html-message', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
exports['default'] = FormatHelper['default']('format-html-message');
});
define('dummy/helpers/format-message', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
exports['default'] = FormatHelper['default']('format-message');
});
define('dummy/helpers/format-number', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
exports['default'] = FormatHelper['default']('format-number');
});
define('dummy/helpers/format-relative', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
exports['default'] = FormatHelper['default']('format-relative');
});
define('dummy/helpers/format-time', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
exports['default'] = FormatHelper['default']('format-time');
});
define('dummy/helpers/intl-get', ['exports', 'ember', 'ember-intl/utils/streams'], function (exports, Ember, streams) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
function normalize (fullName) {
Ember['default'].assert('Lookup name must be a string', typeof fullName === 'string');
return fullName.toLowerCase();
}
function intlGet (key, locale) {
Ember['default'].assert('You must pass in a message key in the form of a string.', typeof key === 'string');
var intl = this.container.lookup('intl:main');
var locales = locale ? Ember['default'].makeArray(locale) : intl.get('current');
for (var i=0; i < locales.length; i++) {
var locale = this.container.lookup('locale:' + normalize(locales[i]));
if (locale) {
var value = locale.getValue(key);
if (typeof value !== 'undefined') {
return value;
}
}
}
throw new ReferenceError('Could not find Intl object: ' + key);
}
exports['default'] = function (value, options) {
var view = options.data.view;
var types = options.types;
var hash = streams.readHash(options.hash);
var intl = this.container.lookup('intl:main');
var self = this;
var currentValue = value;
var valueStream, outStreamValue;
var outStream = new streams.Stream(function () {
return outStreamValue;
});
outStream.setValue = function(_value) {
outStreamValue = _value;
this.notify();
}
function valueStreamChanged () {
currentValue = valueStream.value();
pokeStream();
}
function pokeStream () {
outStream.setValue(intlGet.call(self, streams.read(currentValue), hash.locales));
}
if (types[0] === 'ID') {
valueStream = view.getStream(value);
currentValue = valueStream.value();
valueStream.subscribe(valueStreamChanged);
}
intl.on('localesChanged', this, pokeStream);
view.one('willDestroyElement', this, function () {
intl.off('localesChanged', this, pokeStream);
if (valueStream) {
valueStream.unsubscribe(valueStreamChanged);
}
streams.destroyStream(outStream);
});
pokeStream();
return outStream;
};
});
define('dummy/initializers/ember-intl', ['exports', 'ember', 'dummy/services/intl', 'ember-intl/utils/data', 'dummy/helpers/format-date', 'dummy/helpers/format-time', 'dummy/helpers/format-relative', 'dummy/helpers/format-number', 'dummy/helpers/intl-get', 'dummy/helpers/format-html-message', 'dummy/helpers/format-message'], function (exports, Ember, IntlService, data, FormatDate, FormatTime, FormatRelative, FormatNumber, IntlGet, FormatHtmlMessage, FormatMessage) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
exports['default'] = {
name: 'ember-intl',
initialize: function (container, app) {
var seen = requirejs._eak_seen;
var prefix = app.modulePrefix;
container.optionsForType('formats', {
singleton: true,
instantiate: false
});
container.optionsForType('locale', {
singleton: true,
instantiate: true
});
Object.keys(seen).filter(function (key) {
return key.indexOf(prefix + '\/cldrs\/') === 0;
}).forEach(function (key) {
data.addLocaleData(require(key, null, null, true)['default']);
});
var ServiceKlass = app.IntlService || IntlService['default'];
var service = ServiceKlass.create({ container: container });
app.register('intl:main', service, {
singleton: true,
instantiate: false
});
app.intl = service;
app.inject('controller', 'intl', 'intl:main');
app.inject('component', 'intl', 'intl:main');
app.inject('route', 'intl', 'intl:main');
app.inject('model', 'intl', 'intl:main');
app.inject('view', 'intl', 'intl:main');
app.inject('formatter', 'intl', 'intl:main');
if (Ember['default'].HTMLBars) {
Ember['default'].HTMLBars._registerHelper('format-date', FormatDate['default']);
Ember['default'].HTMLBars._registerHelper('format-time', FormatTime['default']);
Ember['default'].HTMLBars._registerHelper('format-relative', FormatRelative['default']);
Ember['default'].HTMLBars._registerHelper('format-number', FormatNumber['default']);
Ember['default'].HTMLBars._registerHelper('format-html-message', FormatHtmlMessage['default']);
Ember['default'].HTMLBars._registerHelper('format-message', FormatMessage['default']);
}
}
}
});
define('dummy/locales/en-us', ['exports', 'ember-intl/models/locale'], function (exports, Locale) {
'use strict';
exports['default'] = Locale['default'].extend({
messages: {
product: {
info: '{product} will cost {price, number, EUR} if ordered by {deadline, date, time}',
html: {
info: '<strong>{product}</strong> will cost <em>{price, number, EUR}</em> if ordered by {deadline, date, time}'
},
title: 'Hello world!'
}
}
});
});
define('dummy/locales/es', ['exports', 'ember-intl/models/locale'], function (exports, Locale) {
'use strict';
exports['default'] = Locale['default'].extend({
messages: {}
});
});
define('dummy/locales/fr-fr', ['exports', 'ember-intl/models/locale'], function (exports, Locale) {
'use strict';
exports['default'] = Locale['default'].extend({
messages: {
product: {
info: '{product} coûtera {price, number, EUR} si triés par {deadline, date, time}',
html: {
info: '<strong>{product}</strong> coûtera <em>{price, number, EUR}</em> si triés par {deadline, date, time}'
}
}
}
});
});
define('dummy/router', ['exports', 'ember', 'dummy/config/environment'], function (exports, Ember, config) {
'use strict';
var Router = Ember['default'].Router.extend({
location: config['default'].locationType
});
Router.map(function() {
this.route('smoke');
});
exports['default'] = Router;
});
define('dummy/services/intl', ['exports', 'ember', 'ember-intl/models/locale', 'ember-intl/format-cache/memoizer', 'ember-intl/utils/data'], function (exports, Ember, Locale, createFormatCache, data) {
'use strict';
/**
* Copyright 2015, Yahoo! Inc.
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
var ServiceKlass = Ember['default'].Service || Ember['default'].Controller;
var makeArray = Ember['default'].makeArray;
var get = Ember['default'].get;
var on = Ember['default'].on;
var computed = Ember['default'].computed;
var observer = Ember['default'].observer;
var isEmpty = Ember['default'].isEmpty;
var isPresent = Ember['default'].isPresent;
var run = Ember['default'].run;
function assertIsDate (date, errMsg) {
Ember['default'].assert(errMsg, isFinite(date));
}
exports['default'] = ServiceKlass.extend(Ember['default'].Evented, {
locales: null,
defaultLocale: null,
getDateTimeFormat: null,
getRelativeFormat: null,
getMessageFormat: null,
getNumberFormat: null,
setupMemoizers: on('init', function () {
this.setProperties({
getDateTimeFormat: createFormatCache['default'](Intl.DateTimeFormat),
getRelativeFormat: createFormatCache['default'](data.IntlRelativeFormat),
getNumberFormat: createFormatCache['default'](Intl.NumberFormat),
getMessageFormat: createFormatCache['default'](data.IntlMessageFormat)
});
}),
current: computed('locales', 'defaultLocale', function () {
var locales = makeArray(get(this, 'locales'));
var defaultLocale = get(this, 'defaultLocale');
if (isPresent(defaultLocale) && locales.indexOf(defaultLocale) === -1) {
locales.push(defaultLocale);
}
return locales;
}).readOnly(),
formats: computed(function () {
return this.container.lookup('formats:main', {
instantiate: false
}) || {};
}).readOnly(),
localeChanged: observer('current', function () {
run.once(this, this.notifyLocaleChanged);
}),
addMessage: function (locale, key, value) {
var localeInstance = this._getLocaleInstance(locale);
return localeInstance.addMessage(key, value);
},
addMessages: function (locale, messageObject) {
var localeInstance = this._getLocaleInstance(locale);
return localeInstance.addMessages(messageObject);
},
notifyLocaleChanged: function () {
this.trigger('localesChanged');
},
formatMessage: function (message, values, options) {
// When `message` is a function, assume it's an IntlMessageFormat
// instance's `format()` method passed by reference, and call it. This
// is possible because its `this` will be pre-bound to the instance.
if (typeof message === 'function') {
return message(values);
}
options = options || {};
var locales = makeArray(options.locales);
var formats = options.formats || get(this, 'formats');
if (isEmpty(locales)) {
locales = get(this, 'current');
}
if (typeof message === 'string') {
message = this.getMessageFormat(message, locales, formats);
}
return message.format(values);
},
formatTime: function (date, formatOptions, options) {
date = new Date(date);
assertIsDate(date, 'A date or timestamp must be provided to formatTime()');
return this._format('time', date, formatOptions, options);
},
formatRelative: function (date, formatOptions, options) {
date = new Date(date);
assertIsDate(date, 'A date or timestamp must be provided to formatRelative()');
return this._format('relative', date, formatOptions, options);
},
formatDate: function (date, formatOptions, options) {
date = new Date(date);
assertIsDate(date, 'A date or timestamp must be provided to formatDate()');
return this._format('date', date, formatOptions, options);
},
formatNumber: function (num, formatOptions, options) {
return this._format('number', num, formatOptions, options);
},
_format: function (type, value, formatOptions, helperOptions) {
if (!helperOptions) {
helperOptions = formatOptions || {};
formatOptions = null;
}
var locales = makeArray(helperOptions.locales);
var formats = get(this, 'formats');
if (isEmpty(locales)) {
locales = get(this, 'current');
}
if (formatOptions) {
if (typeof formatOptions === 'string' && formats) {
formatOptions = get(formats, type + '.' + formatOptions);
}
formatOptions = Ember['default'].$.extend({}, formatOptions, helperOptions);
} else {
formatOptions = helperOptions;
}
switch (type) {
case 'date':
case 'time':
return this.getDateTimeFormat(locales, formatOptions).format(value);
case 'number':
return this.getNumberFormat(locales, formatOptions).format(value);
case 'relative':
return this.getRelativeFormat(locales, formatOptions).format(value);
default:
throw new Error('Unrecognized simple format type: ' + type);
}
},
_getLocaleInstance: function (locale) {
if (locale instanceof Locale['default']) {
return locale;
}
if (typeof locale === 'string') {
return this.container.lookup('locale:' + locale.toLowerCase());
}
throw new Error('`locale` must be a string or a locale instance');
}
});
});
define('dummy/snippets', ['exports'], function (exports) {
'use strict';
exports['default'] = { "format-html-message.hbs":"{{format-html-message (intl-get 'messages.product.html.info')\n product='Apple watch'\n price=200\n deadline=yesterday}}\n\n{{format-html-message '<strong>{product}</strong>' product='Apple watch'}}\n",
"format-message.hbs":"Reference a message key, defined in your messages module corresponding to the current locale.\n\n{{format-message (intl-get 'messages.product.info')\n product='Apple watch'\n price=200\n deadline=yesterday}}\n \n{{format-message (intl-get computedProperty)\n product='Apple watch'\n price=200\n deadline=yesterday}}\n\nPassing a static message or a message via a data-binding also works.\n\n{{format-message messages.photos\n name='Jason'\n numPhotos=num\n takenDate=yesterday}}\n \nUse within bind-attr\n\n<button {{bind-attr title=(format-message (intl-get 'messages.product.title'))}}>\n Hover to see title\n</button>\n",
"format-date.hbs":"Can be represent using the format key or inline the format\n\n{{format-time now format='hhmmss'}}\n{{format-time now hour='numeric' minute='numeric' hour12=false}}\n",
"format-number.hbs":"Can be represent using the format key or inline the format\n\n{{format-number num}}\n{{format-number num format='EUR'}}\n{{format-number num style='currency' currency='USD'}}\n",
"format-time.hbs":"Can be represent using the format key or inline the format\n\n{{format-time now format='hhmmss'}}\n{{format-time now hour='numeric' minute='numeric' hour12=false}}\n" };
});
define('dummy/templates/application', ['exports'], function (exports) {
'use strict';
exports['default'] = Ember.HTMLBars.template((function() {
return {
isHTMLBars: true,
blockParams: 0,
cachedFragment: null,
hasRendered: false,
build: function build(dom) {
var el0 = dom.createDocumentFragment();
var el1 = dom.createElement("div");
dom.setAttribute(el1,"class","main");
var el2 = dom.createTextNode("\n ");
dom.appendChild(el1, el2);
var el2 = dom.createElement("div");
dom.setAttribute(el2,"class","header");
var el3 = dom.createTextNode("\n ");
dom.appendChild(el2, el3);
var el3 = dom.createElement("h1");
dom.setAttribute(el3,"id","title");
var el4 = dom.createTextNode("ember-intl");
dom.appendChild(el3, el4);
dom.appendChild(el2, el3);
var el3 = dom.createTextNode("\n ");
dom.appendChild(el2, el3);
dom.appendChild(el1, el2);
var el2 = dom.createTextNode("\n ");
dom.appendChild(el1, el2);
var el2 = dom.createElement("div");
dom.setAttribute(el2,"class","content");
var el3 = dom.createTextNode("\n ");
dom.appendChild(el2, el3);
var el3 = dom.createElement("div");
var el4 = dom.createTextNode("\n Choose a locale: ");
dom.appendChild(el3, el4);
var el4 = dom.createTextNode("\n ");
dom.appendChild(el3, el4);
dom.appendChild(el2, el3);
var el3 = dom.createTextNode("\n\n ");
dom.appendChild(el2, el3);
var el3 = dom.createTextNode("\n ");
dom.appendChild(el2, el3);
dom.appendChild(el1, el2);
var el2 = dom.createTextNode("\n");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
return el0;
},
render: function render(context, env, contextualElement) {
var dom = env.dom;
var hooks = env.hooks, get = hooks.get, inline = hooks.inline, content = hooks.content;
dom.detectNamespace(contextualElement);
var fragment;
if (env.useFragmentCache && dom.canClone) {
if (this.cachedFragment === null) {
fragment = this.build(dom);
if (this.hasRendered) {
this.cachedFragment = fragment;
} else {
this.hasRendered = true;
}
}
if (this.cachedFragment) {
fragment = dom.cloneNode(this.cachedFragment, true);
}
} else {
fragment = this.build(dom);
}
var element0 = dom.childAt(fragment, [0, 3]);
var morph0 = dom.createMorphAt(dom.childAt(element0, [1]),0,1);
var morph1 = dom.createMorphAt(element0,2,3);
inline(env, morph0, context, "view", ["select"], {"value": get(env, context, "value"), "content": get(env, context, "options")});
content(env, morph1, context, "outlet");
return fragment;
}
};
}()));
});
define('dummy/templates/components/code-snippet', ['exports'], function (exports) {
'use strict';
exports['default'] = Ember.HTMLBars.template((function() {
return {
isHTMLBars: true,
blockParams: 0,
cachedFragment: null,
hasRendered: false,
build: function build(dom) {
var el0 = dom.createDocumentFragment();
var el1 = dom.createTextNode("");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
return el0;
},
render: function render(context, env, contextualElement) {
var dom = env.dom;
var hooks = env.hooks, content = hooks.content;
dom.detectNamespace(contextualElement);
var fragment;
if (env.useFragmentCache && dom.canClone) {
if (this.cachedFragment === null) {
fragment = this.build(dom);
if (this.hasRendered) {
this.cachedFragment = fragment;
} else {
this.hasRendered = true;
}
}
if (this.cachedFragment) {
fragment = dom.cloneNode(this.cachedFragment, true);
}
} else {
fragment = this.build(dom);
}
if (this.cachedFragment) { dom.repairClonedNode(fragment,[0]); }
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
content(env, morph0, context, "source");
return fragment;
}
};
}()));
});
define('dummy/templates/index', ['exports'], function (exports) {
'use strict';
exports['default'] = Ember.HTMLBars.template((function() {
return {
isHTMLBars: true,
blockParams: 0,
cachedFragment: null,
hasRendered: false,
build: function build(dom) {
var el0 = dom.createDocumentFragment();
var el1 = dom.createElement("h2");
var el2 = dom.createTextNode("Components");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("h3");
var el2 = dom.createTextNode("Format Number");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("h3");
var el2 = dom.createTextNode("Format Date");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("h3");
var el2 = dom.createTextNode("Format Time");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("h3");
var el2 = dom.createTextNode("Format Relative");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("h3");
var el2 = dom.createTextNode("Format Message");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
var el2 = dom.createTextNode("\n ");
dom.appendChild(el1, el2);
var el2 = dom.createTextNode("\n");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
var el2 = dom.createTextNode("\n ");
dom.appendChild(el1, el2);
var el2 = dom.createTextNode("\n");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("br");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("button");
var el2 = dom.createTextNode("\n Use with bind-attr\n");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("h3");
var el2 = dom.createTextNode("Format HTML Message");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
var el2 = dom.createTextNode("\n ");
dom.appendChild(el1, el2);
var el2 = dom.createTextNode("\n");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
var el1 = dom.createElement("div");
var el2 = dom.createTextNode("\n ");
dom.appendChild(el1, el2);
var el2 = dom.createTextNode("\n");
dom.appendChild(el1, el2);
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n\n");
dom.appendChild(el0, el1);
var el1 = dom.createTextNode("\n");
dom.appendChild(el0, el1);
return el0;
},
render: function render(context, env, contextualElement) {
var dom = env.dom;
var hooks = env.hooks, get = hooks.get, inline = hooks.inline, subexpr = hooks.subexpr, element = hooks.element;
dom.detectNamespace(contextualElement);
var fragment;
if (env.useFragmentCache && dom.canClone) {
if (this.cachedFragment === null) {
fragment = this.build(dom);
if (this.hasRendered) {
this.cachedFragment = fragment;
} else {
this.hasRendered = true;
}
}
if (this.cachedFragment) {
fragment = dom.cloneNode(this.cachedFragment, true);
}
} else {
fragment = this.build(dom);
}
var element0 = dom.childAt(fragment, [38]);
var morph0 = dom.createMorphAt(dom.childAt(fragment, [4]),-1,-1);
var morph1 = dom.createMorphAt(dom.childAt(fragment, [6]),-1,-1);
var morph2 = dom.createMorphAt(dom.childAt(fragment, [8]),-1,-1);
var morph3 = dom.createMorphAt(fragment,9,10,contextualElement);
var morph4 = dom.createMorphAt(dom.childAt(fragment, [13]),-1,-1);
var morph5 = dom.createMorphAt(dom.childAt(fragment, [15]),-1,-1);
var morph6 = dom.createMorphAt(dom.childAt(fragment, [19]),-1,-1);
var morph7 = dom.createMorphAt(dom.childAt(fragment, [21]),-1,-1);
var morph8 = dom.createMorphAt(fragment,22,23,contextualElement);
var morph9 = dom.createMorphAt(dom.childAt(fragment, [26]),-1,-1);
var morph10 = dom.createMorphAt(dom.childAt(fragment, [28]),-1,-1);
var morph11 = dom.createMorphAt(dom.childAt(fragment, [32]),0,1);
var morph12 = dom.createMorphAt(dom.childAt(fragment, [34]),0,1);
var morph13 = dom.createMorphAt(fragment,39,40,contextualElement);
var morph14 = dom.createMorphAt(dom.childAt(fragment, [43]),0,1);
var morph15 = dom.createMorphAt(dom.childAt(fragment, [45]),0,1);
var morph16 = dom.createMorphAt(fragment,46,47,contextualElement);
inline(env, morph0, context, "format-number", [get(env, context, "num")], {});
inline(env, morph1, context, "format-number", [get(env, context, "num")], {"format": "EUR"});
inline(env, morph2, context, "format-number", [get(env, context, "num")], {"style": "currency", "currency": "USD"});
inline(env, morph3, context, "code-snippet", [], {"name": "format-number.hbs"});
inline(env, morph4, context, "format-date", [get(env, context, "now")], {});
inline(env, morph5, context, "format-date", [get(env, context, "yesterday")], {});
inline(env, morph6, context, "format-time", [get(env, context, "now")], {"format": "hhmmss"});
inl