jekyll-assets 1.0.0 → 2.0.0.pre.beta1
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 +4 -4
- data/Gemfile +10 -10
- data/LICENSE +16 -18
- data/README.md +94 -554
- data/Rakefile +2 -8
- data/lib/jekyll/assets.rb +18 -12
- data/lib/jekyll/assets/cached.rb +12 -0
- data/lib/jekyll/assets/configuration.rb +43 -87
- data/lib/jekyll/assets/context.rb +23 -0
- data/lib/jekyll/assets/env.rb +181 -0
- data/lib/jekyll/assets/extras/es6.rb +5 -0
- data/lib/jekyll/assets/extras/font-awesome.rb +1 -0
- data/lib/jekyll/assets/extras/helpers.rb +6 -0
- data/lib/jekyll/assets/extras/prefix.rb +5 -0
- data/lib/jekyll/assets/filters.rb +9 -11
- data/lib/jekyll/assets/helpers.rb +37 -0
- data/lib/jekyll/assets/hook.rb +45 -0
- data/lib/jekyll/assets/hooks/post_read.rb +3 -0
- data/lib/jekyll/assets/hooks/post_write.rb +3 -0
- data/lib/jekyll/assets/logger.rb +25 -0
- data/lib/jekyll/assets/patches/jekyll/cleaner.rb +11 -0
- data/lib/jekyll/assets/patches/jekyll/site.rb +5 -0
- data/lib/jekyll/assets/patches/sprockets/asset.rb +13 -0
- data/lib/jekyll/assets/tag.rb +136 -9
- data/lib/jekyll/assets/tag/parser.rb +129 -0
- data/lib/jekyll/assets/tag/proxied_asset.rb +84 -0
- data/lib/jekyll/assets/tag/proxies.rb +86 -0
- data/lib/jekyll/assets/tag/proxies/magick.rb +101 -0
- data/lib/jekyll/assets/version.rb +1 -1
- metadata +59 -149
- data/.gitignore +0 -27
- data/.rspec +0 -1
- data/.rubocop.yml +0 -43
- data/.rubocop_todo.yml +0 -10
- data/.travis.yml +0 -16
- data/.yardopts +0 -1
- data/Appraisals +0 -7
- data/Guardfile +0 -7
- data/HISTORY.md +0 -297
- data/gemfiles/jekyll_2.gemfile +0 -17
- data/gemfiles/jekyll_3.gemfile +0 -17
- data/jekyll-assets.gemspec +0 -34
- data/lib/jekyll-assets.rb +0 -2
- data/lib/jekyll/assets/asset_path.rb +0 -39
- data/lib/jekyll/assets/environment.rb +0 -62
- data/lib/jekyll/assets/patches.rb +0 -1
- data/lib/jekyll/assets/patches/asset_patch.rb +0 -102
- data/lib/jekyll/assets/patches/bundled_asset_patch.rb +0 -16
- data/lib/jekyll/assets/patches/context_patch.rb +0 -31
- data/lib/jekyll/assets/patches/index_patch.rb +0 -25
- data/lib/jekyll/assets/patches/processed_asset_patch.rb +0 -59
- data/lib/jekyll/assets/patches/site_patch.rb +0 -62
- data/lib/jekyll/assets/renderer.rb +0 -122
- data/spec/fixtures/.gitignore +0 -2
- data/spec/fixtures/.jekyll-metadata +0 -0
- data/spec/fixtures/_assets/alert.js +0 -1
- data/spec/fixtures/_assets/app.css.erb +0 -5
- data/spec/fixtures/_assets/app.js +0 -1
- data/spec/fixtures/_assets/app.min.css +0 -0
- data/spec/fixtures/_assets/app.min.js +0 -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 +0 -12
- data/spec/fixtures/_assets/noise.png +0 -0
- data/spec/fixtures/_assets/noize.png +0 -0
- data/spec/fixtures/_assets/should_be_blank.css.erb +0 -1
- data/spec/fixtures/_assets/should_fail.css.erb +0 -1
- data/spec/fixtures/_assets/vapor.css.scss +0 -13
- data/spec/fixtures/_assets/vapor.js +0 -2
- data/spec/fixtures/_assets/vendor/with_bootstrap.css.sass +0 -1
- data/spec/fixtures/_assets/vendor/with_bourbon.css.sass +0 -4
- data/spec/fixtures/_assets/vendor/with_compass.css.sass +0 -4
- data/spec/fixtures/_assets/vendor/with_neat.css.sass +0 -5
- data/spec/fixtures/_assets/wowscript.js +0 -0
- data/spec/fixtures/_assets/wowstyle.css +0 -0
- data/spec/fixtures/_config.yml +0 -2
- data/spec/fixtures/_layouts/default.html +0 -9
- data/spec/fixtures/_posts/2012-10-19-hello-world.md +0 -6
- data/spec/fixtures/_posts/2015-02-02-duplicates.md +0 -8
- data/spec/fixtures/index.html +0 -0
- data/spec/lib/jekyll/assets/configuration_spec.rb +0 -172
- data/spec/lib/jekyll/assets/environment_spec.rb +0 -18
- data/spec/lib/jekyll/assets/filters_spec.rb +0 -112
- data/spec/lib/jekyll/assets/patches/site_patch_spec.rb +0 -176
- data/spec/lib/jekyll/assets/renderer_spec.rb +0 -286
- data/spec/lib/jekyll/assets/tag_spec.rb +0 -139
- data/spec/spec_helper.rb +0 -58
- data/spec/support/fixtures_helpers.rb +0 -7
data/jekyll-assets.gemspec
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "jekyll/assets/version"
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "jekyll-assets"
|
8
|
-
spec.version = Jekyll::Assets::VERSION
|
9
|
-
spec.homepage = "http://jekyll-assets.github.com/jekyll-assets"
|
10
|
-
spec.authors = ["Aleksey V Zapparov", "Zachary Bush"]
|
11
|
-
spec.email = %w(ixti@member.fsf.org zach@zmbush.com)
|
12
|
-
spec.license = "MIT"
|
13
|
-
spec.summary = "jekyll-assets-#{Jekyll::Assets::VERSION}"
|
14
|
-
spec.description = <<-DESC
|
15
|
-
Jekyll plugin, that allows you to write javascript/css assets in
|
16
|
-
other languages such as CoffeeScript, Sass, Less and ERB, concatenate
|
17
|
-
them, respecting dependencies, minify and many more.
|
18
|
-
DESC
|
19
|
-
|
20
|
-
spec.files = `git ls-files`.split($RS)
|
21
|
-
spec.executables = spec.files.grep(/^bin\//).map { |f| File.basename(f) }
|
22
|
-
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
23
|
-
spec.require_paths = ["lib"]
|
24
|
-
|
25
|
-
spec.add_dependency "jekyll", ">= 2"
|
26
|
-
spec.add_dependency "sass", "~> 3.2"
|
27
|
-
spec.add_dependency "fastimage", "~> 1.6"
|
28
|
-
spec.add_dependency "mini_magick", "~> 4.1"
|
29
|
-
spec.add_dependency "sprockets", "~> 2.10"
|
30
|
-
spec.add_dependency "sprockets-sass"
|
31
|
-
spec.add_dependency "sprockets-helpers"
|
32
|
-
|
33
|
-
spec.add_development_dependency "bundler", "~> 1.6"
|
34
|
-
end
|
data/lib/jekyll-assets.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
module Jekyll
|
2
|
-
module Assets
|
3
|
-
class AssetPath
|
4
|
-
attr_writer :anchor, :query
|
5
|
-
|
6
|
-
def initialize(asset)
|
7
|
-
asset.bundle!
|
8
|
-
@asset = asset
|
9
|
-
end
|
10
|
-
|
11
|
-
def cachebust
|
12
|
-
@cachebust ||= @asset.site.assets_config.cachebust
|
13
|
-
end
|
14
|
-
|
15
|
-
def path
|
16
|
-
:hard == cachebust && @asset.digest_path || @asset.logical_path
|
17
|
-
end
|
18
|
-
|
19
|
-
def query
|
20
|
-
query = []
|
21
|
-
|
22
|
-
query << "cb=#{@asset.digest}" if :soft == cachebust
|
23
|
-
query << @query if @query
|
24
|
-
|
25
|
-
return if query.empty?
|
26
|
-
|
27
|
-
"?" << query.join("&")
|
28
|
-
end
|
29
|
-
|
30
|
-
def anchor
|
31
|
-
"##{@anchor}" if @anchor
|
32
|
-
end
|
33
|
-
|
34
|
-
def to_s
|
35
|
-
"#{@asset.site.assets_config.baseurl}/#{path}#{query}#{anchor}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# stdlib
|
2
|
-
require "pathname"
|
3
|
-
|
4
|
-
# 3rd-party
|
5
|
-
require "sass"
|
6
|
-
require "sprockets"
|
7
|
-
require "sprockets-sass"
|
8
|
-
require "sprockets-helpers"
|
9
|
-
|
10
|
-
module Jekyll
|
11
|
-
module Assets
|
12
|
-
class Environment < Sprockets::Environment
|
13
|
-
class AssetNotFound < StandardError
|
14
|
-
def initialize(path)
|
15
|
-
super "Couldn't find file '#{path}'"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :site
|
20
|
-
|
21
|
-
# rubocop:disable Metrics/AbcSize
|
22
|
-
def initialize(site)
|
23
|
-
super site.source
|
24
|
-
|
25
|
-
@site = site
|
26
|
-
|
27
|
-
# append asset paths
|
28
|
-
site.assets_config.sources.each { |p| append_path p }
|
29
|
-
append_path resize_cache_path
|
30
|
-
|
31
|
-
self.js_compressor = site.assets_config.js_compressor
|
32
|
-
self.css_compressor = site.assets_config.css_compressor
|
33
|
-
|
34
|
-
Jekyll::Assets::HOOKS.each { |block| block.call(self) }
|
35
|
-
|
36
|
-
if site.assets_config.cache_assets?
|
37
|
-
self.cache = Sprockets::Cache::FileStore.new cache_path
|
38
|
-
end
|
39
|
-
|
40
|
-
# reset cache if config changed
|
41
|
-
self.version = site.assets_config.marshal_dump
|
42
|
-
|
43
|
-
# bind jekyll and Sprockets context together
|
44
|
-
context_class.instance_variable_set :@site, site
|
45
|
-
context_class.send :include, Patches::ContextPatch
|
46
|
-
end
|
47
|
-
# rubocop:enable Metrics/AbcSize
|
48
|
-
|
49
|
-
def cache_path
|
50
|
-
Pathname.new(@site.source).join @site.assets_config.cache_path
|
51
|
-
end
|
52
|
-
|
53
|
-
def resize_cache_path
|
54
|
-
cache_path.join "resize"
|
55
|
-
end
|
56
|
-
|
57
|
-
def find_asset(path, *args)
|
58
|
-
super || fail(AssetNotFound, path)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
Dir[File.join File.dirname(__FILE__), "patches/**/*.rb"].each { |f| require f }
|
@@ -1,102 +0,0 @@
|
|
1
|
-
# 3rd-party
|
2
|
-
require "sprockets"
|
3
|
-
require "mini_magick"
|
4
|
-
|
5
|
-
module Jekyll
|
6
|
-
module Assets
|
7
|
-
module Patches
|
8
|
-
module AssetPatch
|
9
|
-
def self.included(base)
|
10
|
-
base.send :extend, ClassMethods
|
11
|
-
base.send :include, InstanceMethods
|
12
|
-
end
|
13
|
-
|
14
|
-
module ClassMethods
|
15
|
-
def mtimes
|
16
|
-
@mtimes ||= {}
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
module InstanceMethods
|
21
|
-
attr_reader :site
|
22
|
-
|
23
|
-
def jekyll_assets
|
24
|
-
[]
|
25
|
-
end
|
26
|
-
|
27
|
-
def bundle!
|
28
|
-
site.bundle_asset! self if site
|
29
|
-
self
|
30
|
-
end
|
31
|
-
|
32
|
-
def destination(dest)
|
33
|
-
File.join dest, site.assets_config.dirname, filename
|
34
|
-
end
|
35
|
-
|
36
|
-
def filename
|
37
|
-
case cachebust = site.assets_config.cachebust
|
38
|
-
when :none, :soft then logical_path
|
39
|
-
when :hard then digest_path
|
40
|
-
else fail "Unknown cachebust strategy: #{cachebust.inspect}"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def modified?
|
45
|
-
self.class.mtimes[pathname.to_s] != mtime.to_i
|
46
|
-
end
|
47
|
-
|
48
|
-
def write(dest)
|
49
|
-
dest_path = destination dest
|
50
|
-
|
51
|
-
return false if File.exist?(dest_path) && !modified?
|
52
|
-
self.class.mtimes[pathname.to_s] = mtime.to_i
|
53
|
-
|
54
|
-
write_to dest_path
|
55
|
-
write_to "#{dest_path}.gz" if gzip?
|
56
|
-
|
57
|
-
true
|
58
|
-
end
|
59
|
-
|
60
|
-
def gzip?
|
61
|
-
site.assets_config.gzip.include? content_type
|
62
|
-
end
|
63
|
-
|
64
|
-
def extname
|
65
|
-
@extname ||= File.extname(pathname)
|
66
|
-
end
|
67
|
-
|
68
|
-
def basename
|
69
|
-
@basename ||= File.basename(pathname, extname)
|
70
|
-
end
|
71
|
-
|
72
|
-
def resize_outdir
|
73
|
-
site.assets.resize_cache_path
|
74
|
-
end
|
75
|
-
|
76
|
-
def ensure_resize_directory!
|
77
|
-
FileUtils.mkdir_p resize_outdir
|
78
|
-
end
|
79
|
-
|
80
|
-
def do_resize(dimensions)
|
81
|
-
name = "#{basename}-#{dimensions}#{extname}".gsub(/%/, "P")
|
82
|
-
img = MiniMagick::Image.read(to_s, extname)
|
83
|
-
img.resize dimensions
|
84
|
-
img.write "#{resize_outdir}/#{name}"
|
85
|
-
|
86
|
-
[name, site.assets[name]]
|
87
|
-
end
|
88
|
-
|
89
|
-
def resize(dimensions)
|
90
|
-
ensure_resize_directory!
|
91
|
-
|
92
|
-
@outfiles ||= {}
|
93
|
-
|
94
|
-
@outfiles[dimensions] ||= do_resize(dimensions)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
Sprockets::Asset.send :include, Jekyll::Assets::Patches::AssetPatch
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# 3rd-party
|
2
|
-
require "sprockets"
|
3
|
-
|
4
|
-
module Jekyll
|
5
|
-
module Assets
|
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
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# stdlib
|
2
|
-
require "set"
|
3
|
-
|
4
|
-
module Jekyll
|
5
|
-
module Assets
|
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
|
-
pathname = pathname.to_s.strip
|
18
|
-
|
19
|
-
return "" if pathname.empty?
|
20
|
-
|
21
|
-
asset = resolve(pathname[/^[^#?]+/]).to_s
|
22
|
-
jekyll_assets << asset
|
23
|
-
|
24
|
-
site.asset_path(asset, *args) + (pathname[/[#?].+/] || "")
|
25
|
-
rescue Sprockets::FileNotFound
|
26
|
-
raise Environment::AssetNotFound, pathname
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# 3rd-party
|
2
|
-
require "sprockets"
|
3
|
-
|
4
|
-
module Jekyll
|
5
|
-
module Assets
|
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::Assets::Patches::IndexPatch
|
@@ -1,59 +0,0 @@
|
|
1
|
-
# stdlib
|
2
|
-
require "set"
|
3
|
-
|
4
|
-
# 3rd-party
|
5
|
-
require "sprockets"
|
6
|
-
|
7
|
-
module Jekyll
|
8
|
-
module Assets
|
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
|
-
@jekyll_assets += environment.find_asset(path).jekyll_assets
|
35
|
-
end
|
36
|
-
|
37
|
-
__orig_build_dependency_paths environment, context
|
38
|
-
end
|
39
|
-
|
40
|
-
def __wrap_init_with(environment, coder)
|
41
|
-
__orig_init_with environment, coder
|
42
|
-
|
43
|
-
jekyll_assets = coder["jekyll_assets"].map { |p| expand_root_path(p) }
|
44
|
-
@jekyll_assets = Set.new jekyll_assets
|
45
|
-
end
|
46
|
-
|
47
|
-
def __wrap_encode_with(coder)
|
48
|
-
__orig_encode_with coder
|
49
|
-
|
50
|
-
coder["jekyll_assets"] = jekyll_assets.map do |path|
|
51
|
-
relativize_root_path path
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
::Sprockets::ProcessedAsset.send :include, self
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# stdlib
|
2
|
-
require "digest/md5"
|
3
|
-
|
4
|
-
# 3rd-party
|
5
|
-
require "jekyll"
|
6
|
-
|
7
|
-
# internal
|
8
|
-
require "jekyll/assets/configuration"
|
9
|
-
require "jekyll/assets/environment"
|
10
|
-
require "jekyll/assets/asset_path"
|
11
|
-
|
12
|
-
module Jekyll
|
13
|
-
module Assets
|
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(self, config["assets"] || {})
|
25
|
-
end
|
26
|
-
|
27
|
-
def assets
|
28
|
-
@assets ||= Environment.new self
|
29
|
-
end
|
30
|
-
|
31
|
-
def asset_files
|
32
|
-
@asset_files ||= Set.new
|
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)
|
55
|
-
__orig_write
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
Jekyll::Site.send :include, Jekyll::Assets::Patches::SitePatch
|