Sha256: 7c962edb794b95d1a8ed9d3384f928d8edd11540123c42dc3dd0d84b8f7b13e2

Contents?: true

Size: 1008 Bytes

Versions: 3

Compression:

Stored size: 1008 Bytes

Contents

# frozen_string_literal: true

module BootstrapEmail
  module Converter
    class HeadStyle < Base
      def build(config)
        @config = config
        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', @config).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.3.1 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.3.0 lib/bootstrap-email/converters/head_style.rb
bootstrap-email-1.2.0 lib/bootstrap-email/converters/head_style.rb