jekyll-embed-urls 0.4.5 → 0.5.0
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/_includes/fallback.html +16 -16
- data/_includes/ogp.html +8 -12
- data/lib/jekyll/embed.rb +17 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c93e9e9f911c9988829cddbd88afd919995cfd55fd51a21e917e81f7044ddbf
|
4
|
+
data.tar.gz: 748730c8fb90b9f37f02b5cb7461a08df1502a1700a02748837450451ab0627a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ac2e6bd99303c206cbcbe865d91f39cfc553c3d5f02d36c1ec88760a2fc757b805235f6054ae7f6d7d694d69e4f94af18a4202f635717ae13541cb9e491786c
|
7
|
+
data.tar.gz: f85276cd1f18db800686ff00f1cd00a83535c0c16a968b31175e6c4ba8f02492f791fdfd714de7657ac175d78da023f23a716bde46da55497ec2ac6d4a107897
|
data/_includes/fallback.html
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
|
2
|
-
{
|
3
|
-
|
4
|
-
{
|
1
|
+
{% if page.url contains "//archive.org/" or page.url contains "//www.archive.org/" %}
|
2
|
+
<iframe src="{{ page.url | replace: "/details/", "/embed/" | uri_escape }}"></iframe>
|
3
|
+
{% else %}
|
4
|
+
<article class="fallback" lang="{{ page.locale }}">
|
5
|
+
{%- if page.image -%}
|
6
|
+
<img src="{{ page.image | uri_escape }}" class="img-fluid" />
|
7
|
+
{%- endif -%}
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
</a>
|
16
|
-
</small><p>
|
17
|
-
</article>
|
9
|
+
<h1>{{ page.title }}</h1>
|
10
|
+
<p class="lead">{{ page.description }}</p>
|
11
|
+
<p>
|
12
|
+
<small>
|
13
|
+
<a href="{{ page.url | uri_escape }}">{{ page.url }}</a>
|
14
|
+
</small>
|
15
|
+
</p>
|
16
|
+
</article>
|
17
|
+
{% endif %}
|
data/_includes/ogp.html
CHANGED
@@ -1,23 +1,19 @@
|
|
1
1
|
<article class="ogp" lang="{{ page.locale }}">
|
2
2
|
{%- if page.video -%}
|
3
|
-
<video poster="{{ page.image }}" class="img-fluid"
|
3
|
+
<video poster="{{ page.image | uri_escape }}" class="img-fluid" src="{{ page.video | uri_escape }}"/>
|
4
4
|
{%- elsif page.image -%}
|
5
|
-
<img
|
5
|
+
<img src="{{ page.image | uri_escape }}" class="img-fluid" />
|
6
6
|
{%- endif -%}
|
7
7
|
|
8
8
|
{%- if page.audio -%}
|
9
|
-
<audio class="img-fluid"
|
9
|
+
<audio class="img-fluid" src="{{ page.audio | uri_escape }}"/>
|
10
10
|
{%- endif -%}
|
11
11
|
|
12
12
|
<h1>{{ page.title }}</h1>
|
13
13
|
<p class="lead">{{ page.description }}</p>
|
14
|
-
<p
|
15
|
-
<
|
16
|
-
href="{{ page.url }}"
|
17
|
-
|
18
|
-
|
19
|
-
rel="{{ embed.rel }}">
|
20
|
-
{{ page.url }}
|
21
|
-
</a>
|
22
|
-
</small><p>
|
14
|
+
<p>
|
15
|
+
<small>
|
16
|
+
<a href="{{ page.url | uri_escape }}">{{ page.url }}</a>
|
17
|
+
</small>
|
18
|
+
</p>
|
23
19
|
</article>
|
data/lib/jekyll/embed.rb
CHANGED
@@ -157,6 +157,7 @@ module Jekyll
|
|
157
157
|
raise URI::Error unless url.start_with? 'http'
|
158
158
|
|
159
159
|
# Just to verify the URL is valid
|
160
|
+
# TODO: Use Addressable
|
160
161
|
URI.parse url
|
161
162
|
|
162
163
|
oembed(url) || ogp(url) || fallback(url)
|
@@ -178,15 +179,13 @@ module Jekyll
|
|
178
179
|
# @param [String] URL
|
179
180
|
# @return [String,NilClass] Sanitized HTML or nil
|
180
181
|
def oembed(url)
|
181
|
-
cache.getset(url) do
|
182
|
+
cache.getset("oembed+#{url}") do
|
182
183
|
oembed = OEmbed::Providers.get url
|
183
184
|
|
184
185
|
# Prevent caching of nil?
|
185
186
|
raise OEmbed::Error unless oembed.respond_to? :html
|
186
187
|
|
187
|
-
|
188
|
-
# period.
|
189
|
-
cleanup(Loofah.fragment(oembed.html).scrub!(:prune), url).to_s
|
188
|
+
cleanup oembed.html, url
|
190
189
|
end
|
191
190
|
rescue OEmbed::Error
|
192
191
|
nil
|
@@ -196,12 +195,12 @@ module Jekyll
|
|
196
195
|
# @param [String] URL
|
197
196
|
# @return [String,NilClass]
|
198
197
|
def ogp(url)
|
199
|
-
cache.getset(url) do
|
198
|
+
cache.getset("ogp+#{url}") do
|
200
199
|
ogp = OGP::OpenGraph.new get(url).body
|
201
200
|
context = info.dup
|
202
201
|
context[:registers][:page] = payload['page'] = ogp.data
|
203
202
|
|
204
|
-
ogp_template.render!
|
203
|
+
cleanup ogp_template.render!(payload, context), url
|
205
204
|
end
|
206
205
|
rescue OGP::MalformedSourceError, OGP::MissingAttributeError, Faraday::Error
|
207
206
|
nil
|
@@ -209,7 +208,7 @@ module Jekyll
|
|
209
208
|
|
210
209
|
# Try something
|
211
210
|
def fallback(url)
|
212
|
-
cache.getset(url) do
|
211
|
+
cache.getset("fallback+#{url}") do
|
213
212
|
html = Nokogiri::HTML.fragment get(url).body
|
214
213
|
element = html.css('article').first
|
215
214
|
element ||= html.css('section').first
|
@@ -223,10 +222,11 @@ module Jekyll
|
|
223
222
|
'title' => text(title),
|
224
223
|
'description' => text(description),
|
225
224
|
'url' => url,
|
226
|
-
'image' => element&.css('img')&.first&.public_send(:[], 'src')
|
225
|
+
'image' => element&.css('img')&.first&.public_send(:[], 'src'),
|
226
|
+
'locale' => html.css('html')&.first&.public_send(:[], 'lang')
|
227
227
|
}
|
228
228
|
|
229
|
-
fallback_template.render!
|
229
|
+
cleanup fallback_template.render!(payload, context), url
|
230
230
|
end
|
231
231
|
rescue Faraday::Error, Nokogiri::SyntaxError
|
232
232
|
nil
|
@@ -252,7 +252,12 @@ module Jekyll
|
|
252
252
|
end
|
253
253
|
end
|
254
254
|
|
255
|
-
|
255
|
+
# @params :html_fragment [String]
|
256
|
+
# @params :url [String]
|
257
|
+
# @return [String]
|
258
|
+
def cleanup(html_fragment, url)
|
259
|
+
html = Loofah.fragment(html_fragment).scrub!(:prune)
|
260
|
+
|
256
261
|
# Add our own attributes
|
257
262
|
html.css('iframe').each do |iframe|
|
258
263
|
IFRAME_ATTRIBUTES.each do |attr|
|
@@ -291,8 +296,8 @@ module Jekyll
|
|
291
296
|
element['href'] = CGI.escapeHTML(UrlPrivacy.clean(CGI.unescapeHTML(element['href'])))
|
292
297
|
end
|
293
298
|
|
294
|
-
# Return the cleaned up HTML
|
295
|
-
html
|
299
|
+
# Return the cleaned up HTML as a String
|
300
|
+
html.to_s
|
296
301
|
end
|
297
302
|
|
298
303
|
def text(node)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-embed-urls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- f
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|