[orca] Don't flatten MathML expressions when expanding embedded object characters
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Don't flatten MathML expressions when expanding embedded object characters
- Date: Thu, 24 May 2018 00:05:01 +0000 (UTC)
commit 781a84da58bf43e4127b6fad87087b7541948463
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Wed May 23 17:04:10 2018 -0700
Don't flatten MathML expressions when expanding embedded object characters
src/orca/scripts/web/script_utilities.py | 16 +++++++++++++---
src/orca/speech_generator.py | 10 ++++++++++
2 files changed, 23 insertions(+), 3 deletions(-)
---
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 7c3f5cc..8fb6502 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -726,6 +726,12 @@ class Utilities(script_utilities.Utilities):
return [ext.x, ext.y, ext.width, ext.height]
+ def _preserveTree(self, obj):
+ if self.isMathTopLevel(obj):
+ return True
+
+ return False
+
def expandEOCs(self, obj, startOffset=0, endOffset=-1):
if not self.inDocumentContent(obj):
return super().expandEOCs(obj, startOffset, endOffset)
@@ -754,9 +760,13 @@ class Utilities(script_utilities.Utilities):
child = obj[i + childOffset]
except:
continue
- childText = self.expandEOCs(child)
- if not childText:
- childText = ""
+
+ childText = ""
+ if not self._preserveTree(child):
+ childText = self.expandEOCs(child)
+ else:
+ utterances = self._script.speechGenerator.generateSpeech(child)
+ childText = self._script.speechGenerator.utterancesToString(utterances)
toBuild[index] = "%s " % childText
string = "".join(toBuild).strip()
diff --git a/src/orca/speech_generator.py b/src/orca/speech_generator.py
index 050a517..1a74ce3 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -2552,3 +2552,13 @@ class SpeechGenerator(generator.Generator):
voice.update(override)
return [voice]
+
+ def utterancesToString(self, utterances):
+ string = ""
+ for u in utterances:
+ if isinstance(u, str):
+ string += " %s" % u
+ elif isinstance(u, Pause) and string and string[-1].isalnum():
+ string += "."
+
+ return string.strip()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]