summaryrefslogtreecommitdiff
path: root/xstatic/pkg/angular/data/angular-message-format.js
diff options
context:
space:
mode:
Diffstat (limited to 'xstatic/pkg/angular/data/angular-message-format.js')
-rw-r--r--xstatic/pkg/angular/data/angular-message-format.js172
1 files changed, 138 insertions, 34 deletions
diff --git a/xstatic/pkg/angular/data/angular-message-format.js b/xstatic/pkg/angular/data/angular-message-format.js
index 2ec4e31..f128916 100644
--- a/xstatic/pkg/angular/data/angular-message-format.js
+++ b/xstatic/pkg/angular/data/angular-message-format.js
@@ -1,20 +1,18 @@
/**
- * @license AngularJS v1.4.10
- * (c) 2010-2015 Google, Inc. http://angularjs.org
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
* License: MIT
*/
-(function(window, angular, undefined) {'use strict';
+(function(window, angular) {'use strict';
// NOTE: ADVANCED_OPTIMIZATIONS mode.
//
// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
// constructs incompatible with that mode.
-var $interpolateMinErr = window['angular']['$interpolateMinErr'];
-
-var noop = window['angular']['noop'],
- isFunction = window['angular']['isFunction'],
- toJson = window['angular']['toJson'];
+/* global isFunction: false */
+/* global noop: false */
+/* global toJson: false */
function stringify(value) {
if (value == null /* null/undefined */) { return ''; }
@@ -861,31 +859,90 @@ MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularEx
// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
// constructs incompatible with that mode.
-/* global $interpolateMinErr: false */
+/* global $interpolateMinErr: true */
+/* global isFunction: true */
+/* global noop: true */
+/* global toJson: true */
/* global MessageFormatParser: false */
/* global stringify: false */
/**
- * @ngdoc service
- * @name $$messageFormat
+ * @ngdoc module
+ * @name ngMessageFormat
+ * @packageName angular-message-format
*
* @description
- * Angular internal service to recognize MessageFormat extensions in interpolation expressions.
- * For more information, see:
- * https://docs.google.com/a/google.com/document/d/1pbtW2yvtmFBikfRrJd8VAsabiFkKezmYZ_PbgdjQOVU/edit
*
- * ## Example
+ * ## What is ngMessageFormat?
+ *
+ * The ngMessageFormat module extends the Angular {@link ng.$interpolate `$interpolate`} service
+ * with a syntax for handling pluralization and gender specific messages, which is based on the
+ * [ICU MessageFormat syntax][ICU].
+ *
+ * See [the design doc][ngMessageFormat doc] for more information.
+ *
+ * [ICU]: http://userguide.icu-project.org/formatparse/messages#TOC-MessageFormat
+ * [ngMessageFormat doc]: https://docs.google.com/a/google.com/document/d/1pbtW2yvtmFBikfRrJd8VAsabiFkKezmYZ_PbgdjQOVU/edit
+ *
+ * ## Examples
+ *
+ * ### Gender
+ *
+ * This example uses the "select" keyword to specify the message based on gender.
+ *
+ * <example name="ngMessageFormat-example-gender" module="msgFmtExample" deps="angular-message-format.js">
+ * <file name="index.html">
+ * <div ng-controller="AppController">
+ * Select Recipient:<br>
+ <select ng-model="recipient" ng-options="person as person.name for person in recipients">
+ </select>
+ <p>{{recipient.gender, select,
+ male {{{recipient.name}} unwrapped his gift. }
+ female {{{recipient.name}} unwrapped her gift. }
+ other {{{recipient.name}} unwrapped their gift. }
+ }}</p>
+ * </div>
+ * </file>
+ * <file name="script.js">
+ * function Person(name, gender) {
+ * this.name = name;
+ * this.gender = gender;
+ * }
+ *
+ * var alice = new Person("Alice", "female"),
+ * bob = new Person("Bob", "male"),
+ * ashley = new Person("Ashley", "");
+ *
+ * angular.module('msgFmtExample', ['ngMessageFormat'])
+ * .controller('AppController', ['$scope', function($scope) {
+ * $scope.recipients = [alice, bob, ashley];
+ * $scope.recipient = $scope.recipients[0];
+ * }]);
+ * </file>
+ * </example>
+ *
+ * ### Plural
+ *
+ * This example shows how the "plural" keyword is used to account for a variable number of entities.
+ * The "#" variable holds the current number and can be embedded in the message.
+ *
+ * Note that "=1" takes precedence over "one".
*
- * <example name="ngMessageFormat-example" module="msgFmtExample" deps="angular-message-format.min.js">
+ * The example also shows the "offset" keyword, which allows you to offset the value of the "#" variable.
+ *
+ * <example name="ngMessageFormat-example-plural" module="msgFmtExample" deps="angular-message-format.js">
* <file name="index.html">
* <div ng-controller="AppController">
- * <button ng-click="decreaseRecipients()" id="decreaseRecipients">decreaseRecipients</button><br>
- * <span>{{recipients.length, plural, offset:1
+ * <button ng-click="recipients.pop()" id="decreaseRecipients">decreaseRecipients</button><br>
+ * Select recipients:<br>
+ * <select multiple size=5 ng-model="recipients" ng-options="person as person.name for person in people">
+ * </select><br>
+ * <p>{{recipients.length, plural, offset:1
* =0 {{{sender.name}} gave no gifts (\#=#)}
- * =1 {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)}
+ * =1 {{{sender.name}} gave a gift to {{recipients[0].name}} (\#=#)}
* one {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)}
* other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)}
- * }}</span>
+ * }}</p>
* </div>
* </file>
*
@@ -897,35 +954,79 @@ MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularEx
*
* var alice = new Person("Alice", "female"),
* bob = new Person("Bob", "male"),
- * charlie = new Person("Charlie", "male"),
- * harry = new Person("Harry Potter", "male");
+ * sarah = new Person("Sarah", "female"),
+ * harry = new Person("Harry Potter", "male"),
+ * ashley = new Person("Ashley", "");
*
* angular.module('msgFmtExample', ['ngMessageFormat'])
* .controller('AppController', ['$scope', function($scope) {
- * $scope.recipients = [alice, bob, charlie];
+ * $scope.people = [alice, bob, sarah, ashley];
+ * $scope.recipients = [alice, bob, sarah];
* $scope.sender = harry;
- * $scope.decreaseRecipients = function() {
- * --$scope.recipients.length;
- * };
* }]);
* </file>
*
* <file name="protractor.js" type="protractor">
* describe('MessageFormat plural', function() {
+ *
* it('should pluralize initial values', function() {
- * var messageElem = element(by.binding('recipients.length')), decreaseRecipientsBtn = element(by.id('decreaseRecipients'));
+ * var messageElem = element(by.binding('recipients.length')),
+ * decreaseRecipientsBtn = element(by.id('decreaseRecipients'));
+ *
* expect(messageElem.getText()).toEqual('Harry Potter gave Alice and 2 other people a gift (#=2)');
* decreaseRecipientsBtn.click();
* expect(messageElem.getText()).toEqual('Harry Potter gave Alice and one other person a gift (#=1)');
* decreaseRecipientsBtn.click();
- * expect(messageElem.getText()).toEqual('Harry Potter gave one gift to Alice (#=0)');
+ * expect(messageElem.getText()).toEqual('Harry Potter gave a gift to Alice (#=0)');
* decreaseRecipientsBtn.click();
* expect(messageElem.getText()).toEqual('Harry Potter gave no gifts (#=-1)');
* });
* });
* </file>
* </example>
+ *
+ * ### Plural and Gender together
+ *
+ * This example shows how you can specify gender rules for specific plural matches - in this case,
+ * =1 is special cased for gender.
+ * <example name="ngMessageFormat-example-plural-gender" module="msgFmtExample" deps="angular-message-format.js">
+ * <file name="index.html">
+ * <div ng-controller="AppController">
+ Select recipients:<br>
+ <select multiple size=5 ng-model="recipients" ng-options="person as person.name for person in people">
+ </select><br>
+ <p>{{recipients.length, plural,
+ =0 {{{sender.name}} has not given any gifts to anyone.}
+ =1 { {{recipients[0].gender, select,
+ female { {{sender.name}} gave {{recipients[0].name}} her gift.}
+ male { {{sender.name}} gave {{recipients[0].name}} his gift.}
+ other { {{sender.name}} gave {{recipients[0].name}} their gift.}
+ }}
+ }
+ other {{{sender.name}} gave {{recipients.length}} people gifts.}
+ }}</p>
+ </file>
+ * <file name="script.js">
+ * function Person(name, gender) {
+ * this.name = name;
+ * this.gender = gender;
+ * }
+ *
+ * var alice = new Person("Alice", "female"),
+ * bob = new Person("Bob", "male"),
+ * harry = new Person("Harry Potter", "male"),
+ * ashley = new Person("Ashley", "");
+ *
+ * angular.module('msgFmtExample', ['ngMessageFormat'])
+ * .controller('AppController', ['$scope', function($scope) {
+ * $scope.people = [alice, bob, ashley];
+ * $scope.recipients = [alice];
+ * $scope.sender = harry;
+ * }]);
+ * </file>
+ </example>
*/
+
var $$MessageFormatFactory = ['$parse', '$locale', '$sce', '$exceptionHandler', function $$messageFormat(
$parse, $locale, $sce, $exceptionHandler) {
@@ -963,16 +1064,19 @@ var $$interpolateDecorator = ['$$messageFormat', '$delegate', function $$interpo
return interpolate;
}];
+var $interpolateMinErr;
+var isFunction;
+var noop;
+var toJson;
-/**
- * @ngdoc module
- * @name ngMessageFormat
- * @packageName angular-message-format
- * @description
- */
var module = window['angular']['module']('ngMessageFormat', ['ng']);
module['factory']('$$messageFormat', $$MessageFormatFactory);
module['config'](['$provide', function($provide) {
+ $interpolateMinErr = window['angular']['$interpolateMinErr'];
+ isFunction = window['angular']['isFunction'];
+ noop = window['angular']['noop'];
+ toJson = window['angular']['toJson'];
+
$provide['decorator']('$interpolate', $$interpolateDecorator);
}]);