jekyll-assets 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY.md +6 -0
- data/README.md +9 -2
- data/lib/jekyll/assets_plugin/asset_path.rb +50 -0
- data/lib/jekyll/assets_plugin/configuration.rb +5 -2
- data/lib/jekyll/assets_plugin/patches/asset_patch.rb +61 -2
- data/lib/jekyll/assets_plugin/patches/context_patch.rb +4 -4
- data/lib/jekyll/assets_plugin/patches/index_patch.rb +1 -1
- data/lib/jekyll/assets_plugin/patches/site_patch.rb +4 -24
- data/lib/jekyll/assets_plugin/renderer.rb +12 -0
- data/lib/jekyll/assets_plugin/version.rb +1 -1
- data/spec/fixtures/_assets/vapor.css.scss +1 -0
- data/spec/fixtures/_assets/vapor.js +1 -0
- data/spec/fixtures/_assets/wowscript.js +0 -0
- data/spec/fixtures/_assets/wowstyle.css +0 -0
- data/spec/lib/jekyll/assets_plugin/configuration_spec.rb +5 -0
- data/spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb +0 -7
- data/spec/lib/jekyll/assets_plugin/renderer_spec.rb +56 -0
- metadata +10 -6
- data/lib/jekyll/assets_plugin/asset_file.rb +0 -86
- data/spec/lib/jekyll/assets_plugin/asset_file_spec.rb +0 -34
    
        data/HISTORY.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -42,7 +42,7 @@ information about amazing features it gives you. | |
| 42 42 | 
             
            [extjs]:        https://github.com/sstephenson/execjs#readme
         | 
| 43 43 |  | 
| 44 44 | 
             
            For a quick start check out [jekyll-assets introduction][jekyll-assets-intro]
         | 
| 45 | 
            -
            that shows how to use it step by step. Also you might want to take a look on | 
| 45 | 
            +
            that shows how to use it step by step. Also you might want to take a look on
         | 
| 46 46 | 
             
            [my blog sources][ixti-blog-src] as a real-world example as well.
         | 
| 47 47 |  | 
| 48 48 | 
             
            [jekyll-assets-intro]:  http://ixti.net/software/2012/12/30/unleash-mr-hyde-introduction-of-jekyll-assets.html
         | 
| @@ -147,7 +147,8 @@ difference is only in comments styles used with _directives_. | |
| 147 147 | 
             
            See detailes information about these _directives_ below.
         | 
| 148 148 |  | 
| 149 149 | 
             
            You might also want your stylesheets and javascripts to be minified. In this
         | 
| 150 | 
            -
            case just install `uglifier` gem and  | 
| 150 | 
            +
            case just install the `uglifier` gem and any other gems you will be using, e.g.
         | 
| 151 | 
            +
            `sass`, `coffee-script`. Then add following lines into your `config.yml`:
         | 
| 151 152 |  | 
| 152 153 | 
             
            ``` yaml
         | 
| 153 154 | 
             
            assets:
         | 
| @@ -484,6 +485,12 @@ assets: | |
| 484 485 | 
             
              # stylesheets are gzipped by default.
         | 
| 485 486 | 
             
              #
         | 
| 486 487 | 
             
              gzip: [ text/css, application/javascript ]
         | 
| 488 | 
            +
              #
         | 
| 489 | 
            +
              # Does not concatenates files requested by `javascript` and `stylesheet`
         | 
| 490 | 
            +
              # helpers. Instead outputs multiple files in order they are required.
         | 
| 491 | 
            +
              # Default: false
         | 
| 492 | 
            +
              #
         | 
| 493 | 
            +
              debug: false
         | 
| 487 494 | 
             
            ```
         | 
| 488 495 |  | 
| 489 496 |  | 
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            module Jekyll
         | 
| 2 | 
            +
              module AssetsPlugin
         | 
| 3 | 
            +
                class AssetPath
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                  attr_reader :asset
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def initialize site, pathname, *args
         | 
