jekyll-embed-urls 0.5.2.1 → 0.5.6
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 +2 -2
- data/_includes/ogp.html +2 -2
- data/lib/jekyll/embed/content.rb +10 -3
- data/lib/jekyll/embed.rb +27 -2
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e6e72a30b43d661e9c852d548f48ba8f600cbbde41e6873489cf9ceb3d4435c
|
4
|
+
data.tar.gz: dd437ba4bbfa32d8e9c26792a3547672ae4197d8b23029b538d3a1ca814e64b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c6cb5356446f930287dd1feca9ac024db143a0f3bf531dc19f94e6e7b4a2602125a2b20bafb1029da46ad15c4cdfcbb4c2e783967f6bba16e1b21310c496557
|
7
|
+
data.tar.gz: b98314a98b042a9c7cf1f9cfbeacce6662d11b6c5ec8d6d85e0d96ea3f2bc32d0e0bcea8cf3fd387b7872fcbeb0555d2873ff242dc84f8e503e40a2374f23140
|
data/_includes/fallback.html
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
<img src="{{ page.image | uri_escape }}" class="img-fluid" />
|
7
7
|
{%- endif -%}
|
8
8
|
|
9
|
-
<h1>{{ page.title }}</h1>
|
10
|
-
<p class="lead">{{ page.description }}</p>
|
9
|
+
<h1>{{ page.title | escape_once }}</h1>
|
10
|
+
<p class="lead">{{ page.description | escape_once }}</p>
|
11
11
|
<p>
|
12
12
|
<small>
|
13
13
|
<a href="{{ page.url | uri_escape }}">{{ page.url }}</a>
|
data/_includes/ogp.html
CHANGED
@@ -9,8 +9,8 @@
|
|
9
9
|
<audio class="img-fluid" src="{{ page.audio | uri_escape }}"/>
|
10
10
|
{%- endif -%}
|
11
11
|
|
12
|
-
<h1>{{ page.title }}</h1>
|
13
|
-
<p class="lead">{{ page.description }}</p>
|
12
|
+
<h1>{{ page.title | escape_once }}</h1>
|
13
|
+
<p class="lead">{{ page.description | escape_once }}</p>
|
14
14
|
<p>
|
15
15
|
<small>
|
16
16
|
<a href="{{ page.url | uri_escape }}">{{ page.url }}</a>
|
data/lib/jekyll/embed/content.rb
CHANGED
@@ -5,15 +5,22 @@ require 'cgi'
|
|
5
5
|
module Jekyll
|
6
6
|
class Embed
|
7
7
|
class Content
|
8
|
-
URL_RE = /(<p[^>]*>[\s\n]*(https?:\/\/[^<\s\n]+)[\s\n]*<\/p>)/m.freeze
|
8
|
+
URL_RE = /(<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
|
12
12
|
# sometimes we use HTML instead of pure Markdown and this way we
|
13
13
|
# catch both.
|
14
14
|
def embed!(content)
|
15
|
-
content.gsub!(URL_RE) do |
|
16
|
-
|
15
|
+
content.gsub!(URL_RE) do |match|
|
16
|
+
url = CGI.unescapeHTML($3)
|
17
|
+
embed = Jekyll::Embed.embed url
|
18
|
+
|
19
|
+
if embed == url
|
20
|
+
match
|
21
|
+
else
|
22
|
+
embed
|
23
|
+
end
|
17
24
|
end
|
18
25
|
end
|
19
26
|
end
|
data/lib/jekyll/embed.rb
CHANGED
@@ -160,7 +160,7 @@ module Jekyll
|
|
160
160
|
# TODO: Use Addressable
|
161
161
|
URI.parse url
|
162
162
|
|
163
|
-
oembed(url) || ogp(url) || fallback(url)
|
163
|
+
oembed(url) || ogp(url) || fallback(url) || url
|
164
164
|
rescue URI::Error
|
165
165
|
Jekyll.logger.warn "#{url.inspect} is not a valid URL"
|
166
166
|
|
@@ -197,8 +197,23 @@ module Jekyll
|
|
197
197
|
def ogp(url)
|
198
198
|
cache.getset("ogp+#{url}") do
|
199
199
|
ogp = OGP::OpenGraph.new get(url).body
|
200
|
+
page = {
|
201
|
+
locale: ogp.locales.first,
|
202
|
+
title: ogp.title,
|
203
|
+
url: ogp.url,
|
204
|
+
description: ogp.description,
|
205
|
+
type: ogp.type,
|
206
|
+
data: ogp.data
|
207
|
+
}.transform_keys(&:to_s)
|
208
|
+
|
209
|
+
%w[image video audio].each do |attr|
|
210
|
+
page[attr] = ogp.public_send(:"#{attr}s").find do |a|
|
211
|
+
http? i.url
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
200
215
|
context = info.dup
|
201
|
-
context[:registers][:page] = payload['page'] =
|
216
|
+
context[:registers][:page] = payload['page'] = page
|
202
217
|
|
203
218
|
cleanup ogp_template.render!(payload, context), url
|
204
219
|
end
|
@@ -355,6 +370,16 @@ module Jekyll
|
|
355
370
|
def payload
|
356
371
|
@payload ||= site.site_payload
|
357
372
|
end
|
373
|
+
|
374
|
+
# Discover if a string is a valid HTTP URL
|
375
|
+
#
|
376
|
+
# @param :url [String]
|
377
|
+
# @return [Boolean]
|
378
|
+
def http?(url)
|
379
|
+
url.start_with?('http') && URI.parse(url).is_a?(URI::HTTP)
|
380
|
+
rescue URI::Error
|
381
|
+
false
|
382
|
+
end
|
358
383
|
end
|
359
384
|
end
|
360
385
|
end
|
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.5.
|
4
|
+
version: 0.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- f
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -58,14 +58,20 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.5.0
|
62
|
+
- - "<"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0.6'
|
62
65
|
type: :runtime
|
63
66
|
prerelease: false
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
65
68
|
requirements:
|
66
69
|
- - "~>"
|
67
70
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
71
|
+
version: 0.5.0
|
72
|
+
- - "<"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0.6'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: faraday
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|