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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0d11b19f16157c809c01247693974be13edc000f98a2bb1c329195dcbcbbd63
4
- data.tar.gz: 47025e3ef114b859e01d255da155e1a5339a4a1cc8c080e6b5b737d60379d100
3
+ metadata.gz: 0e6e72a30b43d661e9c852d548f48ba8f600cbbde41e6873489cf9ceb3d4435c
4
+ data.tar.gz: dd437ba4bbfa32d8e9c26792a3547672ae4197d8b23029b538d3a1ca814e64b7
5
5
  SHA512:
6
- metadata.gz: d38b872755e5e6ee32c0ac3220820f8cd5e42cb309ae710dfd665700c7a3c779a743ed7c2e127265048123f985686083f7d293712fe7d107f84bc5be311e1d8a
7
- data.tar.gz: c762ed1d8802dd516767c6b29a995a2c80f74478af9fdb675ba05a1fca1b03b5d19ed547b4cbaf6cc25d84a30061c26abe74cc37b9d1cc680ac251fac8af4060
6
+ metadata.gz: 9c6cb5356446f930287dd1feca9ac024db143a0f3bf531dc19f94e6e7b4a2602125a2b20bafb1029da46ad15c4cdfcbb4c2e783967f6bba16e1b21310c496557
7
+ data.tar.gz: b98314a98b042a9c7cf1f9cfbeacce6662d11b6c5ec8d6d85e0d96ea3f2bc32d0e0bcea8cf3fd387b7872fcbeb0555d2873ff242dc84f8e503e40a2374f23140
@@ -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>
@@ -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
- Jekyll::Embed.embed CGI.unescapeHTML($3)
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'] = ogp.data
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.2.1
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-20 00:00:00.000000000 Z
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: '0.4'
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: '0.4'
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