JSFiddle - React, Tailwind, and code Playground

HTML

<div id="result"></div>
<div id="difference"></div>

JavaScript

var text1 = "here is example text";

var text2 = "<html><body><div>here is another <span>example</span> text</div></body></html>";

/**
 * Parse and construct an Array of PDF text tokens
 * @param {string} text 	The PDF text to be parsed
 * @return {object} 			The parsed Array of tokens
 */
function parsePDFText(text) {
  return text.split(' ');
}

/**
 * Return the minimum indexOf among all the arguments
 * @paarms {...number} index 	The indexOf
 * @return {number} 					The minimum indexOf, -1 if all arguments are -1
 */
function findMinIndex() {
  var min;
  for (var i = 0, l = arguments.length; i < l; i++) {
    // indexOf() returns -1 if not found
    if (arguments[i] === -1) {
      continue;
    }
    if (typeof min === 'undefined' || arguments[i] < min) {
      min = arguments[i];
    }
  }
  return min || -1;
}

/**
 * Parse and construct an Array of HTML tokens
 * @param {string} text 	The HTML text to be parsed
 * @return {object} 			The parsed Array of tokens
 */
function parseHTMLText(text) {
  var currentIndex = 0,
    tl = text.length,
    tokens = [],
    token, firstChar, endPos;
  while (currentIndex < tl) {
    // determine the next token type
    firstChar = text.charAt(currentIndex);
    if (firstChar === '<') {
      // a tag
      // find the position of closing tag, assume all tags are well formed
      endPos = text.indexOf('>', currentIndex + 1) + 1;
      token = {
        type: 'tag',
        content: text.slice(currentIndex, endPos), 
        valid: true
      }
      currentIndex = endPos;
    } else if (/\s/.test(firstChar)) {
      // a space
      token = {
        type: 'space', 
        content: ' ', 
        valid: true
      }
      currentIndex++;
    } else {
      // a character, possibliy part of a word
      // find the end of the word
      // assume a word is delimitered either by tags or space
      endPos = findMinIndex(text.indexOf('<', currentIndex), text.indexOf(' ', currentIndex));
      // endPos is `-1` if there...