Sha256: 2412607f922154a2066e4781ff76513f87057d66649e84a80cffbb603f259089

Contents?: true

Size: 985 Bytes

Versions: 17

Compression:

Stored size: 985 Bytes

Contents

# encoding: utf-8
module Middleman
  module Presentation
    # Extract css classes from html files
    class CssClassExtracter
      # Extracted css class
      class CssClass
        attr_reader :name, :files

        def initialize(name:, files: [])
          @name  = name
          @files = files.to_a
        end
      end

      def extract(paths, ignore: [])
        classes = build(paths)
        classes.delete_if { |klass| ignore.include? klass }.sort_by { |klass, _| klass }.map { |klass, files| CssClass.new(name: klass, files: files) }
      end

      private

      def build(paths)
        paths.each_with_object({}) do |f, a|
          page = Nokogiri::HTML(open(f))

          page.traverse do |n|
            if n['class']
              klasses = n['class'].split(/ /)

              klasses.each do |k|
                a[k] ||= Set.new
                a[k] << File.basename(f)
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
middleman-presentation-core-0.17.7 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.17.6 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.17.5 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.17.2 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.17.1 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.17.0 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.16.3 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.16.2 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.16.0 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.16.0.rc2 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.16.0.rc1 lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.16.0.beta lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-core-0.16.0.alpha lib/middleman-presentation-core/css_class_extracter.rb
middleman-presentation-0.15.8 lib/middleman-presentation/css_class_extracter.rb
middleman-presentation-0.15.7 lib/middleman-presentation/css_class_extracter.rb
middleman-presentation-0.15.6 lib/middleman-presentation/css_class_extracter.rb
middleman-presentation-0.15.5 lib/middleman-presentation/css_class_extracter.rb