jekyll-assets 3.0.2 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +27 -16
- data/README.md +71 -2
- data/Rakefile +4 -11
- data/lib/jekyll/assets/config.rb +4 -1
- data/lib/jekyll/assets/env.rb +9 -1
- data/lib/jekyll/assets/html.rb +1 -2
- data/lib/jekyll/assets/patches/asset.rb +34 -0
- data/lib/jekyll/assets/patches/{cached_env.rb → cached.rb} +8 -26
- data/lib/jekyll/assets/patches/find_asset.rb +13 -0
- data/lib/jekyll/assets/patches/functions.rb +1 -1
- data/lib/jekyll/assets/patches/{obsolete_files.rb → obsolete.rb} +0 -0
- data/lib/jekyll/assets/patches/{sprockets.rb → site.rb} +0 -0
- data/lib/jekyll/assets/plugins/html/component.rb +25 -0
- data/lib/jekyll/assets/plugins/html/defaults/component.rb +53 -0
- data/lib/jekyll/assets/plugins/searcher.rb +5 -4
- data/lib/jekyll/assets/proxy.rb +15 -9
- data/lib/jekyll/assets/tag.rb +8 -7
- data/lib/jekyll/assets/utils.rb +22 -39
- data/lib/jekyll/assets/version.rb +1 -1
- metadata +9 -7
- data/lib/jekyll/assets/patches/sprockets_data_uri.rb +0 -12
- data/lib/jekyll/assets/writer.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e09e231ecd354951decf010d5f8193058bcc351e
|
4
|
+
data.tar.gz: f555fc1f07628cef09203f1dbb7436349830b473
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a38a8ff2fea63684ddc9f5aea3631fad09aa13082e84c42898b7ea49a0bbaff92584ef78479eee76959de8735a9cdf9e511a5d46ba446d403ea594f9592cd0e8
|
7
|
+
data.tar.gz: b0321b53da8d9de1bab59c7224bf66d9768c2c7db12a24e84d457991b6312a905d61152457b640461570c5d38ce44a3e9232a9e03cb3028c5537158e5188b875
|
data/Gemfile
CHANGED
@@ -5,26 +5,37 @@
|
|
5
5
|
source "https://rubygems.org"
|
6
6
|
gemspec
|
7
7
|
|
8
|
+
sv = "~> 4.0.beta"
|
9
|
+
gem "sprockets", ENV["SPROCKETS_VERSION"] || sv, require: false
|
10
|
+
gem "jekyll", ENV["JEKYLL_VERSION"], require: false if ENV["JEKYLL_VERSION"]
|
8
11
|
gem "rake", require: false
|
12
|
+
|
13
|
+
# --
|
9
14
|
group :development do
|
15
|
+
gem "travis", require: false
|
10
16
|
gem "mini_racer", require: false if RUBY_PLATFORM != "java"
|
11
17
|
gem "therubyrhino", require: false if RUBY_PLATFORM == "java"
|
12
|
-
gem "pry", require: false
|
13
|
-
end
|
18
|
+
gem "pry", require: false
|
14
19
|
|
15
|
-
group :test do
|
16
|
-
|
17
|
-
|
18
|
-
|
20
|
+
group :test do
|
21
|
+
gem "simplecov", require: false
|
22
|
+
gem "luna-rspec-formatters", require: false
|
23
|
+
gem "rubocop", require: false
|
24
|
+
end
|
19
25
|
end
|
20
26
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
gem "
|
28
|
-
gem "
|
29
|
-
gem "
|
30
|
-
gem "
|
27
|
+
# --
|
28
|
+
# Anything within this group is considered optional.
|
29
|
+
# You don't need it to run Jekyll-Assets, but they may
|
30
|
+
# provide more features for you to use.
|
31
|
+
# --
|
32
|
+
group :optionals do
|
33
|
+
gem "uglifier", require: false
|
34
|
+
gem "autoprefixer-rails", require: false
|
35
|
+
gem "font-awesome-sass", "~> 4.4", require: false
|
36
|
+
gem "image_optim_pack", "~> 0.5", require: false
|
37
|
+
gem "image_optim", "~> 0.25", require: false
|
38
|
+
gem "mini_magick", "~> 4.2", require: false
|
39
|
+
gem "babel-transpiler", require: false
|
40
|
+
gem "bootstrap", require: false
|
41
|
+
end
|
data/README.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
[![Code Climate](https://img.shields.io/codeclimate/maintainability/envygeeks/jekyll-assets.svg?style=for-the-badge)](https://codeclimate.com/github/envygeeks/jekyll-assets/maintainability)
|
1
|
+
[![Code Climate](https://img.shields.io/codeclimate/maintainability/envygeeks/jekyll-assets.svg?style=for-the-badge)](https://codeclimate.com/github/envygeeks/jekyll-assets/maintainability)
|
2
|
+
[![Code Climate](https://img.shields.io/codeclimate/coverage/github/envygeeks/jekyll-assets.svg?style=for-the-badge)](https://codeclimate.com/github/envygeeks/jekyll-assets/test_coverage)
|
3
|
+
[![Travis CI](https://img.shields.io/travis/envygeeks/jekyll-assets/master.svg?style=for-the-badge)](https://travis-ci.org/envygeeks/jekyll-assets)
|
4
|
+
[![Donate](https://img.shields.io/badge/-DONATE-yellow.svg?style=for-the-badge)](https://envygeeks.io#donate)
|
5
|
+
![Gem Version](https://img.shields.io/gem/v/jekyll-assets.svg?style=for-the-badge)
|
6
|
+
![Gem DL](https://img.shields.io/gem/dt/jekyll-assets.svg?style=for-the-badge)
|
2
7
|
|
3
8
|
# Jekyll Assets
|
4
9
|
|
@@ -31,7 +36,6 @@ gem "sprockets", "~> 4.0.beta", {
|
|
31
36
|
The configuration file is the same as Jekyll's, which is `_config.yml`. Except we use the special key "assets" inside of that file. Any environment variable noted as "val on `JEKYLL_ENV`" is only overridden when not explicitly set. All values listed below are default, you need not copy these into your configuration file unless you plan to change a value.
|
32
37
|
|
33
38
|
```yaml
|
34
|
-
digest: false
|
35
39
|
source_maps: true # false on JEKYLL_ENV=production
|
36
40
|
destination: "/assets"
|
37
41
|
compression: true
|
@@ -44,11 +48,29 @@ caching:
|
|
44
48
|
path: ".jekyll-cache/assets"
|
45
49
|
type: file # Possible values: memory, file
|
46
50
|
enabled: true
|
51
|
+
# --
|
52
|
+
# Assets you wish to always have compiled.
|
53
|
+
# This can also be combined with raw_precompile which
|
54
|
+
# copies assets without running through the pipeline
|
55
|
+
# making them ultra fast.
|
56
|
+
# --
|
47
57
|
precompile: []
|
58
|
+
raw_precompile: [
|
59
|
+
#
|
60
|
+
]
|
61
|
+
# --
|
62
|
+
# baseurl: whether or not to append site.baseurl
|
63
|
+
# destination: the folder you store them in on the CDN.
|
64
|
+
# url: the CDN url (fqdn, or w/ identifier).
|
65
|
+
# --
|
48
66
|
cdn:
|
49
67
|
baseurl: false
|
50
68
|
destination: false
|
51
69
|
url: null
|
70
|
+
# --
|
71
|
+
# These are all default. No need to add them
|
72
|
+
# Only use this if you have more.
|
73
|
+
# --
|
52
74
|
sources:
|
53
75
|
- assets/css
|
54
76
|
- assets/fonts
|
@@ -284,6 +306,53 @@ Using Liquid Drop `assets`, you can check whether an asset is present.
|
|
284
306
|
{{ src | asset:"@magick:2x magick:quality:92" }}
|
285
307
|
```
|
286
308
|
|
309
|
+
## Polymer WebComponents
|
310
|
+
|
311
|
+
We have basic support for WebComponents when using Sprockets `~> 4.0.0.beta`, this will allow you to place your HTML in the `_assets/components` folder, `{% asset myComponent.html %}`, and get an import, you can place your regular JS files inside of the normal structure.
|
312
|
+
|
313
|
+
### Example
|
314
|
+
|
315
|
+
***test.html***
|
316
|
+
|
317
|
+
```html
|
318
|
+
<!DOCTYPE html>
|
319
|
+
<html>
|
320
|
+
<head>
|
321
|
+
{% asset webcomponents.js %}
|
322
|
+
{% asset test.html %}
|
323
|
+
</head>
|
324
|
+
<body>
|
325
|
+
<contact-card starred>
|
326
|
+
{% asset profile.jpg %}
|
327
|
+
<span>Your Name</span>
|
328
|
+
</contact-card>
|
329
|
+
</body>
|
330
|
+
</body>
|
331
|
+
```
|
332
|
+
|
333
|
+
***_assets/components/test.html***
|
334
|
+
|
335
|
+
```html
|
336
|
+
<dom-module id="contact-card">
|
337
|
+
<template>
|
338
|
+
<style>/* ... */</style>
|
339
|
+
<slot></slot>
|
340
|
+
<iron-icon icon="star" hidden$="{{!starred}}"></iron-icon>
|
341
|
+
</template>
|
342
|
+
<script>
|
343
|
+
class ContactCard extends Polymer.Element {
|
344
|
+
static get is() { return "contact-card"; }
|
345
|
+
static get properties() {
|
346
|
+
return {
|
347
|
+
starred: { type: Boolean, value: false }
|
348
|
+
}
|
349
|
+
}
|
350
|
+
}
|
351
|
+
customElements.define(ContactCard.is, ContactCard);
|
352
|
+
</script>
|
353
|
+
</dom-module>
|
354
|
+
```
|
355
|
+
|
287
356
|
## Hooks
|
288
357
|
|
289
358
|
| Point | Name | Instance | Args |
|
data/Rakefile
CHANGED
@@ -2,14 +2,7 @@
|
|
2
2
|
# Copyright: 2012 - 2017 - MIT License
|
3
3
|
# Encoding: utf-8
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
$stderr = STDERR
|
10
|
-
|
11
|
-
# --
|
12
|
-
RSpec::Core::RakeTask.new(:spec)
|
13
|
-
RuboCop::RakeTask.new(:rubocop) { |t| t.options = %w(--format=e --parallel) }
|
14
|
-
Rake::Task[:spec].enhance { Rake::Task[:rubocop].invoke }
|
15
|
-
task default: %i(spec rubocop)
|
5
|
+
task(:spec) { sh "script/test" }
|
6
|
+
task(:test) { sh "script/test" }
|
7
|
+
task(:rubocop) { sh "script/lint" }
|
8
|
+
task(:lint) { sh "script/lint" }
|
data/lib/jekyll/assets/config.rb
CHANGED
@@ -12,7 +12,7 @@ module Jekyll
|
|
12
12
|
module Assets
|
13
13
|
class Config < HashWithIndifferentAccess
|
14
14
|
DEVELOPMENT = {
|
15
|
-
digest:
|
15
|
+
digest: true,
|
16
16
|
precompile: [],
|
17
17
|
source_maps: true,
|
18
18
|
destination: "/assets",
|
@@ -46,6 +46,7 @@ module Jekyll
|
|
46
46
|
assets/images
|
47
47
|
assets/videos
|
48
48
|
assets/audios
|
49
|
+
assets/components
|
49
50
|
assets/javascript
|
50
51
|
assets/video
|
51
52
|
assets/audio
|
@@ -58,6 +59,7 @@ module Jekyll
|
|
58
59
|
_assets/images
|
59
60
|
_assets/videos
|
60
61
|
_assets/audios
|
62
|
+
_assets/components
|
61
63
|
_assets/javascript
|
62
64
|
_assets/video
|
63
65
|
_assets/audio
|
@@ -70,6 +72,7 @@ module Jekyll
|
|
70
72
|
images
|
71
73
|
videos
|
72
74
|
audios
|
75
|
+
components
|
73
76
|
javascript
|
74
77
|
audio
|
75
78
|
video
|
data/lib/jekyll/assets/env.rb
CHANGED
@@ -49,6 +49,7 @@ module Jekyll
|
|
49
49
|
|
50
50
|
setup_sources!
|
51
51
|
enable_compression!
|
52
|
+
ignore_caches!
|
52
53
|
setup_drops!
|
53
54
|
precompile!
|
54
55
|
copy_raw!
|
@@ -115,6 +116,14 @@ module Jekyll
|
|
115
116
|
end
|
116
117
|
end
|
117
118
|
|
119
|
+
# --
|
120
|
+
private
|
121
|
+
def ignore_caches!
|
122
|
+
jekyll.config["exclude"] ||= []
|
123
|
+
jekyll.config["exclude"].push(asset_config[:caching][:path])
|
124
|
+
jekyll.config["exclude"].uniq!
|
125
|
+
end
|
126
|
+
|
118
127
|
# --
|
119
128
|
private
|
120
129
|
def enable_compression!
|
@@ -173,7 +182,6 @@ module Jekyll
|
|
173
182
|
require_all "plugins/html/defaults/*"
|
174
183
|
require_all "plugins/html/*"
|
175
184
|
require_relative "context"
|
176
|
-
require_relative "writer"
|
177
185
|
|
178
186
|
require_relative "map" unless old_sprockets?
|
179
187
|
Hook.register :env, :after_init, priority: 3 do
|
data/lib/jekyll/assets/html.rb
CHANGED
@@ -80,8 +80,7 @@ module Jekyll
|
|
80
80
|
def self.make_doc(builders, asset:)
|
81
81
|
wants = builders.map(&:wants_xml?).uniq
|
82
82
|
raise "incompatible wants xml/html for builders" if wants.size > 1
|
83
|
-
!wants[0] ?
|
84
|
-
Nokogiri::XML.parse(asset.to_s)
|
83
|
+
!wants[0] ? Utils.html_fragment("") : Utils.xml(asset.to_s)
|
85
84
|
end
|
86
85
|
end
|
87
86
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Frozen-string-literal: true
|
2
|
+
# Copyright: 2012 - 2017 - MIT License
|
3
|
+
# Encoding: utf-8
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module Assets
|
7
|
+
module Patches
|
8
|
+
module Sprockets
|
9
|
+
module Asset
|
10
|
+
attr_accessor :environment
|
11
|
+
|
12
|
+
# --
|
13
|
+
def digest_path
|
14
|
+
environment.asset_config[:digest] ? \
|
15
|
+
super : logical_path
|
16
|
+
end
|
17
|
+
|
18
|
+
# --
|
19
|
+
def data_uri
|
20
|
+
"data:#{content_type};base64,#{Rack::Utils.escape(
|
21
|
+
Base64.encode64(to_s))}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# --
|
30
|
+
module Sprockets
|
31
|
+
class Asset
|
32
|
+
prepend Jekyll::Assets::Patches::Sprockets::Asset
|
33
|
+
end
|
34
|
+
end
|
@@ -36,34 +36,16 @@ module Jekyll
|
|
36
36
|
end
|
37
37
|
|
38
38
|
# --
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
# --
|
43
|
-
unless Sprockets::CachedEnvironment.method_defined?(:find_asset!)
|
44
|
-
|
45
|
-
# --
|
46
|
-
# Copyright 2017 Sprockets.
|
47
|
-
# @url https://github.com/rails/sprockets
|
48
|
-
# @license MIT
|
49
|
-
# --
|
50
|
-
def find_asset!(*args)
|
51
|
-
uri, = resolve!(*args)
|
52
|
-
if uri
|
53
|
-
load(uri)
|
54
|
-
end
|
39
|
+
def find_asset(*)
|
40
|
+
super.tap do |v|
|
41
|
+
v.environment = self
|
55
42
|
end
|
43
|
+
end
|
56
44
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
# So we need to add it there.
|
62
|
-
# --
|
63
|
-
class Sprockets::Base
|
64
|
-
def find_asset!(*args)
|
65
|
-
cached.send(__method__, *args)
|
66
|
-
end
|
45
|
+
# --
|
46
|
+
def find_asset!(*args)
|
47
|
+
load(resolve!(*args).first).tap do |v|
|
48
|
+
v.environment = self
|
67
49
|
end
|
68
50
|
end
|
69
51
|
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Frozen-string-literal: true
|
2
|
+
# Copyright: 2012 - 2017 - MIT License
|
3
|
+
# Encoding: utf-8
|
4
|
+
|
5
|
+
require "jekyll/assets"
|
6
|
+
require "nokogiri"
|
7
|
+
|
8
|
+
module Jekyll
|
9
|
+
module Assets
|
10
|
+
class HTML
|
11
|
+
class Component < HTML
|
12
|
+
content_types "text/html"
|
13
|
+
|
14
|
+
# --
|
15
|
+
def run
|
16
|
+
Nokogiri::HTML::Builder.with(doc) do |d|
|
17
|
+
d.link args.to_h({
|
18
|
+
html: true, skip: HTML.skips
|
19
|
+
})
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Frozen-string-literal: true
|
2
|
+
# Copyright: 2012 - 2017 - MIT License
|
3
|
+
# Encoding: utf-8
|
4
|
+
|
5
|
+
require "jekyll/assets"
|
6
|
+
|
7
|
+
module Jekyll
|
8
|
+
module Assets
|
9
|
+
class Default
|
10
|
+
class Component < Default
|
11
|
+
content_types "text/html"
|
12
|
+
|
13
|
+
def set_href
|
14
|
+
dpath = @asset.digest_path
|
15
|
+
return @args[:href] = @asset.url if @asset.is_a?(Url)
|
16
|
+
return @args[:href] = @env.prefix_url(dpath) unless @args[:inline]
|
17
|
+
@args[:href] = @asset.data_uri
|
18
|
+
end
|
19
|
+
|
20
|
+
# --
|
21
|
+
def set_rel
|
22
|
+
@args[:rel] = "import"
|
23
|
+
end
|
24
|
+
|
25
|
+
# --
|
26
|
+
def set_integrity
|
27
|
+
return unless integrity?
|
28
|
+
@args[:integrity] = @asset.integrity
|
29
|
+
unless @args.key?(:crossorigin)
|
30
|
+
@args[:crossorigin] = "anonymous"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# --
|
35
|
+
def integrity?
|
36
|
+
config[:integrity] && !@asset.is_a?(Url) &&
|
37
|
+
!@args.key?(:integrity)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# --
|
45
|
+
Jekyll::Assets::Hook.register :config, :before_merge do |c|
|
46
|
+
c.deep_merge!({
|
47
|
+
defaults: {
|
48
|
+
component: {
|
49
|
+
integrity: Jekyll.production?,
|
50
|
+
},
|
51
|
+
},
|
52
|
+
})
|
53
|
+
end
|
@@ -57,9 +57,8 @@ module Jekyll
|
|
57
57
|
# @see https://github.com/sparklemotion/nokogiri/issues/553
|
58
58
|
good, buggy = Encoding::UTF_8, Encoding::ASCII_8BIT
|
59
59
|
out = out.encode good if out.encoding == buggy
|
60
|
-
|
61
|
-
|
62
|
-
:fragment), out)
|
60
|
+
Utils.send((@doc.output.strip =~ %r!<\!doctype\s+!i ? \
|
61
|
+
:html : :html_fragment), out)
|
63
62
|
end
|
64
63
|
end
|
65
64
|
end
|
@@ -68,5 +67,7 @@ module Jekyll
|
|
68
67
|
end
|
69
68
|
|
70
69
|
Jekyll::Hooks.register [:pages, :documents, :posts], :post_render do |d|
|
71
|
-
|
70
|
+
if d.output_ext == ".html"
|
71
|
+
Jekyll::Assets::Plugins::Searcher.new(d).run
|
72
|
+
end
|
72
73
|
end
|
data/lib/jekyll/assets/proxy.rb
CHANGED
@@ -11,8 +11,6 @@ module Jekyll
|
|
11
11
|
module Assets
|
12
12
|
class Proxy < Extensible
|
13
13
|
attr_reader :file
|
14
|
-
DIG = Digest::SHA256
|
15
|
-
DIR = "proxied"
|
16
14
|
|
17
15
|
class Deleted < StandardError
|
18
16
|
def initialize(obj)
|
@@ -68,18 +66,26 @@ module Jekyll
|
|
68
66
|
# --
|
69
67
|
def self.copy(asset, ctx:, args:)
|
70
68
|
env = ctx.registers[:site].sprockets
|
71
|
-
raw = args.instance_variable_get(:@raw)
|
72
|
-
key = DIG.hexdigest(raw)[0, 6]
|
73
69
|
|
74
|
-
path = env.in_cache_dir(
|
70
|
+
path = env.in_cache_dir("proxied")
|
75
71
|
extname = File.extname(args[:argv1])
|
76
|
-
out = Pathutil.new(path).join(
|
77
|
-
|
78
|
-
|
72
|
+
out = Pathutil.new(path).join(digest(args))
|
73
|
+
.sub_ext(extname)
|
74
|
+
|
75
|
+
unless out.file?
|
76
|
+
out.dirname.mkdir_p
|
77
|
+
Pathutil.new(asset.filename)
|
78
|
+
.cp(out)
|
79
|
+
end
|
79
80
|
|
80
81
|
out
|
81
82
|
end
|
82
83
|
|
84
|
+
def self.digest(args)
|
85
|
+
Digest::SHA256.hexdigest(args.instance_variable_get(
|
86
|
+
:@raw))[0, 6]
|
87
|
+
end
|
88
|
+
|
83
89
|
# --
|
84
90
|
# @return [Symbol] the argument key.
|
85
91
|
# Allows you to tell the proxier which args are yours.
|
@@ -105,5 +111,5 @@ module Jekyll
|
|
105
111
|
end
|
106
112
|
|
107
113
|
Jekyll::Assets::Hook.register :env, :after_init do
|
108
|
-
append_path(in_cache_dir(
|
114
|
+
append_path(in_cache_dir("proxied"))
|
109
115
|
end
|
data/lib/jekyll/assets/tag.rb
CHANGED
@@ -42,19 +42,20 @@ module Jekyll
|
|
42
42
|
# --
|
43
43
|
def initialize(tag, args, tokens)
|
44
44
|
@tag = tag.to_sym
|
45
|
-
@args = Liquid::Tag::Parser.new(args)
|
46
45
|
@tokens = tokens
|
47
|
-
@
|
46
|
+
@args = args
|
48
47
|
super
|
49
48
|
end
|
50
49
|
|
51
50
|
# --
|
52
51
|
def render_raw(ctx)
|
53
|
-
env
|
54
|
-
|
52
|
+
env = ctx.registers[:site].sprockets
|
53
|
+
|
54
|
+
args = Liquid::Tag::Parser.new(@args)
|
55
|
+
args = env.parse_liquid(args, ctx: ctx)
|
55
56
|
raise Sprockets::FileNotFound, "UNKNOWN" unless args.key?(:argv1)
|
56
57
|
asset = external(ctx, args: args) if env.external?(args)
|
57
|
-
asset ||= internal(ctx)
|
58
|
+
asset ||= internal(ctx, args: args)
|
58
59
|
[args, asset]
|
59
60
|
end
|
60
61
|
|
@@ -81,7 +82,7 @@ module Jekyll
|
|
81
82
|
# --
|
82
83
|
rescue ExecJS::RuntimeError => e
|
83
84
|
env.logger.error e.message
|
84
|
-
env.logger.efile
|
85
|
+
env.logger.efile args[:argv1]
|
85
86
|
raise ExecJS::RuntimeError, \
|
86
87
|
"JS Error"
|
87
88
|
# --
|
@@ -154,7 +155,7 @@ module Jekyll
|
|
154
155
|
# Set's up an internal asset using `Sprockets::Asset`
|
155
156
|
# @return [Sprockets::Asset]
|
156
157
|
# --
|
157
|
-
def internal(ctx)
|
158
|
+
def internal(ctx, args:)
|
158
159
|
env = ctx.registers[:site].sprockets
|
159
160
|
original = env.find_asset!(args[:argv1])
|
160
161
|
Default.set(args, ctx: ctx, asset: original)
|
data/lib/jekyll/assets/utils.rb
CHANGED
@@ -5,6 +5,28 @@
|
|
5
5
|
module Jekyll
|
6
6
|
module Assets
|
7
7
|
module Utils
|
8
|
+
def self.html_fragment(*a)
|
9
|
+
Nokogiri::HTML.fragment(*a) do |c|
|
10
|
+
c.options = Nokogiri::XML::ParseOptions::NONET | \
|
11
|
+
Nokogiri::XML::ParseOptions::NOENT
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# --
|
16
|
+
def self.html(*a)
|
17
|
+
Nokogiri::HTML.parse(*a) do |c|
|
18
|
+
c.options = Nokogiri::XML::ParseOptions::NONET | \
|
19
|
+
Nokogiri::XML::ParseOptions::NOENT
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# --
|
24
|
+
def self.xml(*a)
|
25
|
+
Nokogiri::XML.parse(*a) do |c|
|
26
|
+
c.options = Nokogiri::XML::ParseOptions::NONET
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
8
30
|
def raw_precompiles
|
9
31
|
asset_config[:raw_precompile].each_with_object([]) do |v, a|
|
10
32
|
if v.is_a?(Hash)
|
@@ -304,45 +326,6 @@ module Jekyll
|
|
304
326
|
rescue ExecJS::RuntimeUnavailable
|
305
327
|
nil
|
306
328
|
end
|
307
|
-
|
308
|
-
# --
|
309
|
-
# @param [Jekyll::Site] site
|
310
|
-
# @param [Hash<Symbol,Object>] payload
|
311
|
-
# Try to replicate and run hooks the Jekyll would normally run.
|
312
|
-
# rubocop:disable Metrics/LineLength
|
313
|
-
# @return nil
|
314
|
-
# --
|
315
|
-
def run_liquid_hooks(payload, site)
|
316
|
-
Hook.trigger(:liquid, :pre_render) { |h| h.call(payload, site) }
|
317
|
-
post, page, doc = get_liquid_obj(payload, site)
|
318
|
-
|
319
|
-
# I would assume most people set in :pre_render logically?
|
320
|
-
Jekyll::Hooks.trigger(:posts, :pre_render, post, payload) if post
|
321
|
-
Jekyll::Hooks.trigger(:documents, :pre_render, post || doc, payload) if post || doc
|
322
|
-
Jekyll::Hooks.trigger(:pages, :pre_render, page, payload) if page
|
323
|
-
end
|
324
|
-
|
325
|
-
# --
|
326
|
-
# @param [Jekyll::Site] site
|
327
|
-
# @param [Hash<Symbol,Object>] payload
|
328
|
-
# Discovers the Jekyll object, corresponding to the type.
|
329
|
-
# @note this allows us to trigger hooks that Jekyll would trigger.
|
330
|
-
# @return [Jekyll::Document, Jekyll::Page]
|
331
|
-
# rubocop:disable Layout/ExtraSpacing
|
332
|
-
# --
|
333
|
-
def get_liquid_obj(payload, site)
|
334
|
-
path = payload["path"]
|
335
|
-
|
336
|
-
post = site.posts.docs.find { |v| v.relative_path == path }
|
337
|
-
docs = site. documents.find { |v| v.relative_path == path } unless post
|
338
|
-
page = site. pages.find { |v| v.relative_path == path } unless docs
|
339
|
-
|
340
|
-
[
|
341
|
-
post,
|
342
|
-
page,
|
343
|
-
docs,
|
344
|
-
]
|
345
|
-
end
|
346
329
|
end
|
347
330
|
end
|
348
331
|
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: 3.0.
|
4
|
+
version: 3.0.3
|
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: 2017-11-
|
13
|
+
date: 2017-11-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: execjs
|
@@ -217,18 +217,21 @@ files:
|
|
217
217
|
- lib/jekyll/assets/map/css.rb
|
218
218
|
- lib/jekyll/assets/map/javascript.rb
|
219
219
|
- lib/jekyll/assets/map/writer.rb
|
220
|
-
- lib/jekyll/assets/patches/
|
220
|
+
- lib/jekyll/assets/patches/asset.rb
|
221
|
+
- lib/jekyll/assets/patches/cached.rb
|
222
|
+
- lib/jekyll/assets/patches/find_asset.rb
|
221
223
|
- lib/jekyll/assets/patches/functions.rb
|
222
|
-
- lib/jekyll/assets/patches/
|
223
|
-
- lib/jekyll/assets/patches/
|
224
|
-
- lib/jekyll/assets/patches/sprockets_data_uri.rb
|
224
|
+
- lib/jekyll/assets/patches/obsolete.rb
|
225
|
+
- lib/jekyll/assets/patches/site.rb
|
225
226
|
- lib/jekyll/assets/plugins.rb
|
226
227
|
- lib/jekyll/assets/plugins/bootstrap.rb
|
227
228
|
- lib/jekyll/assets/plugins/font-awesome.rb
|
228
229
|
- lib/jekyll/assets/plugins/frontmatter.rb
|
229
230
|
- lib/jekyll/assets/plugins/html/audio.rb
|
231
|
+
- lib/jekyll/assets/plugins/html/component.rb
|
230
232
|
- lib/jekyll/assets/plugins/html/css.rb
|
231
233
|
- lib/jekyll/assets/plugins/html/defaults/audio.rb
|
234
|
+
- lib/jekyll/assets/plugins/html/defaults/component.rb
|
232
235
|
- lib/jekyll/assets/plugins/html/defaults/css.rb
|
233
236
|
- lib/jekyll/assets/plugins/html/defaults/favicon.rb
|
234
237
|
- lib/jekyll/assets/plugins/html/defaults/img.rb
|
@@ -252,7 +255,6 @@ files:
|
|
252
255
|
- lib/jekyll/assets/url.rb
|
253
256
|
- lib/jekyll/assets/utils.rb
|
254
257
|
- lib/jekyll/assets/version.rb
|
255
|
-
- lib/jekyll/assets/writer.rb
|
256
258
|
homepage: http://github.com/jekyll/jekyll-assets/
|
257
259
|
licenses:
|
258
260
|
- MIT
|
data/lib/jekyll/assets/writer.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# Frozen-string-literal: true
|
2
|
-
# Copyright: 2012 - 2017 - MIT License
|
3
|
-
# Encoding: utf-8
|
4
|
-
|
5
|
-
unless Jekyll::Assets::Env.old_sprockets?
|
6
|
-
require "sprockets/exporters/base"
|
7
|
-
|
8
|
-
module Sprockets
|
9
|
-
module Exporters
|
10
|
-
class FileExporter < Exporters::Base
|
11
|
-
def skip?(logger)
|
12
|
-
dest = environment.in_dest_dir + "/"
|
13
|
-
out, pth = nil, target.sub(dest, "")
|
14
|
-
|
15
|
-
if File.exist?(target)
|
16
|
-
logger.debug "Skips #{pth}" do
|
17
|
-
out = true
|
18
|
-
end
|
19
|
-
else
|
20
|
-
logger.debug "Write #{pth}" do
|
21
|
-
out = false
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
out
|
26
|
-
end
|
27
|
-
|
28
|
-
def call
|
29
|
-
write target do |f|
|
30
|
-
f.write asset.source
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|