| 9 | 
            +
                    pathname, _, @anchor = pathname.rpartition "#" if pathname["#"]
         | 
| 10 | 
            +
                    pathname, _, @query  = pathname.rpartition "?" if pathname["?"]
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    @asset  = site.assets[pathname, *args]
         | 
| 13 | 
            +
                    @site   = site
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    site.bundle_asset! asset
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def cachebust
         | 
| 20 | 
            +
                    @cachebust ||= @site.assets_config.cachebust
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
             | 
| 24 | 
            +
                  def path
         | 
| 25 | 
            +
                    :hard == cachebust && asset.digest_path || asset.logical_path
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
             | 
| 29 | 
            +
                  def query
         | 
| 30 | 
            +
                    query = []
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    query << "cb=#{asset.digest}" if :soft == cachebust
         | 
| 33 | 
            +
                    query << @query               if @query
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    "?#{query.join '&'}" unless query.empty?
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
             | 
| 39 | 
            +
                  def anchor
         | 
| 40 | 
            +
                    "##{@anchor}" if @anchor
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def to_s
         | 
| 45 | 
            +
                    "#{@site.assets_config.baseurl}/#{path}#{query}#{anchor}"
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
            end
         | 
| @@ -12,7 +12,8 @@ module Jekyll | |
| 12 12 | 
             
                    :css_compressor => nil,
         | 
| 13 13 | 
             
                    :cachebust      => :hard,
         | 
| 14 14 | 
             
                    :cache          => false,
         | 
| 15 | 
            -
                    :gzip           => %w{ text/css application/javascript }
         | 
| 15 | 
            +
                    :gzip           => %w{ text/css application/javascript },
         | 
| 16 | 
            +
                    :debug          => false
         | 
| 16 17 | 
             
                  }.freeze
         | 
| 17 18 |  | 
| 18 19 |  | 
| @@ -49,7 +50,9 @@ module Jekyll | |
| 49 50 |  | 
| 50 51 |  | 
| 51 52 | 
             
                  def cachebust
         | 
| 52 | 
            -
                     | 
| 53 | 
            +
                    return :none if none?(@data.cachebust)
         | 
| 54 | 
            +
                    return @data.cachebust.to_sym if @data.cachebust.to_s =~ /^(soft|hard)$/
         | 
| 55 | 
            +
                    raise "Unknown cachebust strategy: #{@data.cachebust}"
         | 
| 53 56 | 
             
                  end
         | 
| 54 57 |  | 
| 55 58 |  | 
| @@ -7,8 +7,67 @@ module Jekyll | |
| 7 7 | 
             
                module Patches
         | 
| 8 8 | 
             
                  module AssetPatch
         | 
| 9 9 |  | 
| 10 | 
            -
                    def  | 
| 11 | 
            -
                       | 
| 10 | 
            +
                    def self.included base
         | 
| 11 | 
            +
                      base.send :extend, ClassMethods
         | 
| 12 | 
            +
                      base.send :include, InstanceMethods
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
             | 
| 16 | 
            +
                    module ClassMethods
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                      def mtimes
         | 
| 19 | 
            +
                        @mtimes ||= Hash.new
         | 
| 20 | 
            +
                      end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
             | 
| 25 | 
            +
                    module InstanceMethods
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                      attr_reader :site
         | 
| 28 | 
            +
             | 
| 29 | 
            +
             | 
| 30 | 
            +
                      def jekyll_assets
         | 
| 31 | 
            +
                        []
         | 
| 32 | 
            +
                      end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
             | 
| 35 | 
            +
                      def destination dest
         | 
| 36 | 
            +
                        File.join dest, site.assets_config.dirname, filename
         | 
| 37 | 
            +
                      end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
             | 
| 40 | 
            +
                      def filename
         | 
| 41 | 
            +
                        case cachebust = site.assets_config.cachebust
         | 
| 42 | 
            +
                        when :none, :soft then logical_path
         | 
| 43 | 
            +
                        when :hard        then digest_path
         | 
