Sha256: 3726a7083ae9c2251746927860e1043465c1d2539aa73516b482c3ed28f476fd

Contents?: true

Size: 973 Bytes

Versions: 11

Compression:

Stored size: 973 Bytes

Contents

module BootstrapEmail
  module Converter
    class HeadStyle < Base
      def build
        doc.at_css('head').add_child(bootstrap_email_head)
      end

      private

      def bootstrap_email_head
        html_string = <<-INLINE
          <style type="text/css">
            #{purged_css_from_head}
          </style>
        INLINE
        html_string
      end

      def purged_css_from_head
        default, custom = BootstrapEmail::SassCache.compile('bootstrap-head').split('/*! allow_purge_after */')
        # get each CSS declaration
        custom.scan(/\w*\.[\w\-]*[\s\S\n]+?(?=})}{1}/).each do |group|
          # get the first class for each comma separated CSS declaration
          exist = group.scan(/(\.[\w\-]*).*?((,+?)|{+?)/).map(&:first).uniq.any? do |selector|
            !doc.at_css(selector).nil?
          end
          custom.sub!(group, '') unless exist
        end
        (default + custom).gsub(/\n\s*\n+/, "\n")
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
bootstrap-email-1.1.4 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.1.3 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.1.2 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.1.1 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.1.0 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.0.2 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.0.1 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.0.0 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.0.0.alpha4 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.0.0.alpha3.1 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.0.0.alpha3 lib/bootstrap-email/converters/head_style.rb