modaq
Version:
Quiz Bowl Reader using TypeScript, React, and MobX
1,281 lines • 50.7 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = require("chai");
const FormattedTextParser = __importStar(require("src/parser/FormattedTextParser"));
const GameFormats = __importStar(require("src/state/GameFormats"));
require("src/parser/IFormattedText");
describe("FormattedTextParserTests", () => {
describe("parseFormattedText", () => {
it("No tags", () => {
const text = "This text has no tags in it.";
const result = FormattedTextParser.parseFormattedText(text);
chai_1.expect(result).to.deep.equal([
{
text,
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("All emphasized", () => {
const expectedText = "This text is all emphasized.";
const textToFormat = `<em>${expectedText}</em>`;
const result = FormattedTextParser.parseFormattedText(textToFormat);
chai_1.expect(result).to.deep.equal([
{
text: expectedText,
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("All required", () => {
const expectedText = "This text is all required.";
const textToFormat = `<req>${expectedText}</req>`;
const result = FormattedTextParser.parseFormattedText(textToFormat);
chai_1.expect(result).to.deep.equal([
{
text: expectedText,
bolded: true,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("All bolded", () => {
const expectedText = "This text is all bolded.";
const textToFormat = `<b>${expectedText}</b>`;
const result = FormattedTextParser.parseFormattedText(textToFormat);
chai_1.expect(result).to.deep.equal([
{
text: expectedText,
bolded: true,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("All underlined", () => {
const expectedText = "This text is all underlined.";
const textToFormat = `<u>${expectedText}</u>`;
const result = FormattedTextParser.parseFormattedText(textToFormat);
chai_1.expect(result).to.deep.equal([
{
text: expectedText,
bolded: false,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("All subscripted", () => {
const expectedText = "This text is all subscripted.";
const textToFormat = `<sub>${expectedText}</sub>`;
const result = FormattedTextParser.parseFormattedText(textToFormat);
chai_1.expect(result).to.deep.equal([
{
text: expectedText,
bolded: false,
emphasized: false,
underlined: false,
subscripted: true,
superscripted: false,
pronunciation: false,
},
]);
});
it("All superscripted", () => {
const expectedText = "This text is all superscripted.";
const textToFormat = `<sup>${expectedText}</sup>`;
const result = FormattedTextParser.parseFormattedText(textToFormat);
chai_1.expect(result).to.deep.equal([
{
text: expectedText,
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: true,
pronunciation: false,
},
]);
});
it("Pronunciation guide", () => {
const textToFormat = 'This text is mine ("mein").';
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: GameFormats.ACFGameFormat.pronunciationGuideMarkers,
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: '("mein")',
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: ".",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Bolded pronunciation guide", () => {
const textToFormat = '<b>Solano Lopez ("LOW-pez")</b> was in this war.';
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: GameFormats.ACFGameFormat.pronunciationGuideMarkers,
});
chai_1.expect(result).to.deep.equal([
{
text: "Solano Lopez ",
bolded: true,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: '("LOW-pez")',
bolded: true,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " was in this war.",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Non-parentheses pronunciation guide", () => {
const textToFormat = "This text is mine [mein].";
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["[", "]"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "[mein]",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: ".",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Different pronunciation guide", () => {
const textToFormat = 'This text is mine ("mein").';
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["[", "]"],
});
chai_1.expect(result).to.deep.equal([
{
text: 'This text is mine ("mein").',
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Special quotes in text with normal quotes in pronunciation guide", () => {
const textToFormat = "This text is mine (“mein”).";
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ['("', '")'],
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "(“mein”)",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: ".",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Normal quotes in text with special quotes in pronunciation guide", () => {
const textToFormat = 'This text is mine ("mein").';
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["(“", "”)"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: '("mein")',
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: ".",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Mixed quotes in text (special, normal) in pronunciation guide", () => {
const textToFormat = 'This text is mine (“mein").';
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["(“", "”)"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: '(“mein")',
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: ".",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Mixed quotes in text (normal, special) in pronunciation guide", () => {
const textToFormat = 'This text is mine ("mein”).';
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["(“", "”)"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: '("mein”)',
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: ".",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Special quotes in wrong order in pronunciation guide", () => {
const textToFormat = "This text is mine (”mein“).";
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ['("', '")'],
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine (”mein“).",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Case insensitive normal quotes in text with special quotes in pronunciation guide", () => {
const textToFormat = 'This text is mine (a"mein"a).';
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["(A“", "”A)"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This text is mine ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: '(a"mein"a)',
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: ".",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Default reader directives (parentheses)", () => {
const textToFormat = "This (Emphasize) equation is proportional to (read slowly) a minus x, plus (pause) 1.";
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["[", "]"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "(Emphasize)",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " equation is proportional to ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "(read slowly)",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " a minus x, plus ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "(pause)",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " 1.",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Default reader directives (square brackets)", () => {
const textToFormat = "This [Emphasize] equation is proportional to [read Slowly] a minus x, plus [pause] 1.";
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["(", ")"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "[Emphasize]",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " equation is proportional to ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "[read Slowly]",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " a minus x, plus ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "[pause]",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " 1.",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Explicit reader directives", () => {
const textToFormat = "This (Emphasize) equation is proportional to (slowly) a minus x, plus (pause) 1.";
const result = FormattedTextParser.parseFormattedText(textToFormat, {
pronunciationGuideMarkers: ["[", "]"],
readerDirectives: ["(slowly)"],
});
chai_1.expect(result).to.deep.equal([
{
text: "This (Emphasize) equation is proportional to ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "(slowly)",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: true,
},
{
text: " a minus x, plus (pause) 1.",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Emphasized then required", () => {
const text = "Before <em>emphasized then</em> in between <req>required then</req> done.";
const result = FormattedTextParser.parseFormattedText(text);
chai_1.expect(result).to.deep.equal([
{
text: "Before ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "emphasized then",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: " in between ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "required then",
bolded: true,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: " done.",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
it("Overlap", () => {
const text = "The epic <em>The <req>Iliad</req></em> is by Homer";
const result = FormattedTextParser.parseFormattedText(text);
chai_1.expect(result).to.deep.equal([
{
text: "The epic ",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "The ",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "Iliad",
bolded: true,
emphasized: true,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: " is by Homer",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
]);
});
});
describe("splitFormattedTextIntoWords", () => {
it("No tags", () => {
const text = "This text has no tags in it.";
const result = FormattedTextParser.splitFormattedTextIntoWords(text);
const expected = text.split(/\s+/g).map((word) => {
return [
{
text: word,
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("All bolded", () => {
const expectedText = "This text is all bolded.";
const textToFormat = `<b>${expectedText}</b>`;
const result = FormattedTextParser.splitFormattedTextIntoWords(textToFormat);
const expected = expectedText.split(/\s+/g).map((word) => {
return [
{
text: word,
bolded: true,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("All emphasized", () => {
const expectedText = "This text is all emphasized.";
const textToFormat = `<em>${expectedText}</em>`;
const result = FormattedTextParser.splitFormattedTextIntoWords(textToFormat);
const expected = expectedText.split(/\s+/g).map((word) => {
return [
{
text: word,
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("All underlined", () => {
const expectedText = "This text is all bolded.";
const textToFormat = `<u>${expectedText}</u>`;
const result = FormattedTextParser.splitFormattedTextIntoWords(textToFormat);
const expected = expectedText.split(/\s+/g).map((word) => {
return [
{
text: word,
bolded: false,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("All required", () => {
const expectedText = "This text is all required.";
const textToFormat = `<req>${expectedText}</req>`;
const result = FormattedTextParser.splitFormattedTextIntoWords(textToFormat);
const expected = expectedText.split(/\s+/g).map((word) => {
return [
{
text: word,
bolded: true,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("All subscripted", () => {
const expectedText = "This text is all subscripted.";
const textToFormat = `<sub>${expectedText}</sub>`;
const result = FormattedTextParser.splitFormattedTextIntoWords(textToFormat);
const expected = expectedText.split(/\s+/g).map((word) => {
return [
{
text: word,
bolded: false,
emphasized: false,
underlined: false,
subscripted: true,
superscripted: false,
pronunciation: false,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("All superscripted", () => {
const expectedText = "This text is all superscripted.";
const textToFormat = `<sup>${expectedText}</sup>`;
const result = FormattedTextParser.splitFormattedTextIntoWords(textToFormat);
const expected = expectedText.split(/\s+/g).map((word) => {
return [
{
text: word,
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: true,
pronunciation: false,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("Pronunciation", () => {
const textToFormat = 'There is a pronunciation guide ("GUY-de") in this question.';
const result = FormattedTextParser.splitFormattedTextIntoWords(textToFormat, {
pronunciationGuideMarkers: GameFormats.ACFGameFormat.pronunciationGuideMarkers,
});
const expected = textToFormat.split(/\s+/g).map((word, index) => {
return [
{
text: word,
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: index === 5,
},
];
});
chai_1.expect(result).to.deep.equal(expected);
});
it("Emphasized then required", () => {
const text = "Before <em>emphasized then</em> in between <req>required then</req> done.";
const result = FormattedTextParser.splitFormattedTextIntoWords(text);
chai_1.expect(result).to.deep.equal([
[
{
text: "Before",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "emphasized",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "then",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "in",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "between",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "required",
bolded: true,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "then",
bolded: true,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "done.",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
]);
});
it("Overlap (req)", () => {
const text = "The epic <em>The <req>Iliad</req></em> is by Homer";
const result = FormattedTextParser.splitFormattedTextIntoWords(text);
chai_1.expect(result).to.deep.equal([
[
{
text: "The",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "epic",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "The",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "Iliad",
bolded: true,
emphasized: true,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "is",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "by",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "Homer",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
]);
});
it("Overlap (bold + underline)", () => {
const text = "The epic <em>The <u><b>Iliad</b></u></em> is by Homer";
const result = FormattedTextParser.splitFormattedTextIntoWords(text);
chai_1.expect(result).to.deep.equal([
[
{
text: "The",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "epic",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "The",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "Iliad",
bolded: true,
emphasized: true,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "is",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "by",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "Homer",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
]);
});
it("Punctuation after tag", () => {
const text = "My <em>book title</em>, written by me.";
const result = FormattedTextParser.splitFormattedTextIntoWords(text);
chai_1.expect(result).to.deep.equal([
[
{
text: "My",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "book",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "title",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: ",",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "written",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "by",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
[
{
text: "me.",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
],
]);
});
it("One word with formatting", () => {
const text = "Plain<req>required</req>dull<em>emphasized</em><b>bolded</b>boring<u>underlined</u>word";
const result = FormattedTextParser.splitFormattedTextIntoWords(text);
chai_1.expect(result).to.deep.equal([
[
{
text: "Plain",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "required",
bolded: true,
emphasized: false,
underlined: true,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "dull",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "emphasized",
bolded: false,
emphasized: true,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "bolded",
bolded: true,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "boring",
bolded: false,
emphasized: false,
underlined: false,
subscripted: false,
superscripted: false,
pronunciation: false,
},
{
text: "underlined",
bolded: false,
emph