Sha256: ff6d23409550517b06bdee951e0983e8e761d70b2638c162803836785f997a2e

Contents?: true

Size: 937 Bytes

Versions: 12

Compression:

Stored size: 937 Bytes

Contents

require "juicer/dependency_resolver/dependency_resolver"

module Juicer

  # Resolves @import statements in CSS files and builds a list of all
  # files, in order.
  #
  class CssDependencyResolver < DependencyResolver
    # Regexp borrowed from similar project:
    # http://github.com/cgriego/front-end-blender/tree/master/lib/front_end_architect/blender.rb
    @@import_pattern = /^\s*@import(?:\surl\(|\s)(['"]?)([^\?'"\)\s]+)(\?(?:[^'"\)]*))?\1\)?(?:[^?;]*);?/im

    private
    def parse(line, imported_file = nil)
      return $2 if line =~ @@import_pattern

      # At first sight of actual CSS rules we abort (TODO: This does not take
      # into account the fact that rules may be commented out and that more
      # imports may follow)
      throw :done if imported_file && line =~ %r{/*}
      throw :done if line =~ /^[\.\#a-zA-Z\:]/
    end

    def extension
      ".css"
    end
  end

end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
juicer-1.0.13 lib/juicer/dependency_resolver/css_dependency_resolver.rb
psyho_juicer-1.0.11 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.12 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.11 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.10 lib/juicer/dependency_resolver/css_dependency_resolver.rb
psyho_juicer-1.0.9 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.9 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.8 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.7 lib/juicer/dependency_resolver/css_dependency_resolver.rb
psyho_juicer-1.0.7 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.6 lib/juicer/dependency_resolver/css_dependency_resolver.rb
juicer-1.0.5 lib/juicer/dependency_resolver/css_dependency_resolver.rb