"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SsmlRenderer = void 0; const engine_js_1 = require("../common/engine.js"); const EngineConst = require("../common/engine_const.js"); const xml_renderer_js_1 = require("./xml_renderer.js"); class SsmlRenderer extends xml_renderer_js_1.XmlRenderer { finalize(str) { return ('` + '' + this.separator + str + this.separator + ''); } pause(pause) { return (''); } prosodyElement(attr, value) { value = Math.floor(this.applyScaleFunction(value)); const valueStr = value < 0 ? value.toString() : '+' + value.toString(); return ('')); } closeTag(_tag) { return ''; } markup(descrs) { SsmlRenderer.MARKS = {}; return super.markup(descrs); } merge(spans) { const result = []; let lastMark = ''; for (let i = 0; i < spans.length; i++) { const span = spans[i]; if (this.isEmptySpan(span)) continue; const kind = SsmlRenderer.MARK_KIND ? span.attributes['kind'] : ''; const id = engine_js_1.Engine.getInstance().automark ? span.attributes['id'] : engine_js_1.Engine.getInstance().mark ? span.attributes['extid'] : ''; if (id && id !== lastMark && !(SsmlRenderer.MARK_ONCE && SsmlRenderer.MARKS[id])) { result.push(kind ? `` : ``); lastMark = id; SsmlRenderer.MARKS[id] = true; } if (engine_js_1.Engine.getInstance().character && span.speech.length === 1 && span.speech.match(/[a-zA-Z]/)) { result.push('' + span.speech + ''); } else { result.push(span.speech); } } return result.join(this.separator); } isEmptySpan(span) { const sep = span.attributes['separator']; return span.speech.match(/^\s*$/) && (!sep || sep.match(/^\s*$/)); } } exports.SsmlRenderer = SsmlRenderer; SsmlRenderer.MARK_ONCE = false; SsmlRenderer.MARK_KIND = true; SsmlRenderer.CHARACTER_ATTR = 'character'; SsmlRenderer.MARKS = {};