diff options
Diffstat (limited to 'lib/redmine/wiki_formatting/markdown/formatter.rb')
-rw-r--r-- | lib/redmine/wiki_formatting/markdown/formatter.rb | 54 |
1 files changed, 1 insertions, 53 deletions
diff --git a/lib/redmine/wiki_formatting/markdown/formatter.rb b/lib/redmine/wiki_formatting/markdown/formatter.rb index eb49e02db..177c5623c 100644 --- a/lib/redmine/wiki_formatting/markdown/formatter.rb +++ b/lib/redmine/wiki_formatting/markdown/formatter.rb @@ -57,6 +57,7 @@ module Redmine class Formatter include Redmine::WikiFormatting::LinksHelper + include Redmine::WikiFormatting::SectionHelper alias :inline_restore_redmine_links :restore_redmine_links def initialize(text) @@ -69,59 +70,6 @@ module Redmine html end - def get_section(index) - section = extract_sections(index)[1] - hash = Digest::MD5.hexdigest(section) - return section, hash - end - - def update_section(index, update, hash=nil) - t = extract_sections(index) - if hash.present? && hash != Digest::MD5.hexdigest(t[1]) - raise Redmine::WikiFormatting::StaleSectionError - end - - t[1] = update unless t[1].blank? - t.reject(&:blank?).join "\n\n" - end - - def extract_sections(index) - sections = [+'', +'', +''] - offset = 0 - i = 0 - l = 1 - inside_pre = false - @text.split(/(^(?:\S+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part| - level = nil - if part =~ /\A(~{3,}|`{3,})(\s*\S+)?\s*$/ - if !inside_pre - inside_pre = true - elsif !$2 - inside_pre = false - end - elsif inside_pre - # nop - elsif part =~ /\A(#+).+/ - level = $1.size - elsif part =~ /\A.+\r?\n\r?(\=+|\-+)\s*$/ - level = $1.include?('=') ? 1 : 2 - end - if level - i += 1 - if offset == 0 && i == index - # entering the requested section - offset = 1 - l = level - elsif offset == 1 && i > index && level <= l - # leaving the requested section - offset = 2 - end - end - sections[offset] << part - end - sections.map(&:strip) - end - private def formatter |