| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview Translates text to braille, optionally with some parts | 6 * @fileoverview Translates text to braille, optionally with some parts |
| 7 * uncontracted. | 7 * uncontracted. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 goog.provide('cvox.ExpandingBrailleTranslator'); | 10 goog.provide('cvox.ExpandingBrailleTranslator'); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 cvox.ExpandingBrailleTranslator.prototype.translate = function( | 89 cvox.ExpandingBrailleTranslator.prototype.translate = function( |
| 90 text, expansionType, callback) { | 90 text, expansionType, callback) { |
| 91 var expandRanges = this.findExpandRanges_(text, expansionType); | 91 var expandRanges = this.findExpandRanges_(text, expansionType); |
| 92 var extraCellsSpans = | 92 var extraCellsSpans = |
| 93 text.getSpansInstanceOf(cvox.ExtraCellsSpan).filter(function(span) { | 93 text.getSpansInstanceOf(cvox.ExtraCellsSpan).filter(function(span) { |
| 94 return span.cells.byteLength > 0; | 94 return span.cells.byteLength > 0; |
| 95 }); | 95 }); |
| 96 var extraCellsPositions = extraCellsSpans.map(function(span) { | 96 var extraCellsPositions = extraCellsSpans.map(function(span) { |
| 97 return text.getSpanStart(span); | 97 return text.getSpanStart(span); |
| 98 }); | 98 }); |
| 99 var formTypeMap = new Array(text.length).fill(0); |
| 100 text.getSpansInstanceOf(cvox.BrailleTextStyleSpan).forEach(function(span) { |
| 101 var start = text.getSpanStart(span); |
| 102 var end = text.getSpanEnd(span); |
| 103 for (var i = start; i < end; i++) |
| 104 formTypeMap[i] |= span.formType; |
| 105 }); |
| 106 |
| 99 if (expandRanges.length == 0 && extraCellsSpans.length == 0) { | 107 if (expandRanges.length == 0 && extraCellsSpans.length == 0) { |
| 100 this.defaultTranslator_.translate( | 108 this.defaultTranslator_.translate( |
| 101 text.toString(), | 109 text.toString(), formTypeMap, |
| 102 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_( | 110 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_( |
| 103 text.length, callback)); | 111 text.length, callback)); |
| 104 return; | 112 return; |
| 105 } | 113 } |
| 106 | 114 |
| 107 var chunks = []; | 115 var chunks = []; |
| 108 function maybeAddChunkToTranslate(translator, start, end) { | 116 function maybeAddChunkToTranslate(translator, start, end) { |
| 109 if (start < end) | 117 if (start < end) |
| 110 chunks.push({translator: translator, start: start, end: end}); | 118 chunks.push({translator: translator, start: start, end: end}); |
| 111 } | 119 } |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 appendAdjusted(brailleToText, chunk.brailleToText, chunk.start); | 181 appendAdjusted(brailleToText, chunk.brailleToText, chunk.start); |
| 174 cellPos += chunk.cells.byteLength; | 182 cellPos += chunk.cells.byteLength; |
| 175 } | 183 } |
| 176 callback(cells.buffer, textToBraille, brailleToText); | 184 callback(cells.buffer, textToBraille, brailleToText); |
| 177 } | 185 } |
| 178 | 186 |
| 179 if (chunksToTranslate.length > 0) { | 187 if (chunksToTranslate.length > 0) { |
| 180 chunksToTranslate.forEach(function(chunk) { | 188 chunksToTranslate.forEach(function(chunk) { |
| 181 chunk.translator.translate( | 189 chunk.translator.translate( |
| 182 text.toString().substring(chunk.start, chunk.end), | 190 text.toString().substring(chunk.start, chunk.end), |
| 191 formTypeMap.slice(chunk.start, chunk.end), |
| 183 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_( | 192 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_( |
| 184 chunk.end - chunk.start, goog.partial(chunkTranslated, chunk))); | 193 chunk.end - chunk.start, goog.partial(chunkTranslated, chunk))); |
| 185 }); | 194 }); |
| 186 } else { | 195 } else { |
| 187 finish(); | 196 finish(); |
| 188 } | 197 } |
| 189 }; | 198 }; |
| 190 | 199 |
| 191 | 200 |
| 192 /** | 201 /** |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 }; | 343 }; |
| 335 }; | 344 }; |
| 336 | 345 |
| 337 | 346 |
| 338 /** | 347 /** |
| 339 * A character range with inclusive start and exclusive end positions. | 348 * A character range with inclusive start and exclusive end positions. |
| 340 * @typedef {{start: number, end: number}} | 349 * @typedef {{start: number, end: number}} |
| 341 * @private | 350 * @private |
| 342 */ | 351 */ |
| 343 cvox.ExpandingBrailleTranslator.Range_; | 352 cvox.ExpandingBrailleTranslator.Range_; |
| OLD | NEW |