| 44 | 
            +
                        else raise "Unknown cachebust strategy: #{cachebust.inspect}"
         | 
| 45 | 
            +
                        end
         | 
| 46 | 
            +
                      end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
             | 
| 49 | 
            +
                      def modified?
         | 
| 50 | 
            +
                        self.class.mtimes[pathname.to_s] != mtime.to_i
         | 
| 51 | 
            +
                      end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
             | 
| 54 | 
            +
                      def write dest
         | 
| 55 | 
            +
                        dest_path = destination dest
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                        return false if File.exist?(dest_path) and !modified?
         | 
| 58 | 
            +
                        self.class.mtimes[pathname.to_s] = mtime.to_i
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                        write_to dest_path
         | 
| 61 | 
            +
                        write_to "#{dest_path}.gz" if gzip?
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                        true
         | 
| 64 | 
            +
                      end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
             | 
| 67 | 
            +
                      def gzip?
         | 
| 68 | 
            +
                        site.assets_config.gzip.include? content_type
         | 
| 69 | 
            +
                      end
         | 
| 70 | 
            +
             | 
| 12 71 | 
             
                    end
         | 
| 13 72 |  | 
| 14 73 | 
             
                  end
         | 
| @@ -17,11 +17,11 @@ module Jekyll | |
| 17 17 | 
             
                    end
         | 
| 18 18 |  | 
| 19 19 |  | 
| 20 | 
            -
                    def asset_path  | 
