Sha256: 3f190489fbc901a50f94a7ef7a50be730ef10b1a351f035e2aac7587a2352276

Contents?: true

Size: 966 Bytes

Versions: 3

Compression:

Stored size: 966 Bytes

Contents

# frozen_string_literal: true

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
          <style type="text/css">
            #{purged_css_from_head}
          </style>
        HTML
      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

3 entries across 3 versions & 1 rubygems

Version Path
bootstrap-email-1.1.7 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.1.6 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.1.5 lib/bootstrap-email/converters/head_style.rb