jekyll-assets 2.0.0.pre.beta2 → 2.0.0.pre.beta3
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 +4 -4
- data/README.md +33 -40
- data/lib/jekyll/assets.rb +18 -16
- data/lib/jekyll/assets/addons/autoprefixer.rb +5 -0
- data/lib/jekyll/assets/addons/bootstrap.rb +1 -0
- data/lib/jekyll/assets/addons/compass.rb +7 -0
- data/lib/jekyll/assets/addons/font_awesome.rb +1 -0
- data/lib/jekyll/assets/{extras/es6.rb → addons/js_es6.rb} +1 -1
- data/lib/jekyll/assets/addons/proxies/magick.rb +92 -0
- data/lib/jekyll/assets/config.rb +48 -0
- data/lib/jekyll/assets/env.rb +110 -91
- data/lib/jekyll/assets/hook.rb +42 -25
- data/lib/jekyll/assets/hooks/cache.rb +5 -0
- data/lib/jekyll/assets/hooks/compression.rb +11 -0
- data/lib/jekyll/assets/hooks/configuration.rb +3 -0
- data/lib/jekyll/assets/hooks/context_patches.rb +12 -0
- data/lib/jekyll/assets/hooks/disable_erb.rb +6 -0
- data/lib/jekyll/assets/hooks/helpers.rb +8 -0
- data/lib/jekyll/assets/hooks/logger.rb +3 -0
- data/lib/jekyll/assets/hooks/sources.rb +5 -0
- data/lib/jekyll/assets/hooks/sprockets.rb +3 -0
- data/lib/jekyll/assets/hooks/version.rb +3 -0
- data/lib/jekyll/assets/liquid/filters.rb +16 -0
- data/lib/jekyll/assets/liquid/tag.rb +162 -0
- data/lib/jekyll/assets/liquid/tag/parser.rb +163 -0
- data/lib/jekyll/assets/liquid/tag/proxied_asset.rb +98 -0
- data/lib/jekyll/assets/liquid/tag/proxies.rb +122 -0
- data/lib/jekyll/assets/logger.rb +34 -11
- data/lib/jekyll/assets/patches/hash.rb +5 -0
- data/lib/jekyll/assets/patches/jekyll/cleaner.rb +2 -2
- data/lib/jekyll/assets/patches/kernel.rb +31 -0
- data/lib/jekyll/assets/patches/sprockets/asset.rb +6 -6
- data/lib/jekyll/assets/version.rb +1 -1
- data/lib/jekyll/hooks/initialize.rb +3 -0
- data/lib/jekyll/hooks/write_assets.rb +3 -0
- metadata +28 -17
- data/lib/jekyll/assets/configuration.rb +0 -51
- data/lib/jekyll/assets/context.rb +0 -23
- data/lib/jekyll/assets/extras/font-awesome.rb +0 -1
- data/lib/jekyll/assets/extras/helpers.rb +0 -6
- data/lib/jekyll/assets/extras/prefix.rb +0 -5
- data/lib/jekyll/assets/filters.rb +0 -17
- data/lib/jekyll/assets/helpers.rb +0 -37
- data/lib/jekyll/assets/hooks/post_read.rb +0 -3
- data/lib/jekyll/assets/hooks/post_write.rb +0 -3
- data/lib/jekyll/assets/tag.rb +0 -148
- data/lib/jekyll/assets/tag/parser.rb +0 -129
- data/lib/jekyll/assets/tag/proxied_asset.rb +0 -84
- data/lib/jekyll/assets/tag/proxies.rb +0 -86
- data/lib/jekyll/assets/tag/proxies/magick.rb +0 -101
@@ -0,0 +1,98 @@
|
|
1
|
+
require "forwardable"
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Assets
|
5
|
+
module Liquid
|
6
|
+
class Tag
|
7
|
+
class ProxiedAsset
|
8
|
+
attr_reader :args, :asset, :env
|
9
|
+
extend Forwardable
|
10
|
+
|
11
|
+
def_delegator :@asset, :liquid_tags
|
12
|
+
def_delegator :@asset, :content_type
|
13
|
+
def_delegator :@asset, :filename
|
14
|
+
|
15
|
+
def initialize(asset, args, env, tag)
|
16
|
+
@env = env
|
17
|
+
@asset = asset
|
18
|
+
@args = args
|
19
|
+
@tag = tag
|
20
|
+
|
21
|
+
cache_file
|
22
|
+
proxy_file
|
23
|
+
end
|
24
|
+
|
25
|
+
# -------------------------------------------------------------------
|
26
|
+
|
27
|
+
def cached?
|
28
|
+
@_cached
|
29
|
+
end
|
30
|
+
|
31
|
+
# -------------------------------------------------------------------
|
32
|
+
|
33
|
+
def source
|
34
|
+
File.binread(filename)
|
35
|
+
end
|
36
|
+
|
37
|
+
# -------------------------------------------------------------------
|
38
|
+
|
39
|
+
def filename
|
40
|
+
env.in_cache_dir(digest_path)
|
41
|
+
end
|
42
|
+
|
43
|
+
# -------------------------------------------------------------------
|
44
|
+
|
45
|
+
def digest
|
46
|
+
Digest::SHA2.hexdigest(args.proxies.to_s)
|
47
|
+
end
|
48
|
+
|
49
|
+
# -------------------------------------------------------------------
|
50
|
+
# We always digest a proxied asset so it's uniq based on what
|
51
|
+
# proxies you give us, it would be ignorant to treat it otherwise,
|
52
|
+
# we also make sure they are URL safe by digesting the args.
|
53
|
+
# -------------------------------------------------------------------
|
54
|
+
|
55
|
+
def logical_path
|
56
|
+
digest_path
|
57
|
+
end
|
58
|
+
|
59
|
+
# -------------------------------------------------------------------
|
60
|
+
|
61
|
+
def digest_path
|
62
|
+
name = asset.logical_path; ext = File.extname(name)
|
63
|
+
"#{File.basename(name, ext)}-#{digest}#{
|
64
|
+
ext
|
65
|
+
}"
|
66
|
+
end
|
67
|
+
|
68
|
+
# -------------------------------------------------------------------
|
69
|
+
|
70
|
+
def write_to(name)
|
71
|
+
File.binwrite(name, source)
|
72
|
+
end
|
73
|
+
|
74
|
+
# -------------------------------------------------------------------
|
75
|
+
|
76
|
+
private
|
77
|
+
def proxy_file
|
78
|
+
unless cached?
|
79
|
+
args.proxies.each do |key, val|
|
80
|
+
Proxies.get(key).first.fetch(:class).new(self, val).process
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# -------------------------------------------------------------------
|
86
|
+
|
87
|
+
private
|
88
|
+
def cache_file
|
89
|
+
if File.file?(filename)
|
90
|
+
@_cached = true else @_cached = false
|
91
|
+
FileUtils.cp asset.filename, filename
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Assets
|
3
|
+
module Liquid
|
4
|
+
class Tag
|
5
|
+
module Proxies
|
6
|
+
def self.add_by_class(_class, name, tag, *args)
|
7
|
+
names = [name, name.to_s, name.to_sym]
|
8
|
+
tags = [tag].flatten.map { |v| [v.to_s, v, v.to_sym] }
|
9
|
+
args = [args].flatten.map { |v| [v.to_s, v, v.to_sym] }
|
10
|
+
|
11
|
+
all << {
|
12
|
+
:name => names.uniq,
|
13
|
+
:tags => tags.flatten.uniq,
|
14
|
+
:args => args.flatten.uniq,
|
15
|
+
:class => _class
|
16
|
+
}
|
17
|
+
all
|
18
|
+
end
|
19
|
+
|
20
|
+
# -------------------------------------------------------------------
|
21
|
+
|
22
|
+
def self.add(name, tag, *args, &block)
|
23
|
+
add_by_class(*generate_class(name, tag, &block), *args)
|
24
|
+
end
|
25
|
+
|
26
|
+
# -------------------------------------------------------------------
|
27
|
+
|
28
|
+
def self.keys
|
29
|
+
all.select { |val| !val.fetch(:class).is_a?(Symbol) }.map do |v|
|
30
|
+
v[:name]
|
31
|
+
end. \
|
32
|
+
flatten
|
33
|
+
end
|
34
|
+
|
35
|
+
# -------------------------------------------------------------------
|
36
|
+
|
37
|
+
def self.base_keys
|
38
|
+
all.select { |val| val.fetch(:class).is_a?(Symbol) }.map do |v|
|
39
|
+
v[:name]
|
40
|
+
end. \
|
41
|
+
flatten
|
42
|
+
end
|
43
|
+
|
44
|
+
# -------------------------------------------------------------------
|
45
|
+
|
46
|
+
def self.has?(name, tag = nil, arg = nil)
|
47
|
+
get(name, tag, arg).any?
|
48
|
+
end
|
49
|
+
|
50
|
+
# -------------------------------------------------------------------
|
51
|
+
|
52
|
+
def self.get(name, tag = nil, arg = nil)
|
53
|
+
if name && tag && arg
|
54
|
+
get_by_name_and_tag_and_arg(
|
55
|
+
name, tag, arg
|
56
|
+
)
|
57
|
+
elsif name && tag
|
58
|
+
get_by_name_and_tag(
|
59
|
+
name, tag
|
60
|
+
)
|
61
|
+
else
|
62
|
+
all.select do |val|
|
63
|
+
val.fetch(:name).include?(name)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# -------------------------------------------------------------------
|
69
|
+
|
70
|
+
def self.get_by_name_and_tag_and_arg(name, tag, arg)
|
71
|
+
all.select do |val|
|
72
|
+
(val.fetch(:name).include?(name)) && \
|
73
|
+
(val.fetch(:tags).include?(:all) || \
|
74
|
+
val.fetch(:tags).include?(tag)) && \
|
75
|
+
(val.fetch(:args).include?( arg))
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# -------------------------------------------------------------------
|
80
|
+
|
81
|
+
def self.get_by_name_and_tag(name, tag)
|
82
|
+
all.select do |val|
|
83
|
+
(val.fetch(:name).include?(name)) &&
|
84
|
+
(val.fetch(:tags).include?(:all) || \
|
85
|
+
val.fetch(:tags).include?(tag))
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# -------------------------------------------------------------------
|
90
|
+
|
91
|
+
def self.all
|
92
|
+
@_all ||= Set.new
|
93
|
+
end
|
94
|
+
|
95
|
+
# -------------------------------------------------------------------
|
96
|
+
|
97
|
+
private
|
98
|
+
def self.generate_class(name, tag, &block)
|
99
|
+
_class = const_set(random_name, Class.new)
|
100
|
+
_class. class_eval(&block)
|
101
|
+
return _class, name, tag
|
102
|
+
end
|
103
|
+
|
104
|
+
# -------------------------------------------------------------------
|
105
|
+
|
106
|
+
private
|
107
|
+
def self.random_name
|
108
|
+
(0...12).map { ("a".."z").to_a.values_at(rand(26)) }.join.capitalize
|
109
|
+
end
|
110
|
+
|
111
|
+
# -------------------------------------------------------------------
|
112
|
+
|
113
|
+
# TODO: Put in a better place.
|
114
|
+
add_by_class :internal, :data, :all, ["@uri"]
|
115
|
+
add_by_class :internal, :sprockets, :all, [
|
116
|
+
"accept", "write_to"
|
117
|
+
]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
data/lib/jekyll/assets/logger.rb
CHANGED
@@ -1,22 +1,45 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module Assets
|
3
|
+
class Logger
|
4
|
+
Prefix="Jekyll Assets:"
|
5
|
+
def log
|
6
|
+
@_log ||= Jekyll.logger
|
7
|
+
end
|
3
8
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# it is passing on. Until then we are holding this.
|
9
|
+
# -----------------------------------------------------------------------
|
10
|
+
# Log Level: 1
|
11
|
+
# -----------------------------------------------------------------------
|
8
12
|
|
9
|
-
|
10
|
-
|
11
|
-
@logger ||= Jekyll.logger
|
13
|
+
def warn(msg = nil, &block)
|
14
|
+
log.warn(Prefix, (block_given?? block.call : msg))
|
12
15
|
end
|
13
16
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
# -----------------------------------------------------------------------
|
18
|
+
# Log Level: 1
|
19
|
+
# -----------------------------------------------------------------------
|
20
|
+
|
21
|
+
def error(msg = nil, &block)
|
22
|
+
log.error(Prefix, (block_given?? block.call : msg))
|
18
23
|
end
|
19
24
|
|
25
|
+
# -----------------------------------------------------------------------
|
26
|
+
# Log Level: 2
|
27
|
+
# -----------------------------------------------------------------------
|
28
|
+
|
29
|
+
def info(msg = nil, &block)
|
30
|
+
log.info(Prefix, (block_given?? block.call : msg))
|
31
|
+
end
|
32
|
+
|
33
|
+
# -----------------------------------------------------------------------
|
34
|
+
# Log Level: 3
|
35
|
+
# -----------------------------------------------------------------------
|
36
|
+
|
37
|
+
def debug(msg = nil, &block)
|
38
|
+
log.debug(Prefix, (block_given?? block.call : msg))
|
39
|
+
end
|
40
|
+
|
41
|
+
# -----------------------------------------------------------------------
|
42
|
+
|
20
43
|
def log_level=(*a)
|
21
44
|
raise RuntimeError, "Please set log levels on Jekyll.logger"
|
22
45
|
end
|
@@ -3,8 +3,8 @@ module Jekyll
|
|
3
3
|
# TODO: jekyll/jekyll@upstream: This method should really have a hook ya.
|
4
4
|
alias_method :_old_obsolete_files, :obsolete_files
|
5
5
|
def obsolete_files
|
6
|
-
_old_obsolete_files.delete_if do |
|
7
|
-
|
6
|
+
_old_obsolete_files.delete_if do |path|
|
7
|
+
path =~ %r!\A#{Regexp.escape(site.in_dest_dir("assets"))}(\/.*)?\Z!
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Kernel
|
2
|
+
def has_javascript?
|
3
|
+
require "execjs"
|
4
|
+
if block_given?
|
5
|
+
yield
|
6
|
+
end
|
7
|
+
rescue LoadError, ExecJS::RuntimeUnavailable
|
8
|
+
Jekyll.logger.debug("ExecJS or JS Runtime not available." \
|
9
|
+
" Skipping loading of library.")
|
10
|
+
end
|
11
|
+
|
12
|
+
def try_require(file)
|
13
|
+
require file
|
14
|
+
if block_given?
|
15
|
+
yield
|
16
|
+
end
|
17
|
+
rescue LoadError
|
18
|
+
return nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def try_require_if_javascript(file)
|
22
|
+
["execjs", file].map(&method(:require))
|
23
|
+
if block_given?
|
24
|
+
yield
|
25
|
+
end
|
26
|
+
rescue LoadError, ExecJS::RuntimeUnavailable
|
27
|
+
Jekyll.logger.debug("ExecJS, JS Runtime or `#{file}' not available." \
|
28
|
+
" Skipping the loading of libraries.")
|
29
|
+
return
|
30
|
+
end
|
31
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module Sprockets
|
2
2
|
class Asset
|
3
|
-
def
|
4
|
-
|
5
|
-
Base64.encode64(to_s)}"
|
3
|
+
def liquid_tags
|
4
|
+
metadata.fetch_or_store(:liquid_tags, Set.new)
|
6
5
|
end
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
# -------------------------------------------------------------------------
|
8
|
+
|
9
|
+
def data_uri
|
10
|
+
"data:#{content_type};base64,#{Rack::Utils.escape(Base64.encode64(to_s))}"
|
11
11
|
end
|
12
12
|
end
|
13
13
|
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: 2.0.0.pre.
|
4
|
+
version: 2.0.0.pre.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordon Bedwell
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-10-
|
13
|
+
date: 2015-10-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sprockets
|
@@ -128,29 +128,40 @@ files:
|
|
128
128
|
- Rakefile
|
129
129
|
- lib/jekyll-assets.rb
|
130
130
|
- lib/jekyll/assets.rb
|
131
|
+
- lib/jekyll/assets/addons/autoprefixer.rb
|
132
|
+
- lib/jekyll/assets/addons/bootstrap.rb
|
133
|
+
- lib/jekyll/assets/addons/compass.rb
|
134
|
+
- lib/jekyll/assets/addons/font_awesome.rb
|
135
|
+
- lib/jekyll/assets/addons/js_es6.rb
|
136
|
+
- lib/jekyll/assets/addons/proxies/magick.rb
|
131
137
|
- lib/jekyll/assets/cached.rb
|
132
|
-
- lib/jekyll/assets/
|
133
|
-
- lib/jekyll/assets/context.rb
|
138
|
+
- lib/jekyll/assets/config.rb
|
134
139
|
- lib/jekyll/assets/env.rb
|
135
|
-
- lib/jekyll/assets/extras/es6.rb
|
136
|
-
- lib/jekyll/assets/extras/font-awesome.rb
|
137
|
-
- lib/jekyll/assets/extras/helpers.rb
|
138
|
-
- lib/jekyll/assets/extras/prefix.rb
|
139
|
-
- lib/jekyll/assets/filters.rb
|
140
|
-
- lib/jekyll/assets/helpers.rb
|
141
140
|
- lib/jekyll/assets/hook.rb
|
142
|
-
- lib/jekyll/assets/hooks/
|
143
|
-
- lib/jekyll/assets/hooks/
|
141
|
+
- lib/jekyll/assets/hooks/cache.rb
|
142
|
+
- lib/jekyll/assets/hooks/compression.rb
|
143
|
+
- lib/jekyll/assets/hooks/configuration.rb
|
144
|
+
- lib/jekyll/assets/hooks/context_patches.rb
|
145
|
+
- lib/jekyll/assets/hooks/disable_erb.rb
|
146
|
+
- lib/jekyll/assets/hooks/helpers.rb
|
147
|
+
- lib/jekyll/assets/hooks/logger.rb
|
148
|
+
- lib/jekyll/assets/hooks/sources.rb
|
149
|
+
- lib/jekyll/assets/hooks/sprockets.rb
|
150
|
+
- lib/jekyll/assets/hooks/version.rb
|
151
|
+
- lib/jekyll/assets/liquid/filters.rb
|
152
|
+
- lib/jekyll/assets/liquid/tag.rb
|
153
|
+
- lib/jekyll/assets/liquid/tag/parser.rb
|
154
|
+
- lib/jekyll/assets/liquid/tag/proxied_asset.rb
|
155
|
+
- lib/jekyll/assets/liquid/tag/proxies.rb
|
144
156
|
- lib/jekyll/assets/logger.rb
|
157
|
+
- lib/jekyll/assets/patches/hash.rb
|
145
158
|
- lib/jekyll/assets/patches/jekyll/cleaner.rb
|
146
159
|
- lib/jekyll/assets/patches/jekyll/site.rb
|
160
|
+
- lib/jekyll/assets/patches/kernel.rb
|
147
161
|
- lib/jekyll/assets/patches/sprockets/asset.rb
|
148
|
-
- lib/jekyll/assets/tag.rb
|
149
|
-
- lib/jekyll/assets/tag/parser.rb
|
150
|
-
- lib/jekyll/assets/tag/proxied_asset.rb
|
151
|
-
- lib/jekyll/assets/tag/proxies.rb
|
152
|
-
- lib/jekyll/assets/tag/proxies/magick.rb
|
153
162
|
- lib/jekyll/assets/version.rb
|
163
|
+
- lib/jekyll/hooks/initialize.rb
|
164
|
+
- lib/jekyll/hooks/write_assets.rb
|
154
165
|
homepage: http://github.com/jekyll-assets/jekyll-assets/
|
155
166
|
licenses:
|
156
167
|
- MIT
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module Jekyll
|
2
|
-
module Assets
|
3
|
-
module Configuration
|
4
|
-
DEVELOPMENT = {
|
5
|
-
"skip_prefix_with_cdn" => false,
|
6
|
-
"prefix" => "/assets",
|
7
|
-
"digest" => false,
|
8
|
-
"assets" => [],
|
9
|
-
|
10
|
-
"compress" => {
|
11
|
-
"css" => false,
|
12
|
-
"js" => false
|
13
|
-
},
|
14
|
-
|
15
|
-
"sources" => [
|
16
|
-
"_assets/css", "_assets/stylesheets",
|
17
|
-
"_assets/images", "_assets/img", "_assets/fonts",
|
18
|
-
"_assets/javascripts", "_assets/js"
|
19
|
-
]
|
20
|
-
}
|
21
|
-
|
22
|
-
PRODUCTION = DEVELOPMENT.merge({
|
23
|
-
"digest" => true,
|
24
|
-
"compress" => {
|
25
|
-
"css" => true,
|
26
|
-
"js" => true
|
27
|
-
},
|
28
|
-
})
|
29
|
-
|
30
|
-
def self.defaults
|
31
|
-
%W(development test).include?(Jekyll.env) ? \
|
32
|
-
DEVELOPMENT : PRODUCTION
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.merge(merge_into, config = self.defaults)
|
36
|
-
merge_into = merge_into.dup
|
37
|
-
config.each_with_object(merge_into) do |(k, v), h|
|
38
|
-
if !h.has_key?(k) || (v.is_a?(Hash) && !h[k])
|
39
|
-
h[k] = v
|
40
|
-
|
41
|
-
elsif v.is_a?(Hash)
|
42
|
-
h[k] = merge h[k], \
|
43
|
-
v
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
merge_into
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|