tgfa-jekyll-assets 0.7.9.1
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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +1 -0
- data/.rubocop.yml +78 -0
- data/.travis.yml +9 -0
- data/.yardopts +1 -0
- data/Gemfile +15 -0
- data/Gemfile.jekyll-1.0 +2 -0
- data/Guardfile +8 -0
- data/HISTORY.md +202 -0
- data/LICENSE +22 -0
- data/README.md +569 -0
- data/Rakefile +9 -0
- data/lib/jekyll/assets_plugin/asset_path.rb +39 -0
- data/lib/jekyll/assets_plugin/configuration.rb +87 -0
- data/lib/jekyll/assets_plugin/environment.rb +62 -0
- data/lib/jekyll/assets_plugin/filters.rb +19 -0
- data/lib/jekyll/assets_plugin/patches/asset_patch.rb +68 -0
- data/lib/jekyll/assets_plugin/patches/bundled_asset_patch.rb +16 -0
- data/lib/jekyll/assets_plugin/patches/context_patch.rb +27 -0
- data/lib/jekyll/assets_plugin/patches/index_patch.rb +25 -0
- data/lib/jekyll/assets_plugin/patches/processed_asset_patch.rb +60 -0
- data/lib/jekyll/assets_plugin/patches/site_patch.rb +68 -0
- data/lib/jekyll/assets_plugin/patches.rb +1 -0
- data/lib/jekyll/assets_plugin/renderer.rb +47 -0
- data/lib/jekyll/assets_plugin/tag.rb +19 -0
- data/lib/jekyll/assets_plugin/version.rb +5 -0
- data/lib/jekyll/assets_plugin.rb +4 -0
- data/lib/jekyll-assets/bootstrap.rb +6 -0
- data/lib/jekyll-assets/bourbon.rb +4 -0
- data/lib/jekyll-assets/compass.rb +7 -0
- data/lib/jekyll-assets/font-awesome.rb +6 -0
- data/lib/jekyll-assets/neat.rb +4 -0
- data/lib/jekyll-assets.rb +2 -0
- data/spec/fixtures/.gitignore +2 -0
- data/spec/fixtures/_assets/app.css.erb +5 -0
- data/spec/fixtures/_assets/app.js +1 -0
- data/spec/fixtures/_assets/fonts/vapor.eot +0 -0
- data/spec/fixtures/_assets/fonts/vapor.svg +0 -0
- data/spec/fixtures/_assets/fonts/vapor.ttf +0 -0
- data/spec/fixtures/_assets/fonts/vapor.woff +0 -0
- data/spec/fixtures/_assets/lib/relative.css.scss +12 -0
- data/spec/fixtures/_assets/noise.png +0 -0
- data/spec/fixtures/_assets/should_be_blank.css.erb +1 -0
- data/spec/fixtures/_assets/should_fail.css.erb +1 -0
- data/spec/fixtures/_assets/vapor.css.scss +13 -0
- data/spec/fixtures/_assets/vapor.js +2 -0
- data/spec/fixtures/_assets/vendor/bourbon.css.sass +4 -0
- data/spec/fixtures/_assets/vendor/compass.css.sass +4 -0
- data/spec/fixtures/_assets/vendor/neat.css.sass +5 -0
- data/spec/fixtures/_assets/wowscript.js +0 -0
- data/spec/fixtures/_assets/wowstyle.css +0 -0
- data/spec/fixtures/_config.yml +2 -0
- data/spec/fixtures/_layouts/default.html +9 -0
- data/spec/fixtures/_posts/2012-10-19-hello-world.md +6 -0
- data/spec/fixtures/index.html +0 -0
- data/spec/lib/jekyll/assets_plugin/configuration_spec.rb +167 -0
- data/spec/lib/jekyll/assets_plugin/environment_spec.rb +22 -0
- data/spec/lib/jekyll/assets_plugin/filters_spec.rb +103 -0
- data/spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb +168 -0
- data/spec/lib/jekyll/assets_plugin/renderer_spec.rb +48 -0
- data/spec/lib/jekyll/assets_plugin/tag_spec.rb +103 -0
- data/spec/lib/jekyll-assets/bootstrap_spec.rb +8 -0
- data/spec/lib/jekyll-assets/bourbon_spec.rb +8 -0
- data/spec/lib/jekyll-assets/compass_spec.rb +8 -0
- data/spec/lib/jekyll-assets/font-awesome_spec.rb +8 -0
- data/spec/lib/jekyll-assets/neat_spec.rb +8 -0
- data/spec/spec_helper.rb +45 -0
- data/spec/support/fixtures_helpers.rb +7 -0
- data/tgfa-jekyll-assets.gemspec +41 -0
- metadata +322 -0
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            # stdlib
         | 
