diff options
Diffstat (limited to 'i18n')
| -rw-r--r-- | i18n/spec/closureI18nExtractorSpec.js | 11 | ||||
| -rw-r--r-- | i18n/src/closureI18nExtractor.js | 11 | 
2 files changed, 19 insertions, 3 deletions
| diff --git a/i18n/spec/closureI18nExtractorSpec.js b/i18n/spec/closureI18nExtractorSpec.js index f4f190d5..87a9d455 100644 --- a/i18n/spec/closureI18nExtractorSpec.js +++ b/i18n/spec/closureI18nExtractorSpec.js @@ -248,3 +248,14 @@ describe("pluralExtractor", function() {    })  }); +describe("serializeContent", function() { +  it("should not make any modifications to the content of the locale", function() { +    var serializedContent = closureI18nExtractor.serializeContent(newTestLocaleInfo()); +    expect(eval("(" + serializedContent + ")")).toEqual(newTestLocaleInfo()); +  }); +  it("should only have ascii characters", function() { +    var serializedContent = closureI18nExtractor.serializeContent(newTestLocaleInfo()); +    expect((/[^\u0001-\u007f]/).test(serializedContent)).toBe(false); +  }); +}); + diff --git a/i18n/src/closureI18nExtractor.js b/i18n/src/closureI18nExtractor.js index a26f89b7..13d42143 100644 --- a/i18n/src/closureI18nExtractor.js +++ b/i18n/src/closureI18nExtractor.js @@ -9,6 +9,7 @@ exports.pluralExtractor = pluralExtractor;  exports.outputLocale = outputLocale;  exports.correctedLocaleId = correctedLocaleId;  exports.findLocaleId = findLocaleId; +exports.serializeContent = serializeContent;  var goog = { provide: function() {},    require: function() {}, @@ -125,6 +126,12 @@ function canonicalizeForJsonStringify(unused_key, object) {    return result;  } +function serializeContent(localeObj) { +  return JSON.stringify(localeObj, canonicalizeForJsonStringify, '  ') +    .replace(new RegExp('[\\u007f-\\uffff]', 'g'), function(c) { return '\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4); }) +    .replace(/"@@|@@"/g, ''); +} +  function outputLocale(localeInfo, localeID) {    var fallBackID = localeID.match(/[A-Za-z]+/)[0],        localeObj = localeInfo[localeID], @@ -167,9 +174,7 @@ function outputLocale(localeInfo, localeID) {      id: localeObj.id    }; -  var content = JSON.stringify(localeInfo[localeID], canonicalizeForJsonStringify, '  ') -      .replace(/\ยค/g, '\\u00A4') -      .replace(/"@@|@@"/g, ''); +  var content = serializeContent(localeInfo[localeID]);    return prefix + content + suffix;  } | 
