string_renderer.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.CountingRenderer = exports.StringRenderer = void 0;
  4. const engine_js_1 = require("../common/engine.js");
  5. const abstract_audio_renderer_js_1 = require("./abstract_audio_renderer.js");
  6. const audio_util_js_1 = require("./audio_util.js");
  7. class StringRenderer extends abstract_audio_renderer_js_1.AbstractAudioRenderer {
  8. markup(descrs) {
  9. let str = '';
  10. const markup = (0, audio_util_js_1.personalityMarkup)(descrs);
  11. const clean = markup.filter((x) => x.span);
  12. if (!clean.length) {
  13. return str;
  14. }
  15. const len = clean.length - 1;
  16. for (let i = 0, descr; (descr = clean[i]); i++) {
  17. if (descr.span) {
  18. str += this.merge(descr.span);
  19. }
  20. if (i >= len) {
  21. continue;
  22. }
  23. const join = descr.join;
  24. str += typeof join === 'undefined' ? this.separator : join;
  25. }
  26. return str;
  27. }
  28. }
  29. exports.StringRenderer = StringRenderer;
  30. class CountingRenderer extends StringRenderer {
  31. finalize(str) {
  32. const output = super.finalize(str);
  33. const count = engine_js_1.Engine.getInstance().modality === 'braille' ? '⣿⠀⣿⠀⣿⠀⣿⠀⣿⠀' : '0123456789';
  34. let second = new Array(Math.trunc(output.length / 10) + 1).join(count);
  35. second += count.slice(0, output.length % 10);
  36. return output + '\n' + second;
  37. }
  38. }
  39. exports.CountingRenderer = CountingRenderer;