class ReverseMarkdown::Converters::Text

Public Instance Methods

convert(node, options = {}) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 4
def convert(node, options = {})
  if node.text.strip.empty?
    treat_empty(node)
  else
    treat_text(node)
  end
end

Private Instance Methods

preserve_keychars_within_backticks(text) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 54
def preserve_keychars_within_backticks(text)
  text.gsub(/`.*?`/) do |match|
    match.gsub('\_', '_').gsub('\*', '*')
  end
end
preserve_nbsp(text) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 38
def preserve_nbsp(text)
  text.gsub(/\u00A0/, " ")
end
preserve_tags(text) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 42
def preserve_tags(text)
  text.gsub(/[<>]/, '>' => '\>', '<' => '\<')
end
remove_border_newlines(text) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 46
def remove_border_newlines(text)
  text.gsub(/\A\n+/, '').gsub(/\n+\z/, '')
end
remove_inner_newlines(text) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 50
def remove_inner_newlines(text)
  text.tr("\r\n\t", ' ').squeeze(' ')
end
treat_empty(node) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 14
def treat_empty(node)
  parent = node.parent.name.to_sym
  if [:ol, :ul].include?(parent)  # Otherwise the identation is broken
    ''
  elsif node.text == ' '          # Regular whitespace text node
    ' '
  else
    ''
  end
end
treat_text(node) click to toggle source
# File lib/reverse_markdown/converters/text.rb, line 25
def treat_text(node)
  text = node.text
  text = preserve_nbsp(text)
  text = remove_border_newlines(text)
  text = remove_inner_newlines(text)
  text = escape_keychars(text)

  text = preserve_keychars_within_backticks(text)
  text = preserve_tags(text)

  text
end