Project

General

Profile

« Previous | Next » 

Revision 24399

Added by Marius BĂLTEANU 6 days ago

Optimize Loofah performance by passing the HTML only once (#42737).

View differences:

trunk/lib/redmine/wiki_formatting/common_mark/formatter.rb
73 73
          html = MarkdownFilter.new(@text, PIPELINE_CONFIG).call
74 74
          fragment = Redmine::WikiFormatting::HtmlParser.parse(html)
75 75
          SANITIZER.call(fragment)
76
          SCRUBBERS.each do |scrubber|
77
            fragment.scrub!(scrubber)
76
          scrubber = Loofah::Scrubber.new do |node|
77
            SCRUBBERS.each do |s|
78
              s.scrub(node)
79
              break if node.parent.nil?
80
            end
78 81
          end
82
          fragment.scrub!(scrubber)
79 83
          fragment.to_s
80 84
        end
81 85
      end
trunk/lib/redmine/wiki_formatting/html_sanitizer.rb
27 27
      def self.call(html)
28 28
        fragment = HtmlParser.parse(html)
29 29
        SANITIZER.call(fragment)
30
        SCRUBBERS.each do |scrubber|
31
          fragment.scrub!(scrubber)
30
        scrubber = Loofah::Scrubber.new do |node|
31
          SCRUBBERS.each do |s|
32
            s.scrub(node)
33
            break if node.parent.nil?
34
          end
32 35
        end
36
        fragment.scrub!(scrubber)
33 37
        fragment.to_s
34 38
      end
35 39
    end
trunk/lib/redmine/wiki_formatting/textile/formatter.rb
39 39
        def to_html(*rules)
40 40
          html = @filter.to_html(rules)
41 41
          fragment = Loofah.html5_fragment(html)
42
          SCRUBBERS.each do |scrubber|
43
            fragment.scrub!(scrubber)
42
          scrubber = Loofah::Scrubber.new do |node|
43
            SCRUBBERS.each do |s|
44
              s.scrub(node)
45
              break if node.parent.nil?
46
            end
44 47
          end
48
          fragment.scrub!(scrubber)
45 49
          fragment.to_s
46 50
        end
47 51
      end

Also available in: Unified diff