Sha256: 8e98e755aba733a6ba2bc575f8cd652528156cb8cdb781860d310affed8b6a86

Contents?: true

Size: 1.98 KB

Versions: 3

Compression:

Stored size: 1.98 KB

Contents

module Gluttonberg
  module Content
    # This mixin provides helper methods which are used to clean html
    module CleanHtml
      extend ActiveSupport::Concern
      def self.setup
        ::ActiveRecord::Base.send :include, Gluttonberg::Content::CleanHtml
      end

      module ClassMethods
        def clean_html(cols)
          class_eval <<-EOV
            include InstanceMethods
            before_validation :clean_all_html_content
            cattr_accessor :html_columns_list
            self.html_columns_list = cols

          EOV
        end

        def clean_tags(str)
          if !str.blank? && str.instance_of?(String)
            str = self.removeStyle(str)
            str = self.removeMetaTag(str)
            str = removeEmptyTag(str)
            str = removeDuplicatedBreaks(str)
          end
          str
        end

        def removeEmptyTag(str)
          removeList = [/<blockquote>[\s]*<\/blockquote>/, /<p>[\s]*<\/p>/,/<div>[\s]*<\/div>/,/<span>[\s]*<\/span>/, /<h1>[\s]*<\/h1>/, /<h2>[\s]*<\/h2>/, /<h3>[\s]*<\/h3>/, /<h4>[\s]*<\/h4>/, /<h5>[\s]*<\/h5>/, /<h6>[\s]*<\/h6>/]
          removeList.each do |r|
            str = str.gsub(r,"")
          end

          str
        end

        def removeDuplicatedBreaks(str)
          str.gsub(/((<br[\s]*\/>[\s]*)|(<br[\s]*>[\s]*))+/,'<br/>')
        end

        def removeStyle(str)
          removeList = [/style=\"[\sA-Za-z0-9.,-;:]*\"/]
          removeList.each do |r|
            str = str.gsub(r,"")
          end

          str
        end

        def removeMetaTag(str)
           removeList = [ "<meta charset=\"utf-8\">", "</meta>" ]
           removeList.each do |r|
            str = str.gsub(r,"")
          end

          str
        end
      end

      def clean_all_html_content
        unless self.class.html_columns_list.blank?
          self.class.html_columns_list.each do |field|
            write_attribute(field , self.class.clean_tags(read_attribute(field)) )
          end
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gluttonberg-core-3.0.2 lib/gluttonberg/content/clean_html.rb
gluttonberg-core-3.0.1 lib/gluttonberg/content/clean_html.rb
gluttonberg-core-3.0.0 lib/gluttonberg/content/clean_html.rb