| 2 | 
            +
            require "pathname"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # 3rd-party
         | 
| 5 | 
            +
            require "sprockets"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module Jekyll
         | 
| 8 | 
            +
              module AssetsPlugin
         | 
| 9 | 
            +
                class Environment < Sprockets::Environment
         | 
| 10 | 
            +
                  class AssetNotFound < StandardError
         | 
| 11 | 
            +
                    def initialize(path)
         | 
| 12 | 
            +
                      super "Couldn't find file '#{path}'"
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  attr_reader :site
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def initialize(site)
         | 
| 19 | 
            +
                    super site.source
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    @site = site
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    # append asset paths
         | 
| 24 | 
            +
                    site.assets_config.sources.each { |p| append_path p }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    self.js_compressor   = site.assets_config.js_compressor
         | 
| 27 | 
            +
                    self.css_compressor  = site.assets_config.css_compressor
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    if site.assets_config.cache_assets?
         | 
| 30 | 
            +
                      self.cache = Sprockets::Cache::FileStore.new cache_path
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    # load css autoprefix post-processor
         | 
| 34 | 
            +
                    install_autoprefixer!
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    # reset cache if config changed
         | 
| 37 | 
            +
                    self.version = site.assets_config.marshal_dump
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                    # bind jekyll and Sprockets context together
         | 
| 40 | 
            +
                    context_class.instance_variable_set :@site, site
         | 
| 41 | 
            +
                    context_class.send :include, Patches::ContextPatch
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def cache_path
         | 
| 45 | 
            +
                    Pathname.new(@site.source).join @site.assets_config.cache_path
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  def find_asset(path, *args)
         | 
| 49 | 
            +
                    super || fail(AssetNotFound, path)
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  private
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  def install_autoprefixer!
         | 
| 55 | 
            +
                    require "autoprefixer-rails"
         | 
| 56 | 
            +
                    AutoprefixerRails.install(self)
         | 
| 57 | 
            +
                  rescue LoadError
         | 
| 58 | 
            +
                    nil
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # internal
         | 
| 2 | 
            +
            require "jekyll/assets_plugin/renderer"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Jekyll
         | 
| 5 | 
            +
              module AssetsPlugin
         | 
| 6 | 
            +
                module Filters
         | 
| 7 | 
            +
                  %w[asset asset_path image javascript stylesheet].each do |name|
         | 
| 8 | 
            +
                    module_eval <<-RUBY, __FILE__, __LINE__
         | 
| 9 | 
            +
                    def #{name} path                    # def stylesheet logical_path
         | 
| 10 | 
            +
                      r = Renderer.new @context, path   #   r = Renderer.new @context, path
         | 
| 11 | 
            +
                      r.render_#{name}                  #   r.render_stylesheet
         | 
| 12 | 
            +
                    end                                 # end
         | 
| 13 | 
            +
                    RUBY
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            Liquid::Template.register_filter Jekyll::AssetsPlugin::Filters
         | 
| @@ -0,0 +1,68 @@ | |
| 1 | 
            +
            # 3rd-party
         | 
| 2 | 
            +
            require "sprockets"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Jekyll
         | 
| 5 | 
            +
              module AssetsPlugin
         | 
| 6 | 
            +
                module Patches
         | 
| 7 | 
            +
                  module AssetPatch
         | 
| 8 | 
            +
                    def self.included(base)
         | 
| 9 | 
            +
                      base.send :extend, ClassMethods
         | 
| 10 | 
            +
                      base.send :include, InstanceMethods
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    module ClassMethods
         | 
| 14 | 
            +
                      def mtimes
         | 
| 15 | 
            +
                        @mtimes ||= {}
         | 
| 16 | 
            +
                      end
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    module InstanceMethods
         | 
| 20 | 
            +
                      attr_reader :site
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                      def jekyll_assets
         | 
| 23 | 
            +
                        []
         | 
| 24 | 
            +
                      end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                      def bundle!
         | 
| 27 | 
            +
                        site.bundle_asset! self if site
         | 
| 28 | 
            +
                        self
         | 
| 29 | 
            +
                      end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                      def destination(dest)
         | 
