Repository: flex-falcon
Updated Branches:
  refs/heads/JsToAs bb6425450 -> e2cad6e69


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/i18n/currency.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/i18n/currency.js 
b/externs/GCL/externs/goog/i18n/currency.js
new file mode 100644
index 0000000..6396efd
--- /dev/null
+++ b/externs/GCL/externs/goog/i18n/currency.js
@@ -0,0 +1,437 @@
+// Copyright 2009 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview A utility to get better currency format pattern.
+ *
+ * This module implements a new currency format representation model. It
+ * provides 3 currency representation forms: global, portable and local. Local
+ * format is the most popular format people use to represent currency in its
+ * circulating country without worrying about how it should be distinguished
+ * from other currencies.  Global format is a formal representation in context
+ * of multiple currencies in same page, it is ISO 4217 currency code. Portable
+ * format is a compromise between global and local. It looks similar to how
+ * people would like to see how their currency is being represented in other
+ * media. While at the same time, it should be distinguishable to world's
+ * popular currencies (like USD, EUR) and currencies somewhat relevant in the
+ * area (like CNY in HK, though native currency is HKD). There is no guarantee
+ * of uniqueness.
+ *
+ */
+
+
+goog.provide('goog.i18n.currency');
+goog.provide('goog.i18n.currency.CurrencyInfo');
+goog.provide('goog.i18n.currency.CurrencyInfoTier2');
+
+
+/**
+ * The mask of precision field.
+ * @private
+ */
+goog.i18n.currency.PRECISION_MASK_ = 0x07;
+
+
+/**
+ * Whether the currency sign should be positioned after the number.
+ * @private
+ */
+goog.i18n.currency.POSITION_FLAG_ = 0x10;
+
+
+/**
+ * Whether a space should be inserted between the number and currency sign.
+ * @private
+ */
+goog.i18n.currency.SPACE_FLAG_ = 0x20;
+
+
+/**
+ * Whether tier2 was enabled already by calling addTier2Support().
+ * @private
+ */
+goog.i18n.currency.tier2Enabled_ = false;
+
+
+/**
+ * This function will add tier2 currency support. Be default, only tier1
+ * (most popular currencies) are supported. If an application really needs
+ * to support some of the rarely used currencies, it should call this function
+ * before any other functions in this namespace.
+ */
+goog.i18n.currency.addTier2Support = function() {
+  // Protection from executing this these again and again.
+  if (!goog.i18n.currency.tier2Enabled_) {
+    for (var key in goog.i18n.currency.CurrencyInfoTier2) {
+      goog.i18n.currency.CurrencyInfo[key] =
+          goog.i18n.currency.CurrencyInfoTier2[key];
+    }
+    goog.i18n.currency.tier2Enabled_ = true;
+  }
+};
+
+
+/**
+ * Global currency pattern always uses ISO-4217 currency code as prefix. Local
+ * currency sign is added if it is different from currency code. Each currency
+ * is unique in this form. The negative side is that ISO code looks weird in
+ * some countries as people normally do not use it. Local currency sign
+ * alleviates the problem, but also makes it a little verbose.
+ *
+ * @param {string} currencyCode ISO-4217 3-letter currency code.
+ * @return {string} Global currency pattern string for given currency.
+ */
+goog.i18n.currency.getGlobalCurrencyPattern = function(currencyCode) {
+  var info = goog.i18n.currency.CurrencyInfo[currencyCode];
+  var patternNum = info[0];
+  if (currencyCode == info[1]) {
+    return goog.i18n.currency.getCurrencyPattern_(patternNum, info[1]);
+  }
+  return currencyCode + ' ' +
+      goog.i18n.currency.getCurrencyPattern_(patternNum, info[1]);
+};
+
+
+/**
+ * Return global currency sign string for those applications
+ * that want to handle currency sign themselves.
+ *
+ * @param {string} currencyCode ISO-4217 3-letter currency code.
+ * @return {string} Global currency sign for given currency.
+ */
+goog.i18n.currency.getGlobalCurrencySign = function(currencyCode) {
+  var info = goog.i18n.currency.CurrencyInfo[currencyCode];
+  return (currencyCode == info[1]) ? currencyCode :
+      currencyCode + ' ' + info[1];
+};
+
+
+/**
+ * Local currency pattern is the most frequently used pattern in currency's
+ * native region. It does not care about how it is distinguished from other
+ * currencies.
+ *
+ * @param {string} currencyCode ISO-4217 3-letter currency code.
+ * @return {string} Local currency pattern string for given currency.
+ */
+goog.i18n.currency.getLocalCurrencyPattern = function(currencyCode) {
+  var info = goog.i18n.currency.CurrencyInfo[currencyCode];
+  return goog.i18n.currency.getCurrencyPattern_(info[0], info[1]);
+};
+
+
+/**
+ * Returns local currency sign string for those applications that need to
+ * handle currency sign separately.
+ *
+ * @param {string} currencyCode ISO-4217 3-letter currency code.
+ * @return {string} Local currency sign for given currency.
+ */
+goog.i18n.currency.getLocalCurrencySign = function(currencyCode) {
+  return goog.i18n.currency.CurrencyInfo[currencyCode][1];
+};
+
+
+/**
+ * Portable currency pattern is a compromise between local and global. It is
+ * not a mere blend or mid-way between the two. Currency sign is chosen so that
+ * it looks familiar to native users. It also has enough information to
+ * distinguish itself from other popular currencies in its native region.
+ * In this pattern, currency sign symbols that has availability problem in
+ * popular fonts are also avoided.
+ *
+ * @param {string} currencyCode ISO-4217 3-letter currency code.
+ * @return {string} Portable currency pattern string for given currency.
+ */
+goog.i18n.currency.getPortableCurrencyPattern = function(currencyCode) {
+  var info = goog.i18n.currency.CurrencyInfo[currencyCode];
+  return goog.i18n.currency.getCurrencyPattern_(info[0], info[2]);
+};
+
+
+/**
+ * Return portable currency sign string for those applications that need to
+ * handle currency sign themselves.
+ *
+ * @param {string} currencyCode ISO-4217 3-letter currency code.
+ * @return {string} Portable currency sign for given currency.
+ */
+goog.i18n.currency.getPortableCurrencySign = function(currencyCode) {
+  return goog.i18n.currency.CurrencyInfo[currencyCode][2];
+};
+
+
+/**
+ * This function returns the default currency sign position. Some applications
+ * may want to handle currency sign and currency amount separately. This
+ * function can be used in such situations to correctly position the currency
+ * sign relative to the amount.
+ *
+ * To match the behavior of ICU, position is not determined by display locale.
+ *
+ * @param {string} currencyCode ISO-4217 3-letter currency code.
+ * @return {boolean} true if currency should be positioned before amount field.
+ */
+goog.i18n.currency.isPrefixSignPosition = function(currencyCode) {
+  return (goog.i18n.currency.CurrencyInfo[currencyCode][0] &
+          goog.i18n.currency.POSITION_FLAG_) == 0;
+};
+
+
+/**
+ * This function constructs the currency pattern. Currency sign is provided. 
The
+ * pattern information is encoded in patternNum.
+ *
+ * @param {number} patternNum Encoded pattern number that has
+ *     currency pattern information.
+ * @param {string} sign The currency sign that will be used in pattern.
+ * @return {string} currency pattern string.
+ * @private
+ */
+goog.i18n.currency.getCurrencyPattern_ = function(patternNum, sign) {
+  var strParts = ['#,##0'];
+  var precision = patternNum & goog.i18n.currency.PRECISION_MASK_;
+  if (precision > 0) {
+    strParts.push('.');
+    for (var i = 0; i < precision; i++) {
+      strParts.push('0');
+    }
+  }
+  if ((patternNum & goog.i18n.currency.POSITION_FLAG_) == 0) {
+    strParts.unshift((patternNum & goog.i18n.currency.SPACE_FLAG_) ?
+                     "' " : "'");
+    strParts.unshift(sign);
+    strParts.unshift("'");
+  } else {
+    strParts.push((patternNum & goog.i18n.currency.SPACE_FLAG_) ? " '" : "'",
+                  sign, "'");
+  }
+  return strParts.join('');
+};
+
+
+/**
+ * Modify currency pattern string by adjusting precision for given currency.
+ * Standard currency pattern will have 2 digit after decimal point.
+ * Examples:
+ *   $#,##0.00 ->  $#,##0    (precision == 0)
+ *   $#,##0.00 ->  $#,##0.0  (precision == 1)
+ *   $#,##0.00 ->  $#,##0.000  (precision == 3)
+ *
+ * @param {string} pattern currency pattern string.
+ * @param {string} currencyCode 3-letter currency code.
+ * @return {string} modified currency pattern string.
+ */
+goog.i18n.currency.adjustPrecision = function(pattern, currencyCode) {
+  var strParts = ['0'];
+  var info = goog.i18n.currency.CurrencyInfo[currencyCode];
+  var precision = info[0] & goog.i18n.currency.PRECISION_MASK_;
+  if (precision > 0) {
+    strParts.push('.');
+    for (var i = 0; i < precision; i++) {
+      strParts.push('0');
+    }
+  }
+  return pattern.replace(/0.00/g, strParts.join(''));
+};
+
+
+/**
+ * Tier 1 currency information.
+ *
+ * The first number in the array is a combination of the precision mask and
+ * other flags. The precision mask indicates how many decimal places to show 
for
+ * the currency. Valid values are [0..7]. The position flag indicates whether
+ * the currency sign should be positioned after the number. Valid values are 0
+ * (before the number) or 16 (after the number). The space flag indicates
+ * whether a space should be inserted between the currency sign and number.
+ * Valid values are 0 (no space) and 32 (space).
+ *
+ * The number in the array is calculated by adding together the mask and flag
+ * values. For example:
+ *
+ * 0: no precision (0), currency sign first (0), no space (0)
+ * 2: two decimals precision (2), currency sign first (0), no space (0)
+ * 18: two decimals precision (2), currency sign last (16), no space (0)
+ * 50: two decimals precision (2), currency sign last (16), space (32)
+ *
+ * @const {!Object<!Array<?>>}
+ */
+goog.i18n.currency.CurrencyInfo = {
+  'AED': [2, 'dh', '\u062f.\u0625.', 'DH'],
+  'ALL': [0, 'Lek', 'Lek'],
+  'AUD': [2, '$', 'AU$'],
+  'BDT': [2, '\u09F3', 'Tk'],
+  'BGN': [2, 'lev', 'lev'],
+  'BRL': [2, 'R$', 'R$'],
+  'CAD': [2, '$', 'C$'],
+  'CDF': [2, 'FrCD', 'CDF'],
+  'CHF': [2, 'CHF', 'CHF'],
+  'CLP': [0, '$', 'CL$'],
+  'CNY': [2, 'Â¥', 'RMBÂ¥'],
+  'COP': [0, '$', 'COL$'],
+  'CRC': [0, '\u20a1', 'CR\u20a1'],
+  'CZK': [50, 'K\u010d', 'K\u010d'],
+  'DKK': [18, 'kr', 'kr'],
+  'DOP': [2, '$', 'RD$'],
+  'EGP': [2, '£', 'LE'],
+  'ETB': [2, 'Birr', 'Birr'],
+  'EUR': [2, '€', '€'],
+  'GBP': [2, '£', 'GB£'],
+  'HKD': [2, '$', 'HK$'],
+  'HRK': [2, 'kn', 'kn'],
+  'HUF': [0, 'Ft', 'Ft'],
+  'IDR': [0, 'Rp', 'Rp'],
+  'ILS': [2, '\u20AA', 'IL\u20AA'],
+  'INR': [2, '\u20B9', 'Rs'],
+  'IRR': [0, 'Rial', 'IRR'],
+  'ISK': [0, 'kr', 'kr'],
+  'JMD': [2, '$', 'JA$'],
+  'JPY': [0, 'Â¥', 'JPÂ¥'],
+  'KRW': [0, '\u20A9', 'KR₩'],
+  'LKR': [2, 'Rs', 'SLRs'],
+  'LTL': [2, 'Lt', 'Lt'],
+  'MNT': [0, '\u20AE', 'MN₮'],
+  'MVR': [2, 'Rf', 'MVR'],
+  'MXN': [2, '$', 'Mex$'],
+  'MYR': [2, 'RM', 'RM'],
+  'NOK': [50, 'kr', 'NOkr'],
+  'PAB': [2, 'B/.', 'B/.'],
+  'PEN': [2, 'S/.', 'S/.'],
+  'PHP': [2, '\u20B1', 'Php'],
+  'PKR': [0, 'Rs', 'PKRs.'],
+  'PLN': [50, 'z\u0142', 'z\u0142'],
+  'RON': [2, 'RON', 'RON'],
+  'RSD': [0, 'din', 'RSD'],
+  'RUB': [50, 'руб.', 'руб.'],
+  'SAR': [2, 'Rial', 'Rial'],
+  'SEK': [2, 'kr', 'kr'],
+  'SGD': [2, '$', 'S$'],
+  'THB': [2, '\u0e3f', 'THB'],
+  'TRY': [2, 'TL', 'YTL'],
+  'TWD': [2, 'NT$', 'NT$'],
+  'TZS': [0, 'TSh', 'TSh'],
+  'UAH': [2, '\u20B4', 'UAH'],
+  'USD': [2, '$', 'US$'],
+  'UYU': [2, '$', '$U'],
+  'VND': [0, '\u20AB', 'VN\u20AB'],
+  'YER': [0, 'Rial', 'Rial'],
+  'ZAR': [2, 'R', 'ZAR']
+};
+
+
+/**
+ * Tier 2 currency information.
+ * @const {!Object<!Array<?>>}
+ */
+goog.i18n.currency.CurrencyInfoTier2 = {
+  'AFN': [48, 'Af.', 'AFN'],
+  'AMD': [0, 'Dram', 'dram'],
+  'ANG': [2, 'NAf.', 'ANG'],
+  'AOA': [2, 'Kz', 'Kz'],
+  'ARS': [2, '$', 'AR$'],
+  'AWG': [2, 'Afl.', 'Afl.'],
+  'AZN': [2, 'man.', 'man.'],
+  'BAM': [2, 'KM', 'KM'],
+  'BBD': [2, '$', 'Bds$'],
+  'BHD': [3, 'din', 'din'],
+  'BIF': [0, 'FBu', 'FBu'],
+  'BMD': [2, '$', 'BD$'],
+  'BND': [2, '$', 'B$'],
+  'BOB': [2, 'Bs', 'Bs'],
+  'BSD': [2, '$', 'BS$'],
+  'BTN': [2, 'Nu.', 'Nu.'],
+  'BWP': [2, 'P', 'pula'],
+  'BYR': [0, 'BYR', 'BYR'],
+  'BZD': [2, '$', 'BZ$'],
+  'CUC': [1, '$', 'CUC$'],
+  'CUP': [2, '$', 'CU$'],
+  'CVE': [2, 'CVE', 'Esc'],
+  'DJF': [0, 'Fdj', 'Fdj'],
+  'DZD': [2, 'din', 'din'],
+  'ERN': [2, 'Nfk', 'Nfk'],
+  'FJD': [2, '$', 'FJ$'],
+  'FKP': [2, '£', 'FK£'],
+  'GEL': [2, 'GEL', 'GEL'],
+  'GHS': [2, 'GHS', 'GHS'],
+  'GIP': [2, '£', 'GI£'],
+  'GMD': [2, 'GMD', 'GMD'],
+  'GNF': [0, 'FG', 'FG'],
+  'GTQ': [2, 'Q', 'GTQ'],
+  'GYD': [0, '$', 'GY$'],
+  'HNL': [2, 'L', 'HNL'],
+  'HTG': [2, 'HTG', 'HTG'],
+  'IQD': [0, 'din', 'IQD'],
+  'JOD': [3, 'din', 'JOD'],
+  'KES': [2, 'Ksh', 'Ksh'],
+  'KGS': [2, 'KGS', 'KGS'],
+  'KHR': [2, 'Riel', 'KHR'],
+  'KMF': [0, 'CF', 'KMF'],
+  'KPW': [0, '\u20A9KP', 'KPW'],
+  'KWD': [3, 'din', 'KWD'],
+  'KYD': [2, '$', 'KY$'],
+  'KZT': [2, '\u20B8', 'KZT'],
+  'LAK': [0, '\u20AD', '\u20AD'],
+  'LBP': [0, 'L£', 'LBP'],
+  'LRD': [2, '$', 'L$'],
+  'LSL': [2, 'LSL', 'LSL'],
+  'LYD': [3, 'din', 'LD'],
+  'MAD': [2, 'dh', 'MAD'],
+  'MDL': [2, 'MDL', 'MDL'],
+  'MGA': [0, 'Ar', 'MGA'],
+  'MKD': [2, 'din', 'MKD'],
+  'MMK': [0, 'K', 'MMK'],
+  'MOP': [2, 'MOP', 'MOP$'],
+  'MRO': [0, 'MRO', 'MRO'],
+  'MUR': [0, 'MURs', 'MURs'],
+  'MWK': [2, 'MWK', 'MWK'],
+  'MZN': [2, 'MTn', 'MTn'],
+  'NAD': [2, '$', 'N$'],
+  'NGN': [2, '\u20A6', 'NG\u20A6'],
+  'NIO': [2, 'C$', 'C$'],
+  'NPR': [2, 'Rs', 'NPRs'],
+  'NZD': [2, '$', 'NZ$'],
+  'OMR': [3, 'Rial', 'OMR'],
+  'PGK': [2, 'PGK', 'PGK'],
+  'PYG': [0, 'Gs', 'PYG'],
+  'QAR': [2, 'Rial', 'QR'],
+  'RWF': [0, 'RF', 'RF'],
+  'SBD': [2, '$', 'SI$'],
+  'SCR': [2, 'SCR', 'SCR'],
+  'SDG': [2, 'SDG', 'SDG'],
+  'SHP': [2, '£', 'SH£'],
+  'SLL': [0, 'SLL', 'SLL'],
+  'SOS': [0, 'SOS', 'SOS'],
+  'SRD': [2, '$', 'SR$'],
+  'SSP': [2, '£', 'SSP'],
+  'STD': [0, 'Db', 'Db'],
+  'SYP': [0, '£', 'SY£'],
+  'SZL': [2, 'SZL', 'SZL'],
+  'TJS': [2, 'Som', 'TJS'],
+  'TND': [3, 'din', 'DT'],
+  'TOP': [2, 'T$', 'T$'],
+  'TTD': [2, '$', 'TT$'],
+  'UGX': [0, 'UGX', 'UGX'],
+  'UZS': [0, 'so\u02bcm', 'UZS'],
+  'VEF': [2, 'Bs', 'Bs'],
+  'VUV': [0, 'VUV', 'VUV'],
+  'WST': [2, 'WST', 'WST'],
+  'XAF': [0, 'FCFA', 'FCFA'],
+  'XCD': [2, '$', 'EC$'],
+  'XOF': [0, 'CFA', 'CFA'],
+  'XPF': [0, 'FCFP', 'FCFP'],
+  'ZMW': [0, 'ZMW', 'ZMW'],
+  'ZWD': [0, '$', 'Z$']
+};

Reply via email to