Каков наилучший способ обнаружить цитируемый контент из синхронизированной цепочки сообщений Gmail? - PullRequest
0 голосов
/ 20 января 2019

Мы синхронизируем поток Gmail, который по сути является телом HTML-сообщения. Так что если есть ветка В ответных письмах я получаю цитируемое содержание

enter image description here

Мне нужно обнаружить элемент div указанного элемента и удалить их. У меня вопрос, как обнаружить цитируемый элемент?

Я подошел к методам, чтобы найти цитируемый элемент из этого.

https://github.com/nylas/nylas-mail/blob/master/packages/client-app/src/services/quoted-html-transformer.es6#L289

Здесь они берут элемент с идентификатором или классом gmail_quote и удаляют его. Но сейчас это невозможно.

Регулярное выражение не очень хорошая идея для элементов HTML. Стоит ли проверять тег <blockquote>? Если так, разве не может быть крайнего случая? Какое лучшее решение для явного обнаружения элемента?

Исходный код:

  function getQuotedContents(html, {includeInline} = {}){

    let quotedText;
    quotedText = _findGmailQuotes(html);
    return quotedText;
 } 

  function _findGmailQuotes(doc) {
  // Gmail creates both div.gmail_quote and blockquote.gmail_quote. The div
  // version marks text but does not cause indentation, but both should be
  // considered quoted text.
  return Array.from(doc.getElementsByTagName('blockquote'));
}

function removeElements(elements){
  var el, i, len;
  if (elements == null) {
    elements = [];
  }
  for (i = 0, len = elements.length; i < len; i++) {
    el = elements[i];
    try {
      if (el.parentNode) {
        el.parentNode.removeChild(el);
      }
    } catch (_error) {
      continue;
    }
  }
  return elements;
}

const getElementsWithoutQuotes = (rawHtml) => {
  const doc = _parseHTML(rawHtml);
  const quoteText = getQuotedContents(doc);
  const docWithoutQuotedElements = removeElements(quoteText);
  return _outputHTMLFor(docWithoutQuotedElements);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...