Class: ReverseMarkdown::Cleaner
- Inherits:
-
Object
- Object
- ReverseMarkdown::Cleaner
- Defined in:
- lib/reverse_markdown/cleaner.rb
Instance Method Summary collapse
- #clean_punctuation_characters(string) ⇒ Object
-
#clean_tag_borders(string) ⇒ Object
Find non-asterisk content that is enclosed by two or more asterisks.
- #force_encoding(string) ⇒ Object
- #remove_inner_whitespaces(string) ⇒ Object
- #remove_leading_newlines(string) ⇒ Object
- #remove_newlines(string) ⇒ Object
- #tidy(string) ⇒ Object
Instance Method Details
#clean_punctuation_characters(string) ⇒ Object
58 59 60 |
# File 'lib/reverse_markdown/cleaner.rb', line 58 def clean_punctuation_characters(string) string.gsub(/(\*\*|~~|__)\s([\.!\?'"])/, "\\1".strip + "\\2") end |
#clean_tag_borders(string) ⇒ Object
Find non-asterisk content that is enclosed by two or more asterisks. Ensure that only one whitespace occurs in the border area. Same for underscores and brackets.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/reverse_markdown/cleaner.rb', line 32 def clean_tag_borders(string) result = string.gsub(/\s?\*{2,}.*?\*{2,}\s?/) do |match| preserve_border_whitespaces(match, default_border: ReverseMarkdown.config.tag_border) do match.strip.sub('** ', '**').sub(' **', '**') end end result = result.gsub(/\s?\_{2,}.*?\_{2,}\s?/) do |match| preserve_border_whitespaces(match, default_border: ReverseMarkdown.config.tag_border) do match.strip.sub('__ ', '__').sub(' __', '__') end end result = result.gsub(/\s?~{2,}.*?~{2,}\s?/) do |match| preserve_border_whitespaces(match, default_border: ReverseMarkdown.config.tag_border) do match.strip.sub('~~ ', '~~').sub(' ~~', '~~') end end result.gsub(/\s?\[.*?\]\s?/) do |match| preserve_border_whitespaces(match) do match.strip.sub('[ ', '[').sub(' ]', ']') end end end |
#force_encoding(string) ⇒ Object
62 63 64 65 |
# File 'lib/reverse_markdown/cleaner.rb', line 62 def force_encoding(string) ReverseMarkdown.config.force_encoding or return string string.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '') end |
#remove_inner_whitespaces(string) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/reverse_markdown/cleaner.rb', line 20 def remove_inner_whitespaces(string) string.each_line.inject("") do |memo, line| memo + preserve_border_whitespaces(line) do line.strip.gsub(/[ \t]{2,}/, ' ') end end end |
#remove_leading_newlines(string) ⇒ Object
16 17 18 |
# File 'lib/reverse_markdown/cleaner.rb', line 16 def remove_leading_newlines(string) string.gsub(/\A\n+/, '') end |
#remove_newlines(string) ⇒ Object
12 13 14 |
# File 'lib/reverse_markdown/cleaner.rb', line 12 def remove_newlines(string) string.gsub(/\n{3,}/, "\n\n") end |
#tidy(string) ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/reverse_markdown/cleaner.rb', line 4 def tidy(string) result = remove_inner_whitespaces(string) result = remove_newlines(result) result = remove_leading_newlines(result) result = clean_tag_borders(result) clean_punctuation_characters(result) end |