diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/i18n/graphemebreak.js')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/i18n/graphemebreak.js | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/i18n/graphemebreak.js b/contexts/data/lib/closure-library/closure/goog/i18n/graphemebreak.js deleted file mode 100644 index f528c3a..0000000 --- a/contexts/data/lib/closure-library/closure/goog/i18n/graphemebreak.js +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright 2006 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 Detect Grapheme Cluster Break in a pair of codepoints. Follows - * Unicode 5.1 UAX#29. - * - */ - -goog.provide('goog.i18n.GraphemeBreak'); -goog.require('goog.structs.InversionMap'); - - -/** - * Enum for all Grapheme Cluster Break properties. - * These enums directly corresponds to Grapheme_Cluster_Break property values - * mentioned in http://unicode.org/reports/tr29 table 2. - * - * CR and LF are moved to the bottom of the list because they occur only once - * and so good candidates to take 2 decimal digit values. - * @enum {number} - * @protected - */ -goog.i18n.GraphemeBreak.property = { - ANY: 0, - CONTROL: 1, - EXTEND: 2, - PREPEND: 3, - SPACING_MARK: 4, - L: 5, - V: 6, - T: 7, - LV: 8, - LVT: 9, - CR: 10, - LF: 11 -}; - - -/** - * Grapheme Cluster Break property values for all codepoints as inversion map. - * Constructed lazily. - * - * @type {goog.structs.InversionMap} - * @private - */ -goog.i18n.GraphemeBreak.inversions_ = null; - - -/** - * There are two kinds of grapheme clusters: 1) Legacy 2)Extended. This method - * is to check for legacy rules. - * - * @param {number} prop_a The property enum value of the first character. - * @param {number} prop_b The property enum value of the second character. - * @return {boolean} True if a & b do not form a cluster; False otherwise. - * @private - */ -goog.i18n.GraphemeBreak.applyLegacyBreakRules_ = function(prop_a, prop_b) { - - var prop = goog.i18n.GraphemeBreak.property; - - if (prop_a == prop.CR && prop_b == prop.LF) { - return false; - } - if (prop_a == prop.CONTROL || prop_a == prop.CR || prop_a == prop.LF) { - return true; - } - if (prop_b == prop.CONTROL || prop_b == prop.CR || prop_b == prop.LF) { - return true; - } - if ((prop_a == prop.L) && - (prop_b == prop.L || prop_b == prop.V || - prop_b == prop.LV || prop_b == prop.LVT)) { - return false; - } - if ((prop_a == prop.LV || prop_a == prop.V) && - (prop_b == prop.V || prop_b == prop.T)) { - return false; - } - if ((prop_a == prop.LVT || prop_a == prop.T) && (prop_b == prop.T)) { - return false; - } - if (prop_b == prop.EXTEND) { - return false; - } - return true; -}; - - -/** - * Method to return property enum value of the codepoint. If it is Hangul LV or - * LVT, then it is computed; for the rest it is picked from the inversion map. - * @param {number} acode The code point value of the character. - * @return {number} Property enum value of codepoint. - * @private - */ -goog.i18n.GraphemeBreak.getBreakProp_ = function(acode) { - if (0xAC00 <= acode && acode <= 0xD7A3) { - var prop = goog.i18n.GraphemeBreak.property; - if (acode % 0x1C == 0x10) { - return prop.LV; - } - return prop.LVT; - } else { - if (!goog.i18n.GraphemeBreak.inversions_) { - goog.i18n.GraphemeBreak.inversions_ = new goog.structs.InversionMap( - [0, 10, 1, 2, 1, 18, 95, 33, 13, 1, 594, 112, 275, 7, 263, 45, 1, 1, - 1, 2, 1, 2, 1, 1, 56, 4, 12, 11, 48, 20, 17, 1, 101, 7, 1, 7, 2, 2, - 1, 4, 33, 1, 1, 1, 30, 27, 91, 11, 58, 9, 269, 2, 1, 56, 1, 1, 3, 8, - 4, 1, 3, 4, 13, 2, 29, 1, 2, 56, 1, 1, 1, 2, 6, 6, 1, 9, 1, 10, 2, - 29, 2, 1, 56, 2, 3, 17, 30, 2, 3, 14, 1, 56, 1, 1, 3, 8, 4, 1, 20, - 2, 29, 1, 2, 56, 1, 1, 2, 1, 6, 6, 11, 10, 2, 30, 1, 59, 1, 1, 1, - 12, 1, 9, 1, 41, 3, 58, 3, 5, 17, 11, 2, 30, 2, 56, 1, 1, 1, 1, 2, - 1, 3, 1, 5, 11, 11, 2, 30, 2, 58, 1, 2, 5, 7, 11, 10, 2, 30, 2, 70, - 6, 2, 6, 7, 19, 2, 60, 11, 5, 5, 1, 1, 8, 97, 13, 3, 5, 3, 6, 74, 2, - 27, 1, 1, 1, 1, 1, 4, 2, 49, 14, 1, 5, 1, 2, 8, 45, 9, 1, 100, 2, 4, - 1, 6, 1, 2, 2, 2, 23, 2, 2, 4, 3, 1, 3, 2, 7, 3, 4, 13, 1, 2, 2, 6, - 1, 1, 1, 112, 96, 72, 82, 357, 1, 946, 3, 29, 3, 29, 2, 30, 2, 64, - 2, 1, 7, 8, 1, 2, 11, 9, 1, 45, 3, 155, 1, 118, 3, 4, 2, 9, 1, 6, 3, - 116, 17, 7, 2, 77, 2, 3, 228, 4, 1, 47, 1, 1, 5, 1, 1, 5, 1, 2, 38, - 9, 12, 2, 1, 30, 1, 4, 2, 2, 1, 121, 8, 8, 2, 2, 392, 64, 523, 1, 2, - 2, 24, 7, 49, 16, 96, 33, 3311, 32, 554, 6, 105, 2, 30164, 4, 9, 2, - 388, 1, 3, 1, 4, 1, 23, 2, 2, 1, 88, 2, 50, 16, 1, 97, 8, 25, 11, 2, - 213, 6, 2, 2, 2, 2, 12, 1, 8, 1, 1, 434, 11172, 1116, 1024, 6942, 1, - 737, 16, 16, 7, 216, 1, 158, 2, 89, 3, 513, 1, 2051, 15, 40, 8, - 50981, 1, 1, 3, 3, 1, 5, 8, 8, 2, 7, 30, 4, 148, 3, 798140, 255], - [1, 11, 1, 10, 1, 0, 1, 0, 1, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 1, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 0, 2, 0, 1, 0, 2, 0, 2, - 0, 2, 0, 2, 0, 2, 4, 0, 2, 0, 4, 2, 4, 2, 0, 2, 0, 2, 0, 2, 4, 0, 2, - 0, 2, 4, 2, 4, 2, 0, 2, 0, 2, 0, 2, 4, 0, 2, 4, 2, 0, 2, 0, 2, 4, 0, - 2, 0, 4, 2, 4, 2, 0, 2, 0, 2, 4, 0, 2, 0, 2, 4, 2, 4, 2, 0, 2, 0, 2, - 0, 2, 4, 2, 4, 2, 0, 2, 0, 4, 0, 2, 4, 2, 0, 2, 0, 4, 0, 2, 0, 4, 2, - 4, 2, 4, 2, 4, 2, 0, 2, 0, 4, 0, 2, 4, 2, 4, 2, 0, 2, 0, 4, 0, 2, 4, - 2, 4, 2, 4, 0, 2, 0, 3, 2, 0, 2, 0, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, - 0, 2, 0, 4, 0, 2, 4, 2, 0, 2, 0, 2, 0, 2, 0, 4, 2, 4, 2, 4, 2, 4, 2, - 0, 4, 2, 0, 2, 0, 4, 0, 4, 0, 2, 0, 2, 4, 2, 4, 2, 0, 4, 0, 5, 6, 7, - 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 1, 4, 2, 4, 2, 4, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 4, 2, 4, 2, 4, 2, 0, 4, 0, 4, 0, 2, 4, 0, 2, 4, 0, 2, 4, 2, - 4, 2, 4, 2, 4, 0, 2, 0, 2, 4, 0, 4, 2, 4, 2, 4, 0, 4, 2, 4, 2, 0, 2, - 0, 1, 2, 1, 0, 1, 0, 1, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, - 2, 0, 2, 0, 4, 2, 4, 0, 4, 0, 4, 2, 0, 2, 0, 2, 4, 0, 2, 4, 2, 4, 2, - 0, 2, 0, 2, 4, 0, 9, 0, 2, 0, 2, 0, 2, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, - 0, 2, 0, 2, 0, 2, 4, 2, 0, 4, 2, 1, 2, 0, 2, 0, 2, 0, 2, 0, 1, 2], - true); - } - return (/** @type {number} */ - goog.i18n.GraphemeBreak.inversions_.at(acode)); - } -}; - - -/** - * There are two kinds of grapheme clusters: 1) Legacy 2)Extended. This method - * is to check for both using a boolean flag to switch between them. - * @param {number} a The code point value of the first character. - * @param {number} b The code point value of the second character. - * @param {boolean=} opt_extended If true, indicates extended grapheme cluster; - * If false, indicates legacy cluster. - * @return {boolean} True if a & b do not form a cluster; False otherwise. - */ -goog.i18n.GraphemeBreak.hasGraphemeBreak = function(a, b, opt_extended) { - - var prop_a = goog.i18n.GraphemeBreak.getBreakProp_(a); - var prop_b = goog.i18n.GraphemeBreak.getBreakProp_(b); - var prop = goog.i18n.GraphemeBreak.property; - - return goog.i18n.GraphemeBreak.applyLegacyBreakRules_(prop_a, prop_b) && - !(opt_extended && (prop_a == prop.PREPEND || prop_b == prop.SPACING_MARK)); -}; |