aural_rendering.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { Engine } from '../common/engine.js';
  2. import * as EngineConst from '../common/engine_const.js';
  3. import { AcssRenderer } from './acss_renderer.js';
  4. import { LayoutRenderer } from './layout_renderer.js';
  5. import { PunctuationRenderer } from './punctuation_renderer.js';
  6. import { SableRenderer } from './sable_renderer.js';
  7. import { Span } from './span.js';
  8. import { SsmlRenderer } from './ssml_renderer.js';
  9. import { CountingRenderer, StringRenderer } from './string_renderer.js';
  10. import { XmlRenderer } from './xml_renderer.js';
  11. const xmlInstance = new SsmlRenderer();
  12. const renderers = new Map([
  13. [EngineConst.Markup.NONE, new StringRenderer()],
  14. [EngineConst.Markup.COUNTING, new CountingRenderer()],
  15. [EngineConst.Markup.PUNCTUATION, new PunctuationRenderer()],
  16. [EngineConst.Markup.LAYOUT, new LayoutRenderer()],
  17. [EngineConst.Markup.ACSS, new AcssRenderer()],
  18. [EngineConst.Markup.SABLE, new SableRenderer()],
  19. [EngineConst.Markup.VOICEXML, xmlInstance],
  20. [EngineConst.Markup.SSML, xmlInstance]
  21. ]);
  22. export function setSeparator(sep) {
  23. const renderer = renderers.get(Engine.getInstance().markup);
  24. if (renderer) {
  25. renderer.separator = sep;
  26. }
  27. }
  28. export function getSeparator() {
  29. const renderer = renderers.get(Engine.getInstance().markup);
  30. return renderer ? renderer.separator : '';
  31. }
  32. export function markup(descrs) {
  33. const renderer = renderers.get(Engine.getInstance().markup);
  34. if (!renderer) {
  35. return '';
  36. }
  37. return renderer.markup(descrs);
  38. }
  39. export function merge(strs) {
  40. const span = strs.map((s) => {
  41. return typeof s === 'string' ? Span.stringEmpty(s) : s;
  42. });
  43. const renderer = renderers.get(Engine.getInstance().markup);
  44. if (!renderer) {
  45. return strs.join();
  46. }
  47. return renderer.merge(span);
  48. }
  49. export function finalize(str) {
  50. const renderer = renderers.get(Engine.getInstance().markup);
  51. if (!renderer) {
  52. return str;
  53. }
  54. return renderer.finalize(str);
  55. }
  56. export function error(key) {
  57. const renderer = renderers.get(Engine.getInstance().markup);
  58. if (!renderer) {
  59. return '';
  60. }
  61. return renderer.error(key);
  62. }
  63. export function registerRenderer(type, renderer) {
  64. renderers.set(type, renderer);
  65. }
  66. export function isXml() {
  67. return renderers.get(Engine.getInstance().markup) instanceof XmlRenderer;
  68. }