summaryrefslogtreecommitdiffstats
path: root/lib/redmine/wiki_formatting/markdown/formatter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/redmine/wiki_formatting/markdown/formatter.rb')
-rw-r--r--lib/redmine/wiki_formatting/markdown/formatter.rb54
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