'use babel'

/* @flow */

import type { Message } from '../types'

export function visitMessage(message: Message) {
  const messageFile = message.version === 1 ? message.filePath : message.location.file
  const messageRange = message.version === 1 ? message.range : message.location.position
  atom.workspace.open(messageFile, { searchAllPanes: true }).then(function() {
    const textEditor = atom.workspace.getActiveTextEditor()
    if (textEditor && textEditor.getPath() === messageFile) {
      textEditor.setCursorBufferPosition(messageRange.start)
    }
  })
}

export function htmlToText(html: any) {
  const element = document.createElement('div')
  if (typeof html === 'string') {
    element.innerHTML = html
  } else {
    element.appendChild(html.cloneNode(true))
  }
  /* eslint-disable no-irregular-whitespace */
  // NOTE: Convert &nbsp; to regular whitespace
  return element.textContent.replace(/ /g, ' ')
  /* eslint-enable no-irregular-whitespace */
}

'use babel'

/* @flow */

import type { Message } from '../types'

const nbsp = String.fromCodePoint(160)

export function visitMessage(message: Message) {
  const messageFile = message.version === 1 ? message.filePath : message.location.file
  const messageRange = message.version === 1 ? message.range : message.location.position
  atom.workspace.open(messageFile, { searchAllPanes: true }).then(function() {
    const textEditor = atom.workspace.getActiveTextEditor()
    if (textEditor && textEditor.getPath() === messageFile) {
      textEditor.setCursorBufferPosition(messageRange.start)
    }
  })
}

export function htmlToText(html: any) {
  const element = document.createElement('div')
  if (typeof html === 'string') {
    element.innerHTML = html
  } else {
    element.appendChild(html.cloneNode(true))
  }
  // NOTE: Convert &nbsp; to regular whitespace
  return element.textContent.replace(new RegExp(nbsp, 'g'), ' ')
}

Use a non-hacky way to replace nbsp
:art: Use a non-hacky way to replace nbsp
