Sha256: 2d07a6f1e5304c1bfad861db2a47834d1b8842234b6e0102c7deb640c1034504

Contents?: true

Size: 901 Bytes

Versions: 2

Compression:

Stored size: 901 Bytes

Contents

module Roadie
  class Selector
    def initialize(selector)
      @selector = selector.to_s.strip
    end

    def specificity
      @specificity ||= CssParser.calculate_specificity selector
    end

    def inlinable?
      !(pseudo_element? || at_rule? || pseudo_function?)
    end

    def to_s
      selector
    end

    def to_str() to_s end
    def inspect() selector.inspect end

    def ==(other)
      if other.is_a?(self.class)
        other.selector == selector
      else
        super
      end
    end

    protected
      attr_reader :selector

    private
      BAD_PSEUDO_FUNCTIONS = %w[:active :focus :hover :link :target :visited].freeze

      def pseudo_element?
        selector.include? '::'
      end

      def at_rule?
        selector[0, 1] == '@'
      end

      def pseudo_function?
        BAD_PSEUDO_FUNCTIONS.any? { |bad| selector.include?(bad) }
      end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
roadie-2.4.1 lib/roadie/selector.rb
roadie-2.4.0 lib/roadie/selector.rb