| 32 | 
            +
                        File.join dest, site.assets_config.dirname, filename
         | 
| 33 | 
            +
                      end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                      def filename
         | 
| 36 | 
            +
                        case cachebust = site.assets_config.cachebust
         | 
| 37 | 
            +
                        when :none, :soft then logical_path
         | 
| 38 | 
            +
                        when :hard        then digest_path
         | 
| 39 | 
            +
                        else fail "Unknown cachebust strategy: #{cachebust.inspect}"
         | 
| 40 | 
            +
                        end
         | 
| 41 | 
            +
                      end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                      def modified?
         | 
| 44 | 
            +
                        self.class.mtimes[pathname.to_s] != mtime.to_i
         | 
| 45 | 
            +
                      end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                      def write(dest)
         | 
| 48 | 
            +
                        dest_path = destination dest
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                        return false if File.exist?(dest_path) && !modified?
         | 
| 51 | 
            +
                        self.class.mtimes[pathname.to_s] = mtime.to_i
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                        write_to dest_path
         | 
| 54 | 
            +
                        write_to "#{dest_path}.gz" if gzip?
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                        true
         | 
| 57 | 
            +
                      end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                      def gzip?
         | 
| 60 | 
            +
                        site.assets_config.gzip.include? content_type
         | 
| 61 | 
            +
                      end
         | 
| 62 | 
            +
                    end
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
            end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            Sprockets::Asset.send :include, Jekyll::AssetsPlugin::Patches::AssetPatch
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # 3rd-party
         | 
| 2 | 
            +
            require "sprockets"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Jekyll
         | 
| 5 | 
            +
              module AssetsPlugin
         | 
| 6 | 
            +
                module Patches
         | 
| 7 | 
            +
                  module BundledAssetPatch
         | 
| 8 | 
            +
                    def jekyll_assets
         | 
| 9 | 
            +
                      @processed_asset.jekyll_assets
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    ::Sprockets::BundledAsset.send :include, self
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            # stdlib
         | 
| 2 | 
            +
            require "set"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Jekyll
         | 
| 5 | 
            +
              module AssetsPlugin
         | 
| 6 | 
            +
                module Patches
         | 
| 7 | 
            +
                  module ContextPatch
         | 
| 8 | 
            +
                    def site
         | 
| 9 | 
            +
                      self.class.instance_variable_get :@site
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    def jekyll_assets
         | 
| 13 | 
            +
                      @jekyll_assets ||= Set.new
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    def asset_path(pathname, *args)
         | 
| 17 | 
            +
                      return "" if pathname.to_s.strip.empty?
         | 
