TaskList::Filter
], PIPELINE_CONFIG
- class Formatter < Redmine::WikiFormatting::Markdown::Formatter
+ class Formatter
+ include Redmine::WikiFormatting::SectionHelper
+
+ def initialize(text)
+ @text = text
+ end
+
def to_html(*args)
result = MarkdownPipeline.call @text
result[:output].to_s
class Formatter
include Redmine::WikiFormatting::LinksHelper
+ include Redmine::WikiFormatting::SectionHelper
alias :inline_restore_redmine_links :restore_redmine_links
def initialize(text)
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
--- /dev/null
+module Redmine
+ module WikiFormatting
+ module SectionHelper
+
+ 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
+ end
+ end
+end
\ No newline at end of file
class Formatter < RedCloth3
include ActionView::Helpers::TagHelper
include Redmine::WikiFormatting::LinksHelper
+ include Redmine::WikiFormatting::SectionHelper
alias :inline_auto_link :auto_link!
alias :inline_auto_mailto :auto_mailto!
super(*RULES).to_s
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)
@pre_list = []
text = self.dup