"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 = {};