| 18 | 
            +
                      asset = resolve(pathname.to_s[/^[^#?]+/]).to_s
         | 
| 19 | 
            +
                      jekyll_assets << asset
         | 
| 20 | 
            +
                      (site.asset_path asset, *args) + (pathname.to_s[/[#?].+/] || "")
         | 
| 21 | 
            +
                    rescue Sprockets::FileNotFound
         | 
| 22 | 
            +
                      raise Environment::AssetNotFound, pathname
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            # 3rd-party
         | 
| 2 | 
            +
            require "sprockets"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Jekyll
         | 
| 5 | 
            +
              module AssetsPlugin
         | 
| 6 | 
            +
                module Patches
         | 
| 7 | 
            +
                  module IndexPatch
         | 
| 8 | 
            +
                    def self.included(base)
         | 
| 9 | 
            +
                      base.class_eval do
         | 
| 10 | 
            +
                        alias_method :__orig_find_asset, :find_asset
         | 
| 11 | 
            +
                        alias_method :find_asset, :__wrap_find_asset
         | 
| 12 | 
            +
                      end
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    def __wrap_find_asset(path, options = {})
         | 
| 16 | 
            +
                      __orig_find_asset(path, options).tap do |asset|
         | 
| 17 | 
            +
                        asset.instance_variable_set :@site, @environment.site if asset
         | 
| 18 | 
            +
                      end
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            Sprockets::Index.send :include, Jekyll::AssetsPlugin::Patches::IndexPatch
         | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            # stdlib
         | 
| 2 | 
            +
            require "set"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # 3rd-party
         | 
| 5 | 
            +
            require "sprockets"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module Jekyll
         | 
| 8 | 
            +
              module AssetsPlugin
         | 
| 9 | 
            +
                module Patches
         | 
| 10 | 
            +
                  module ProcessedAssetPatch
         | 
| 11 | 
            +
                    def self.included(base)
         | 
| 12 | 
            +
                      base.class_eval do
         | 
| 13 | 
            +
                        attr_reader :jekyll_assets
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                        alias_method :__orig_build_dependency_paths,
         | 
| 16 | 
            +
                          :build_dependency_paths
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                        alias_method :build_dependency_paths,
         | 
| 19 | 
            +
                          :__wrap_build_dependency_paths
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                        alias_method :__orig_init_with, :init_with
         | 
| 22 | 
            +
                        alias_method :init_with, :__wrap_init_with
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                        alias_method :__orig_encode_with, :encode_with
         | 
| 25 | 
            +
                        alias_method :encode_with, :__wrap_encode_with
         | 
| 26 | 
            +
                      end
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    def __wrap_build_dependency_paths(environment, context)
         | 
| 30 | 
            +
                      @jekyll_assets = Set.new
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                      context.jekyll_assets.each do |path|
         | 
| 33 | 
            +
                        @jekyll_assets << path
         | 
| 34 | 
            +
                        environment.find_asset(path)
         | 
| 35 | 
            +
                          .jekyll_assets.each { |p| @jekyll_assets << p }
         | 
| 36 | 
            +
                      end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                      __orig_build_dependency_paths environment, context
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    def __wrap_init_with(environment, coder)
         | 
| 42 | 
            +
                      __orig_init_with environment, coder
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                      @jekyll_assets = Set.new coder["jekyll_assets"]
         | 
| 45 | 
            +
                        .map { |p| expand_root_path(p) }
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                    def __wrap_encode_with(coder)
         | 
| 49 | 
            +
                      __orig_encode_with coder
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                      coder["jekyll_assets"] = jekyll_assets.map do |path|
         | 
| 52 | 
            +
                        relativize_root_path path
         | 
| 53 | 
            +
                      end
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    ::Sprockets::ProcessedAsset.send :include, self
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
            end
         | 
| @@ -0,0 +1,68 @@ | |
| 1 | 
            +
            # stdlib
         | 
| 2 | 
            +
            require "digest/md5"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # 3rd-party
         | 
| 5 | 
            +
            require "jekyll"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            # internal
         | 
| 8 | 
            +
            require "jekyll/assets_plugin/configuration"
         | 
| 9 | 
            +
            require "jekyll/assets_plugin/environment"
         | 
| 10 | 
            +
            require "jekyll/assets_plugin/asset_path"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            module Jekyll
         | 
| 13 | 
            +
              module AssetsPlugin
         | 
| 14 | 
            +
                module Patches
         | 
| 15 | 
            +
                  module SitePatch
         | 
| 16 | 
            +
                    def self.included(base)
         | 
| 17 | 
            +
                      base.class_eval do
         | 
| 18 | 
            +
                        alias_method :__orig_write, :write
         | 
| 19 | 
            +
                        alias_method :write, :__wrap_write
         | 
| 20 | 
            +
                      end
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    def assets_config
         | 
| 24 | 
            +
                      @assets_config ||= Configuration.new(config["assets"] || {})
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    def assets
         | 
| 28 | 
            +
                      @assets ||= Environment.new self
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    def asset_files
         | 
| 32 | 
            +
                      @asset_files ||= []
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    def asset_path(pathname, *args)
         | 
| 36 | 
            +
                      pathname, _, anchor = pathname.rpartition "#" if pathname["#"]
         | 
| 37 | 
            +
                      pathname, _, query  = pathname.rpartition "?" if pathname["?"]
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                      asset_path = AssetPath.new assets[pathname, *args]
         | 
| 40 | 
            +
                      asset_path.anchor = anchor
         | 
| 41 | 
            +
                      asset_path.query  = query
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                      asset_path.to_s
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    def bundle_asset!(asset)
         | 
| 47 | 
            +
                      return if asset_files.include? asset
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                      asset_files << asset
         | 
| 50 | 
            +
                      asset.jekyll_assets.each { |path| bundle_asset! assets[path] }
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    def __wrap_write
         | 
| 54 | 
            +
                      static_files.push(*asset_files).uniq! do |asset|
         | 
| 55 | 
            +
                        case hash = asset.hash
         | 
| 56 | 
            +
                        when Fixnum then hash
         | 
| 57 | 
            +
                        else Digest::MD5.new.update(hash.to_s).hash
         | 
| 58 | 
            +
                        end
         | 
| 59 | 
            +
                      end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                      __orig_write
         | 
| 62 | 
            +
                    end
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
            end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            Jekyll::Site.send :include, Jekyll::AssetsPlugin::Patches::SitePatch
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            Dir[File.join File.dirname(__FILE__), "patches/**/*.rb"].each { |f| require f }
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            module Jekyll
         | 
| 2 | 
            +
              module AssetsPlugin
         | 
| 3 | 
            +
                class Renderer
         | 
| 4 | 
            +
                  STYLESHEET = '<link rel="stylesheet" href="%s">'
         | 
| 5 | 
            +
                  JAVASCRIPT = '<script src="%s"></script>'
         | 
| 6 | 
            +
                  IMAGE      = '<img src="%s">'
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def initialize(context, logical_path)
         | 
| 9 | 
            +
                    @site = context.registers[:site]
         | 
| 10 | 
            +
                    @path = logical_path.strip
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def render_asset
         | 
| 14 | 
            +
                    @site.assets[@path].to_s
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  def render_asset_path
         | 
| 18 | 
            +
                    @site.asset_path @path
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  def render_javascript
         | 
| 22 | 
            +
                    @path << ".js" if File.extname(@path).empty?
         | 
| 23 | 
            +
                    render_tag JAVASCRIPT
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def render_stylesheet
         | 
| 27 | 
            +
                    @path << ".css" if File.extname(@path).empty?
         | 
| 28 | 
            +
                    render_tag STYLESHEET
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def render_image
         | 
| 32 | 
            +
                    render_tag IMAGE
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  protected
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  def render_tag(template)
         | 
| 38 | 
            +
                    asset = @site.assets[@path]
         | 
| 39 | 
            +
                    tags  = (@site.assets_config.debug ? asset.to_a : [asset]).map do |a|
         | 
| 40 | 
            +
                      format template, AssetPath.new(a).to_s
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    tags.join "\n"
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            # 3rd-party
         | 
| 2 | 
            +
            require "liquid"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # internal
         | 
| 5 | 
            +
            require "jekyll/assets_plugin/renderer"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module Jekyll
         | 
| 8 | 
            +
              module AssetsPlugin
         | 
| 9 | 
            +
                class Tag < Liquid::Tag
         | 
| 10 | 
            +
                  def render(context)
         | 
| 11 | 
            +
                    Renderer.new(context, @markup).send :"render_#{@tag_name}"
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            %w[asset asset_path image javascript stylesheet].each do |tag|
         | 
| 18 | 
            +
              Liquid::Template.register_tag tag, Jekyll::AssetsPlugin::Tag
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            //= require vapor
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            /* copy of vapor css framework to test relative asset inclusion*/
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            @font-face {
         | 
| 4 | 
            +
              font-family: 'Vapor';
         | 
| 5 | 
            +
              src: url(font_path('../fonts/vapor.eot'));
         | 
| 6 | 
            +
              src: url(font_path('../fonts/vapor.eot?#iefix')) format("embedded-opentype"),
         | 
| 7 | 
            +
                   url(font_path('../fonts/vapor.woff')) format("woff"),
         | 
| 8 | 
            +
                   url(font_path('../fonts/vapor.ttf')) format("truetype"),
         | 
| 9 | 
            +
                   url(font_path('../fonts/vapor.svg#iefix')) format("svg");
         | 
| 10 | 
            +
              font-weight: normal;
         | 
| 11 | 
            +
              font-style: normal;
         | 
| 12 | 
            +
            }
         | 
| Binary file | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            body { background-image: url(<%= image_path '' %>) }
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            body { background-image: url(<%= image_path 'not-found.png' %>) }
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            //= require wowstyle
         | 
| 2 | 
            +
            /* vapor css framework */
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            @font-face {
         | 
| 5 | 
            +
              font-family: 'Vapor';
         | 
| 6 | 
            +
              src: url(font_path('fonts/vapor.eot'));
         | 
| 7 | 
            +
              src: url(font_path('fonts/vapor.eot?#iefix')) format("embedded-opentype"),
         | 
| 8 | 
            +
                   url(font_path('fonts/vapor.woff')) format("woff"),
         | 
| 9 | 
            +
                   url(font_path('fonts/vapor.ttf')) format("truetype"),
         | 
| 10 | 
            +
                   url(font_path('fonts/vapor.svg#iefix')) format("svg");
         | 
| 11 | 
            +
              font-weight: normal;
         | 
| 12 | 
            +
              font-style: normal;
         | 
| 13 | 
            +
            }
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         |