class ReverseMarkdown::Converters::Text
def convert(node, options = {})
def convert(node, options = {}) if node.text.strip.empty? treat_empty(node) else treat_text(node) end end
def preserve_keychars_within_backticks(text)
def preserve_keychars_within_backticks(text) text.gsub(/`.*?`/) do |match| match.gsub('\_', '_').gsub('\*', '*') end end
def preserve_nbsp(text)
def preserve_nbsp(text) text.gsub(/\u00A0/, " ") end
def preserve_tags(text)
def preserve_tags(text) text.gsub(/[<>]/, '>' => '\>', '<' => '\<') end
def remove_border_newlines(text)
def remove_border_newlines(text) text.gsub(/\A\n+/, '').gsub(/\n+\z/, '') end
def remove_inner_newlines(text)
def remove_inner_newlines(text) text.tr("\r\n\t", ' ').squeeze(' ') end
def treat_empty(node)
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
def treat_text(node)
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