| 21 | 
            -
                      jekyll_assets << resolve( | 
| 22 | 
            -
                      site.asset_path  | 
| 20 | 
            +
                    def asset_path pathname, *args
         | 
| 21 | 
            +
                      jekyll_assets << resolve(pathname.to_s[/^[^#?]+/]).to_s
         | 
| 22 | 
            +
                      site.asset_path pathname, *args
         | 
| 23 23 | 
             
                    rescue Sprockets::FileNotFound
         | 
| 24 | 
            -
                      raise Environment::AssetNotFound,  | 
| 24 | 
            +
                      raise Environment::AssetNotFound, pathname
         | 
| 25 25 | 
             
                    end
         | 
| 26 26 |  | 
| 27 27 | 
             
                  end
         | 
| @@ -17,7 +17,7 @@ module Jekyll | |
| 17 17 |  | 
| 18 18 | 
             
                    def __wrap_find_asset path, options = {}
         | 
| 19 19 | 
             
                      __orig_find_asset(path, options).tap do |asset|
         | 
| 20 | 
            -
                        @environment.site | 
| 20 | 
            +
                        asset.instance_variable_set :@site, @environment.site if asset
         | 
| 21 21 | 
             
                      end
         | 
| 22 22 | 
             
                    end
         | 
| 23 23 |  | 
| @@ -5,7 +5,7 @@ require "jekyll" | |
| 5 5 | 
             
            # internal
         | 
| 6 6 | 
             
            require "jekyll/assets_plugin/configuration"
         | 
| 7 7 | 
             
            require "jekyll/assets_plugin/environment"
         | 
| 8 | 
            -
            require "jekyll/assets_plugin/ | 
| 8 | 
            +
            require "jekyll/assets_plugin/asset_path"
         | 
| 9 9 |  | 
| 10 10 |  | 
| 11 11 | 
             
            module Jekyll
         | 
| @@ -36,35 +36,15 @@ module Jekyll | |
| 36 36 | 
             
                    end
         | 
| 37 37 |  | 
| 38 38 |  | 
| 39 | 
            -
                    def asset_path  | 
| 40 | 
            -
                       | 
| 41 | 
            -
                      pathname, _, query  = pathname.rpartition "?" if pathname["?"]
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                      asset     = assets[pathname, *args]
         | 
| 44 | 
            -
                      baseurl   = "#{assets_config.baseurl}/"
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                      case cachebust = assets_config.cachebust
         | 
| 47 | 
            -
                      when :none then baseurl << asset.logical_path
         | 
| 48 | 
            -
                      when :soft then baseurl << asset.logical_path << "?cb=#{asset.digest}"
         | 
| 49 | 
            -
                      when :hard then baseurl << asset.digest_path
         | 
| 50 | 
            -
                      else raise "Unknown cachebust strategy: #{cachebust.inspect}"
         | 
| 51 | 
            -
                      end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                      baseurl << (:soft == cachebust ? "&" : "?") << query if query
         | 
| 54 | 
            -
                      baseurl << "#" << anchor if anchor
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                      baseurl
         | 
| 39 | 
            +
                    def asset_path *args
         | 
| 40 | 
            +
                      AssetPath.new(self, *args).to_s
         | 
| 57 41 | 
             
                    end
         | 
| 58 42 |  | 
| 59 43 |  | 
| 60 44 | 
             
                    def bundle_asset! asset
         | 
| 61 45 | 
             
                      if not asset_files.include? asset
         | 
| 62 | 
            -
                         | 
| 63 | 
            -
             | 
| 46 | 
            +
                        asset_files << asset
         | 
| 64 47 | 
             
                        asset.jekyll_assets.each{ |path| bundle_asset! assets[path] }
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                        asset_files   << file
         | 
| 67 | 
            -
                        static_files  << file
         | 
| 68 48 | 
             
                      end
         | 
| 69 49 | 
             
                    end
         | 
| 70 50 |  | 
| @@ -25,6 +25,12 @@ module Jekyll | |
| 25 25 | 
             
                  def render_javascript
         | 
| 26 26 | 
             
                    @path << ".js" if File.extname(@path).empty?
         | 
| 27 27 |  | 
| 28 | 
            +
                    if @site.assets_config.debug
         | 
| 29 | 
            +
                      return @site.assets[@path].to_a.map{ |a|
         | 
| 30 | 
            +
                        JAVASCRIPT % @site.asset_path(a.logical_path, :bundle => false)
         | 
| 31 | 
            +
                      }.join("\n")
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 28 34 | 
             
                    JAVASCRIPT % render_asset_path
         | 
| 29 35 | 
             
                  end
         | 
| 30 36 |  | 
| @@ -32,6 +38,12 @@ module Jekyll | |
| 32 38 | 
             
                  def render_stylesheet
         | 
| 33 39 | 
             
                    @path << ".css" if File.extname(@path).empty?
         | 
| 34 40 |  | 
| 41 | 
            +
                    if @site.assets_config.debug
         | 
| 42 | 
            +
                      return @site.assets[@path].to_a.map{ |a|
         | 
| 43 | 
            +
                        STYLESHEET % @site.asset_path(a.logical_path, :bundle => false)
         | 
| 44 | 
            +
                      }.join("\n")
         | 
| 45 | 
            +
                    end
         | 
| 46 | 
            +
             | 
| 35 47 | 
             
                    STYLESHEET % render_asset_path
         | 
| 36 48 | 
             
                  end
         | 
| 37 49 |  | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| @@ -39,13 +39,6 @@ module Jekyll::AssetsPlugin | |
| 39 39 | 
             
                          noise_img_re = %r{url\(/assets/noise-[a-f0-9]{32}\.png\)}
         | 
| 40 40 | 
             
                          site.assets["app.css"].to_s.should match(noise_img_re)
         | 
| 41 41 | 
             
                        end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                        it "should be appended to the static_files list" do
         | 
| 44 | 
            -
                          asset = site.assets["app.css"] # make sure main asset was compiled
         | 
| 45 | 
            -
                          asset = site.assets["noise.png"]
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                          site.static_files.include?(asset).should be_true
         | 
| 48 | 
            -
                        end
         | 
| 49 42 | 
             
                      end
         | 
| 50 43 | 
             
                    end
         | 
| 51 44 | 
             
                  end
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            # stdlib
         | 
| 2 | 
            +
            require "ostruct"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
             | 
| 5 | 
            +
            require "spec_helper"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            module Jekyll::AssetsPlugin
         | 
| 9 | 
            +
              describe Renderer do
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                let(:site) do
         | 
| 12 | 
            +
                  Jekyll::Site.new Jekyll.configuration({
         | 
| 13 | 
            +
                    "source"      => fixtures_path.to_s,
         | 
| 14 | 
            +
                    "destination" => @dest.to_s,
         | 
| 15 | 
            +
                    "assets"      => assets_config
         | 
| 16 | 
            +
                  })
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
             | 
| 20 | 
            +
                let(:renderer) do
         | 
| 21 | 
            +
                  context = OpenStruct.new(:registers => { :site => site })
         | 
| 22 | 
            +
                  Renderer.new context, "app"
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
             | 
| 26 | 
            +
                describe "#render_javascript" do
         | 
| 27 | 
            +
                  subject { renderer.render_javascript }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  context "when debug mode enabled" do
         | 
| 30 | 
            +
                    let(:assets_config){ Hash[:debug, true] }
         | 
| 31 | 
            +
                    it { should match %r{^(\s*<script src="[^"]+"></script>\s*){3}$} }
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  context "when debug mode disabled" do
         | 
| 35 | 
            +
                    let(:assets_config){ Hash[:debug, false] }
         | 
| 36 | 
            +
                    it { should match %r{^(\s*<script src="[^"]+"></script>\s*){1}$} }
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
             | 
| 41 | 
            +
                describe "#render_stylesheet" do
         | 
| 42 | 
            +
                  subject { renderer.render_stylesheet }
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  context "when debug mode enabled" do
         | 
| 45 | 
            +
                    let(:assets_config){ Hash[:debug, true] }
         | 
| 46 | 
            +
                    it { should match %r{^(\s*<link rel="stylesheet" href="[^"]+">\s*){3}$} }
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  context "when debug mode disabled" do
         | 
| 50 | 
            +
                    let(:assets_config){ Hash[:debug, false] }
         | 
| 51 | 
            +
                    it { should match %r{^(\s*<link rel="stylesheet" href="[^"]+">\s*){1}$} }
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jekyll-assets
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.7.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013- | 
| 12 | 
            +
            date: 2013-08-11 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: jekyll
         | 
| @@ -180,7 +180,7 @@ files: | |
| 180 180 | 
             
            - lib/jekyll-assets/compass.rb
         | 
| 181 181 | 
             
            - lib/jekyll-assets/neat.rb
         | 
| 182 182 | 
             
            - lib/jekyll/assets_plugin.rb
         | 
| 183 | 
            -
            - lib/jekyll/assets_plugin/ | 
| 183 | 
            +
            - lib/jekyll/assets_plugin/asset_path.rb
         | 
| 184 184 | 
             
            - lib/jekyll/assets_plugin/configuration.rb
         | 
| 185 185 | 
             
            - lib/jekyll/assets_plugin/environment.rb
         | 
| 186 186 | 
             
            - lib/jekyll/assets_plugin/filters.rb
         | 
| @@ -208,6 +208,8 @@ files: | |
| 208 208 | 
             
            - spec/fixtures/_assets/vendor/bourbon.css.sass
         | 
| 209 209 | 
             
            - spec/fixtures/_assets/vendor/compass.css.sass
         | 
| 210 210 | 
             
            - spec/fixtures/_assets/vendor/neat.css.sass
         | 
| 211 | 
            +
            - spec/fixtures/_assets/wowscript.js
         | 
| 212 | 
            +
            - spec/fixtures/_assets/wowstyle.css
         | 
| 211 213 | 
             
            - spec/fixtures/_config.yml
         | 
| 212 214 | 
             
            - spec/fixtures/_layouts/default.html
         | 
| 213 215 | 
             
            - spec/fixtures/_posts/2012-10-19-hello-world.md
         | 
| @@ -215,11 +217,11 @@ files: | |
| 215 217 | 
             
            - spec/lib/jekyll-assets/bourbon_spec.rb
         | 
| 216 218 | 
             
            - spec/lib/jekyll-assets/compass_spec.rb
         | 
| 217 219 | 
             
            - spec/lib/jekyll-assets/neat_spec.rb
         | 
| 218 | 
            -
            - spec/lib/jekyll/assets_plugin/asset_file_spec.rb
         | 
| 219 220 | 
             
            - spec/lib/jekyll/assets_plugin/configuration_spec.rb
         | 
| 220 221 | 
             
            - spec/lib/jekyll/assets_plugin/environment_spec.rb
         | 
| 221 222 | 
             
            - spec/lib/jekyll/assets_plugin/filters_spec.rb
         | 
| 222 223 | 
             
            - spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb
         | 
| 224 | 
            +
            - spec/lib/jekyll/assets_plugin/renderer_spec.rb
         | 
| 223 225 | 
             
            - spec/lib/jekyll/assets_plugin/tag_spec.rb
         | 
| 224 226 | 
             
            - spec/spec_helper.rb
         | 
| 225 227 | 
             
            - spec/support/fixtures_path.rb
         | 
| @@ -247,7 +249,7 @@ rubyforge_project: | |
| 247 249 | 
             
            rubygems_version: 1.8.23
         | 
| 248 250 | 
             
            signing_key: 
         | 
| 249 251 | 
             
            specification_version: 3
         | 
| 250 | 
            -
            summary: jekyll-assets-0. | 
| 252 | 
            +
            summary: jekyll-assets-0.7.0
         | 
| 251 253 | 
             
            test_files:
         | 
| 252 254 | 
             
            - spec/fixtures/.gitignore
         | 
| 253 255 | 
             
            - spec/fixtures/_assets/app.css.erb
         | 
| @@ -263,6 +265,8 @@ test_files: | |
| 263 265 | 
             
            - spec/fixtures/_assets/vendor/bourbon.css.sass
         | 
| 264 266 | 
             
            - spec/fixtures/_assets/vendor/compass.css.sass
         | 
| 265 267 | 
             
            - spec/fixtures/_assets/vendor/neat.css.sass
         | 
| 268 | 
            +
            - spec/fixtures/_assets/wowscript.js
         | 
| 269 | 
            +
            - spec/fixtures/_assets/wowstyle.css
         | 
| 266 270 | 
             
            - spec/fixtures/_config.yml
         | 
| 267 271 | 
             
            - spec/fixtures/_layouts/default.html
         | 
| 268 272 | 
             
            - spec/fixtures/_posts/2012-10-19-hello-world.md
         | 
| @@ -270,11 +274,11 @@ test_files: | |
| 270 274 | 
             
            - spec/lib/jekyll-assets/bourbon_spec.rb
         | 
| 271 275 | 
             
            - spec/lib/jekyll-assets/compass_spec.rb
         | 
| 272 276 | 
             
            - spec/lib/jekyll-assets/neat_spec.rb
         | 
| 273 | 
            -
            - spec/lib/jekyll/assets_plugin/asset_file_spec.rb
         | 
| 274 277 | 
             
            - spec/lib/jekyll/assets_plugin/configuration_spec.rb
         | 
| 275 278 | 
             
            - spec/lib/jekyll/assets_plugin/environment_spec.rb
         | 
| 276 279 | 
             
            - spec/lib/jekyll/assets_plugin/filters_spec.rb
         | 
| 277 280 | 
             
            - spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb
         | 
| 281 | 
            +
            - spec/lib/jekyll/assets_plugin/renderer_spec.rb
         | 
| 278 282 | 
             
            - spec/lib/jekyll/assets_plugin/tag_spec.rb
         | 
| 279 283 | 
             
            - spec/spec_helper.rb
         | 
| 280 284 | 
             
            - spec/support/fixtures_path.rb
         | 
| @@ -1,86 +0,0 @@ | |
| 1 | 
            -
            module Jekyll
         | 
| 2 | 
            -
              module AssetsPlugin
         | 
| 3 | 
            -
                class AssetFile
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                  @@mtimes = Hash.new
         | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
                  attr_reader :logical_path
         | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def initialize site, asset
         | 
| 12 | 
            -
                    @site, @asset, @logical_path = site, asset, asset.logical_path
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
                  def destination dest
         | 
| 17 | 
            -
                    File.join dest, @site.assets_config.dirname, filename
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
                  def filename
         | 
| 22 | 
            -
                    case cachebust = @site.assets_config.cachebust
         | 
| 23 | 
            -
                    when :none, :soft then asset.logical_path
         | 
| 24 | 
            -
                    when :hard        then asset.digest_path
         | 
| 25 | 
            -
                    else raise "Unknown cachebust strategy: #{cachebust.inspect}"
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
                  end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
                  def asset
         | 
| 31 | 
            -
                    @asset = @site.assets[logical_path] if @asset.stale? @site.assets
         | 
| 32 | 
            -
                    @asset
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
                  def content_type
         | 
| 37 | 
            -
                    asset.content_type
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
                  def path
         | 
| 42 | 
            -
                    asset.pathname.to_s
         | 
| 43 | 
            -
                  end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
                  def mtime
         | 
| 47 | 
            -
                    asset.mtime.to_i
         | 
| 48 | 
            -
                  end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
                  def modified?
         | 
| 52 | 
            -
                    @@mtimes[path] != mtime
         | 
| 53 | 
            -
                  end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
                  def write dest
         | 
| 57 | 
            -
                    dest_path = destination dest
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                    return false if File.exist?(dest_path) and !modified?
         | 
| 60 | 
            -
                    @@mtimes[path] = mtime
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                    asset.write_to dest_path
         | 
| 63 | 
            -
                    asset.write_to "#{dest_path}.gz" if gzip?
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                    true
         | 
| 66 | 
            -
                  end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
                  def == other
         | 
| 70 | 
            -
                    return false unless other.respond_to? :logical_path
         | 
| 71 | 
            -
                    other.logical_path == logical_path
         | 
| 72 | 
            -
                  end
         | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
                  def gzip?
         | 
| 76 | 
            -
                    @site.assets_config.gzip.include? content_type
         | 
| 77 | 
            -
                  end
         | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
                  def to_s
         | 
| 81 | 
            -
                    "#<Jekyll::AssetsPlugin::AssetFile:#{logical_path}>"
         | 
| 82 | 
            -
                  end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
                end
         | 
| 85 | 
            -
              end
         | 
| 86 | 
            -
            end
         | 
| @@ -1,34 +0,0 @@ | |
| 1 | 
            -
            require "spec_helper"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Jekyll::AssetsPlugin
         | 
| 5 | 
            -
              describe AssetFile do
         | 
| 6 | 
            -
                context "#destination" do
         | 
| 7 | 
            -
                  subject do
         | 
| 8 | 
            -
                    AssetFile.new(@site, @site.assets["app.css"]).destination @dest.to_s
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  context "with none cachebust" do
         | 
| 12 | 
            -
                    before { @site.assets_config.cachebust = :none }
         | 
| 13 | 
            -
                    it { should match(%r{/app\.css$}) }
         | 
| 14 | 
            -
                  end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                  context "with soft cachebust" do
         | 
| 17 | 
            -
                    before { @site.assets_config.cachebust = :soft }
         | 
| 18 | 
            -
                    it { should match(%r{/app\.css$}) }
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                  context "with hard cachebust" do
         | 
| 22 | 
            -
                    before { @site.assets_config.cachebust = :hard }
         | 
| 23 | 
            -
                    it { should match %r{/app-[0-9a-f]{32}\.css$} }
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  context "with unknown cachebust" do
         | 
| 27 | 
            -
                    before { @site.assets_config.cachebust = :wtf }
         | 
| 28 | 
            -
                    it "should raise error" do
         | 
| 29 | 
            -
                      expect { @site.asset_path "app.css" }.to raise_error
         | 
| 30 | 
            -
                    end
         | 
| 31 | 
            -
                  end
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
            end
         |