diff options
Diffstat (limited to 'chromium/chrome/browser/resources/chromeos/chromevox/speech_rules/math_simple_store.js')
-rw-r--r-- | chromium/chrome/browser/resources/chromeos/chromevox/speech_rules/math_simple_store.js | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/chromium/chrome/browser/resources/chromeos/chromevox/speech_rules/math_simple_store.js b/chromium/chrome/browser/resources/chromeos/chromevox/speech_rules/math_simple_store.js deleted file mode 100644 index dedc74b4719..00000000000 --- a/chromium/chrome/browser/resources/chromeos/chromevox/speech_rules/math_simple_store.js +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/** - * @fileoverview Rule stores for the basic components of math expressions: - * Unicode symbols and functions. - * - * The idea of these stores is to provide a more efficient data structure to - * look up rules in the background page than the usual flat array of rules - * implemented by other stores. - * - */ - -goog.provide('cvox.MathCompoundStore'); -goog.provide('cvox.MathSimpleStore'); - -goog.require('cvox.MathStore'); -goog.require('cvox.SpeechRule'); - -/** - * A base store for simple Math objects. - * @constructor - * @extends {cvox.MathStore} - */ -cvox.MathSimpleStore = function() { - goog.base(this); - }; -goog.inherits(cvox.MathSimpleStore, cvox.MathStore); - - -/** - * Turns a domain mapping from its JSON representation containing simple strings - * only into a list of speech rules. - * @param {string} name Name for the rules. - * @param {string} str String for precondition and constraints. - * @param {Object<Object<string>>} mapping Simple string - * mapping. - */ -cvox.MathSimpleStore.prototype.defineRulesFromMappings = function( - name, str, mapping) { - for (var domain in mapping) { - for (var style in mapping[domain]) { - var content = mapping[domain][style]; - var cstr = 'self::text() = "' + str + '"'; - var rule = this.defineRule( - name, domain + '.' + style, '[t] "' + content + '"', - 'self::text()', cstr); - } - } -}; - - -/** - * A compound store for simple Math objects. - * @constructor - */ -cvox.MathCompoundStore = function() { - /** - * A set of efficient substores. - * @type {Object<cvox.MathStore>} - * @private - */ - this.subStores_ = {}; -}; -goog.addSingletonGetter(cvox.MathCompoundStore); - - -/** - * Function creates a rule store in the compound store for a particular string, - * and populates it with a set of rules. - * @param {string} name Name of the rule. - * @param {string} str String used as key to refer to the rule store - * precondition and constr - * @param {Object} mappings JSON representation of mappings from styles and - * domains to strings, from which the speech rules will be computed. - */ -cvox.MathCompoundStore.prototype.defineRules = function(name, str, mappings) { - var store = new cvox.MathSimpleStore(); - store.defineRulesFromMappings(name, str, mappings); - this.subStores_[str] = store; -}; - - -/** - * Makes a speech rule for Unicode characters from its JSON representation. - * @param {Object} json JSON object of the speech rules. - */ -cvox.MathCompoundStore.prototype.addSymbolRules = function(json) { - var key = cvox.MathSimpleStore.parseUnicode_(json['key']); - this.defineRules(json['key'], key, json['mappings']); -}; - - -/** - * Makes a speech rule for Unicode characters from its JSON representation. - * @param {Object} json JSON object of the speech rules. - */ -cvox.MathCompoundStore.prototype.addFunctionRules = function(json) { - var names = json['names']; - var mappings = json['mappings']; - for (var j = 0, name; name = names[j]; j++) { - this.defineRules(name, name, mappings); - } -}; - - -/** - * Retrieves a rule for the given node if one exists. - * @param {Node} node A node. - * @param {!cvox.SpeechRule.DynamicCstr} dynamic Additional dynamic - * constraints. These are matched against properties of a rule. - * @return {cvox.SpeechRule} The speech rule if it exists. - */ -cvox.MathCompoundStore.prototype.lookupRule = function(node, dynamic) { - var store = this.subStores_[node.textContent]; - if (store) { - return store.lookupRule(node, dynamic); - } -}; - - -/** - * Looks up a rule for a given string and executes its actions. - * @param {string} text The text to be translated. - * @param {!cvox.SpeechRule.DynamicCstr} dynamic Additional dynamic - * constraints. These are matched against properties of a rule. - * @return {!string} The string resulting from the action of speech rule. - */ -cvox.MathCompoundStore.prototype.lookupString = function(text, dynamic) { - var textNode = document.createTextNode(text); - var rule = this.lookupRule(textNode, dynamic); - if (!rule) { - return ''; - } - return rule.action.components - .map(function(comp) { - return comp.content.slice(1, -1);}) - .join(' '); -}; - - -/** - * Get a set of all dynamic constraint values. - * @return {!Object<cvox.SpeechRule.DynamicCstrAttrib, Array<string>>} The - * object with all annotations. - */ -cvox.MathCompoundStore.prototype.getDynamicConstraintValues = function() { - var newCstr = {}; - for (var store in this.subStores_) { - var cstr = this.subStores_[store].getDynamicConstraintValues(); - for (var key in cstr) { - var set = newCstr[key]; - if (set) { - newCstr[key] = cvox.MathUtil.union(set, cstr[key]); - } else { - newCstr[key] = cstr[key]; - } - } - } - return newCstr; -}; - - -/** - * Parses a string with a hex representatino of a unicode code point into the - * corresponding unicode character. - * @param {string} number The code point to be parsed. - * @return {string} The unicode character. - * @private - */ -cvox.MathSimpleStore.parseUnicode_ = function(number) { - var keyValue = parseInt(number, 16); - if (keyValue < 0x10000) { - return String.fromCharCode(keyValue); - } - keyValue -= 0x10000; - var hiSurrogate = (keyValue >> 10) + 0xD800; - var lowSurrogate = (keyValue & 0x3FF) + 0xDC00; - return String.fromCharCode(hiSurrogate, lowSurrogate); -}; |