jekyll-embed-urls 0.5.6 → 0.5.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jekyll/embed/cache.rb +1 -1
- data/lib/jekyll/embed/content.rb +2 -2
- data/lib/jekyll/embed.rb +23 -20
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '009ec95cb733855d621b7b063e4922c79873296fdebd99f16ad6f2856854a7af'
|
4
|
+
data.tar.gz: e56ca532db963a099a4c4c6950c4382ca25d83c5102703b8bf2d66fd98d8f2a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d60e0cfb3395976201a2b9b4174aaf1b888ef88fede4c802302002787471a0d8268c89d8d1cb447fa24bcebee7ac5f4ce83865b5770e0fe5ca38cd93ebb7e8e4
|
7
|
+
data.tar.gz: 4310e1aa4409b2724e8dfc9b68ecc96e4eabe83709a19cb7e5d3745a895b9e7bb32af78dece340f6c4e37807813582cdb07517253a40f739c7206db03db606f3
|
data/lib/jekyll/embed/cache.rb
CHANGED
data/lib/jekyll/embed/content.rb
CHANGED
@@ -5,7 +5,7 @@ require 'cgi'
|
|
5
5
|
module Jekyll
|
6
6
|
class Embed
|
7
7
|
class Content
|
8
|
-
URL_RE =
|
8
|
+
URL_RE = %r{(<p[^>]*>[\s\n]*(<a[^>]*>)?[\s\n]*(https?://[^<\s\n]+)[\s\n]*(</a>)?[\s\n]*</p>)}m.freeze
|
9
9
|
|
10
10
|
class << self
|
11
11
|
# Find URLs on paragraphs. We do it after rendering because
|
@@ -13,7 +13,7 @@ module Jekyll
|
|
13
13
|
# catch both.
|
14
14
|
def embed!(content)
|
15
15
|
content.gsub!(URL_RE) do |match|
|
16
|
-
url = CGI.unescapeHTML(
|
16
|
+
url = CGI.unescapeHTML(Regexp.last_match(3))
|
17
17
|
embed = Jekyll::Embed.embed url
|
18
18
|
|
19
19
|
if embed == url
|
data/lib/jekyll/embed.rb
CHANGED
@@ -13,7 +13,7 @@ require_relative 'embed/cache'
|
|
13
13
|
if Gem::Version.new(Jekyll::VERSION) >= Gem::Version.new('4.2.0')
|
14
14
|
require_relative 'embed/content'
|
15
15
|
else
|
16
|
-
Jekyll.logger.warn
|
16
|
+
Jekyll.logger.warn 'Upgrade to Jekyll >= 4.2.0 to embed URLs in content'
|
17
17
|
end
|
18
18
|
|
19
19
|
OEmbed::Providers.register_all
|
@@ -57,7 +57,8 @@ module Jekyll
|
|
57
57
|
|
58
58
|
# Directive from Feature Policy
|
59
59
|
# @see {https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy#directives}
|
60
|
-
DIRECTIVES = %w[accelerometer ambient-light-sensor autoplay battery camera display-capture document-domain
|
60
|
+
DIRECTIVES = %w[accelerometer ambient-light-sensor autoplay battery camera display-capture document-domain
|
61
|
+
encrypted-media execution-while-not-rendered execution-while-out-of-viewport fullscreen gamepad geolocation gyroscope layout-animations legacy-image-formats magnetometer microphone midi navigation-override oversized-images payment picture-in-picture publickey-credentials-get speaker-selection sync-xhr usb screen-wake-lock web-share xr-spatial-tracking].freeze
|
61
62
|
|
62
63
|
# Templates
|
63
64
|
INCLUDE_OGP = '{% include ogp.html site=site page=page %}'
|
@@ -84,13 +85,13 @@ module Jekyll
|
|
84
85
|
'rel' => %w[noopener noreferrer],
|
85
86
|
'target' => '_blank'
|
86
87
|
}
|
87
|
-
}
|
88
|
+
}.freeze
|
88
89
|
|
89
90
|
class << self
|
90
91
|
def site
|
91
92
|
unless @site
|
92
93
|
raise Jekyll::Errors::InvalidConfigurationError,
|
93
|
-
|
94
|
+
'Site is missing, configure with `Jekyll::Embed.site = site`'
|
94
95
|
end
|
95
96
|
|
96
97
|
@site
|
@@ -101,7 +102,7 @@ module Jekyll
|
|
101
102
|
# @param [Jekyll::Site]
|
102
103
|
# @return [Jekyll::Site]
|
103
104
|
def site=(site)
|
104
|
-
raise ArgumentError,
|
105
|
+
raise ArgumentError, 'Site must be a Jekyll::Site' unless site.is_a? Jekyll::Site
|
105
106
|
|
106
107
|
@site = site
|
107
108
|
|
@@ -130,15 +131,15 @@ module Jekyll
|
|
130
131
|
def reset
|
131
132
|
@allow_same_origin =
|
132
133
|
@cache =
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
134
|
+
@config =
|
135
|
+
@fallback_template =
|
136
|
+
@get_cache =
|
137
|
+
@http_client =
|
138
|
+
@info =
|
139
|
+
@ogp_template =
|
140
|
+
@payload =
|
141
|
+
@value_for_attr =
|
142
|
+
nil
|
142
143
|
end
|
143
144
|
|
144
145
|
# Render the URL as HTML
|
@@ -170,7 +171,9 @@ module Jekyll
|
|
170
171
|
# @return [Hash]
|
171
172
|
def config
|
172
173
|
@config ||= Jekyll::Utils.deep_merge_hashes(DEFAULT_CONFIG, (site.config['embed'] || {})).tap do |c|
|
173
|
-
c['attributes']['allow'].concat (DIRECTIVES - c.dig('attributes', 'allow').join.split(';').map
|
174
|
+
c['attributes']['allow'].concat (DIRECTIVES - c.dig('attributes', 'allow').join.split(';').map do |s|
|
175
|
+
s.split(' ').first
|
176
|
+
end).join(" 'none';|").split('|')
|
174
177
|
end
|
175
178
|
end
|
176
179
|
|
@@ -208,8 +211,8 @@ module Jekyll
|
|
208
211
|
|
209
212
|
%w[image video audio].each do |attr|
|
210
213
|
page[attr] = ogp.public_send(:"#{attr}s").find do |a|
|
211
|
-
http?
|
212
|
-
end
|
214
|
+
http? a.url
|
215
|
+
end&.url
|
213
216
|
end
|
214
217
|
|
215
218
|
context = info.dup
|
@@ -343,8 +346,8 @@ module Jekyll
|
|
343
346
|
@value_for_attr ||= {}
|
344
347
|
@value_for_attr[attr] ||=
|
345
348
|
case (value = config.dig('attributes', attr))
|
346
|
-
|
347
|
-
|
349
|
+
when String then value
|
350
|
+
when Array then value.join(' ')
|
348
351
|
end
|
349
352
|
end
|
350
353
|
|
@@ -355,7 +358,7 @@ module Jekyll
|
|
355
358
|
# @return [String]
|
356
359
|
def allow_same_origin(url)
|
357
360
|
unless site.config['url']
|
358
|
-
Jekyll.logger.warn
|
361
|
+
Jekyll.logger.warn 'Add url to _config.yml to determine if the site can embed itself'
|
359
362
|
return ' allow-same-origin'
|
360
363
|
end
|
361
364
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-embed-urls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- f
|
@@ -128,6 +128,20 @@ dependencies:
|
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: rubocop
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
131
145
|
description: Replaces URLs for their previsualization in Jekyll posts
|
132
146
|
email:
|
133
147
|
- f@sutty.nl
|