]> source.dussan.org Git - redmine.git/commitdiff
Move methods related to wiki section to a helper file and include it in all 3 formatt...
authorMarius Balteanu <marius.balteanu@zitec.com>
Thu, 16 Jun 2022 21:39:27 +0000 (21:39 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Thu, 16 Jun 2022 21:39:27 +0000 (21:39 +0000)
git-svn-id: https://svn.redmine.org/redmine/trunk@21643 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/wiki_formatting/common_mark/formatter.rb
lib/redmine/wiki_formatting/markdown/formatter.rb
lib/redmine/wiki_formatting/section_helper.rb [new file with mode: 0644]
lib/redmine/wiki_formatting/textile/formatter.rb

index bffad6c92e2b802b4b2f3e62cdf0027066c6bede..26257aaa0d1b2cc2b74fdb4872256adf18aaf179 100644 (file)
@@ -61,7 +61,13 @@ module Redmine
         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
index eb49e02db5d9216373a03dfc84049deacb00b500..177c5623cb5a9adae0e5b9baeee9def2da97b224 100644 (file)
@@ -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
diff --git a/lib/redmine/wiki_formatting/section_helper.rb b/lib/redmine/wiki_formatting/section_helper.rb
new file mode 100644 (file)
index 0000000..a697e3f
--- /dev/null
@@ -0,0 +1,59 @@
+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
index 61cf0385da17de586f41406dd457a46cd11dd036..fd7d0b2ec2331d249cda18e8407490b983efab4f 100644 (file)
@@ -25,6 +25,7 @@ module Redmine
       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!
@@ -45,22 +46,6 @@ module Redmine
           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