jekyll_href 1.2.11 → 1.2.12

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: 79cf3cccc7fc8072d6b2f7ae73d59845633f48026e0d0923d9749fbdcdd75ddf
4
- data.tar.gz: 3e93f0d18068f86997210ddd93a3d90f899f28d82dd130c08177f4c70915e315
3
+ metadata.gz: 9b91d0d8398def7c990920615a1e12f97de4472f5444ae9fc3869504d49084b8
4
+ data.tar.gz: 19f84b38dc1f3205763a1be316671bad0ac65a3af25621e5455164f362c39ec8
5
5
  SHA512:
6
- metadata.gz: acafa56a136b24199a00febabfc2ff420974ae0d3e09eb6a772ce482691adc1709a765cc7a8e78ce7160eff6c819da8e72350c52160a8dc0c615cef4ee4063dc
7
- data.tar.gz: c0c4e34adb9ef314b270f742860ee52ddcc82855f031693233ae8516d69e86c107bd0ed415958a872356e52e3afae58f5e82c53a4d43d5a8ae03a992b7f53adb
6
+ metadata.gz: 92e483de85abd7cfdf2aeede0de99d0cc0772d3d112b6652394f04f3f97f52d6aaa2b4f39ac150c02cbd25d0162b56809b8c8dec1a356d5a9777b86d888b21aa
7
+ data.tar.gz: fd835168ec7beb443ea70c646aac51cb80b4ab9a9826f881b74ee0af6670ad9ffe74937e3e063f762f44b32d7c060f4c69faeda6d8fe0935fd68525c8d3dbdf2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.2.12 / 2024-08-17
4
+
5
+ * Enhanced `match` so that if no label parameter is provided, the title of the matched web page is used.
6
+ * Now dependent on jekyll_plugin_support v1.0.2+ for better error handling.
7
+
3
8
 
4
9
  ## 1.2.11 / 2024-07-27
5
10
 
data/README.md CHANGED
@@ -46,7 +46,22 @@ href_summary:
46
46
  pry_on_href_error: true # Default value is false
47
47
  ```
48
48
 
49
- ## Syntax 1 (requires `url` without embedded spaces)
49
+ ## Suppprted Syntaxes
50
+
51
+ Square brackets in the [BNF notation](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form)
52
+ below denote optional keyword parameters, and are not meant to be typed.
53
+
54
+ ## Syntax 1 (most verbose, but provides best results and enables implicit matching title)
55
+
56
+ ```html
57
+ {% href [match | [follow] [blank|notarget] [summary_exclude]] url="local_page.html" label="text to display" %}
58
+ ```
59
+
60
+ 1. The url can be #relative, a page in the Jekyll website, or prefaced with a protocol, such as `https:`
61
+ 2. If `match` is provided, and `label` is not provided, then the title of the matched page is used as the label.
62
+
63
+
64
+ ## Syntax 2 (requires `url` without embedded spaces)
50
65
 
51
66
  ```html
52
67
  {% href [match | [follow] [blank|notarget] [page_title] [summary_exclude]] url text to display %}
@@ -54,10 +69,9 @@ href_summary:
54
69
 
55
70
  1. The url must be a single token, without embedded spaces.
56
71
  2. The url need not be enclosed in quotes.
57
- 3. The square brackets denote optional keyword parameters, and should not be typed.
58
72
 
59
73
 
60
- ## Syntax 2 (always works)
74
+ ## Syntax 3 (always works)
61
75
 
62
76
  This syntax is recommended when the URL contains a colon (:).
63
77
 
@@ -68,10 +82,9 @@ This syntax is recommended when the URL contains a colon (:).
68
82
 
69
83
  1. Each of the above examples contain an embedded newline, which is legal.
70
84
  2. The url must be enclosed by either single or double quotes.
71
- 3. The square brackets denote optional keyword parameters, and should not be typed.
72
85
 
73
86
 
74
- ## Syntax 3 (implicit URL)
87
+ ## Syntax 4 (implicit URL)
75
88
 
76
89
  ```html
77
90
  {% href [match | [follow] [blank|notarget] [page_title] [summary_exclude]] [shy|wbr] www.domain.com %}
@@ -287,6 +300,21 @@ Expands to:
287
300
 
288
301
  Substitutions are only made to the URL, not to the linked text.
289
302
 
303
+ 8. Dollar signs
304
+
305
+ If the URL has a dollar sign in it, jekyll_href will attempt to replace an environment variable with its value.
306
+ That will likely fail silently. To work around the problem, replace dollar signs in URLs with $.
307
+
308
+ For example, given this URL:
309
+ https://ammonite.io/#import$ivy
310
+ rewrite as:
311
+ https://ammonite.io/#import$ivy.
312
+
313
+ Here is a complete invocation:
314
+
315
+ {% href url="https://ammonite.io/#import$ivy"
316
+ label="<code>import &dollar;ivy</code>" %}
317
+
290
318
 
291
319
  ## References Generation
292
320
 
data/jekyll_href.gemspec CHANGED
@@ -33,6 +33,6 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency 'ipaddress'
34
34
  spec.add_dependency 'jekyll', '>= 3.5.0'
35
35
  spec.add_dependency 'jekyll_all_collections'
36
- spec.add_dependency 'jekyll_plugin_support', '>= 1.0.0'
36
+ spec.add_dependency 'jekyll_plugin_support', '>= 1.0.2'
37
37
  spec.add_dependency 'typesafe_enum'
38
38
  end
data/lib/href_match.rb CHANGED
@@ -2,19 +2,23 @@ module JekyllSupport
2
2
  class HRefTag
3
3
  private
4
4
 
5
- def compute_link_and_text(all_urls)
6
- url_matches = all_urls.select { |url| url&.include? @path }
7
- case url_matches.length
5
+ def compute_link_and_text
6
+ page_matches = @site.all_collections.map.select { |page| page.url&.include? @path }
7
+ case page_matches.length
8
8
  when 0
9
- abort "href error: No url matches '#{@link}', found on line #{@line_number} (after front matter) of #{@path}" if @die_if_nomatch
9
+ msg = "HRef error: No url matches '#{@link}', found on line #{@line_number} (after front matter) of #{@path}"
10
+ @logger.error { msg }
11
+ abort msg if @die_if_nomatch
12
+ @text = "<i class='h_ref_error'>#{@link} is not available</i>"
10
13
  @link_save = @link = '#'
11
- @text = "<i>#{@link} is not available</i>"
12
14
  when 1
13
- @link = url_matches.first
15
+ @link = page_matches.first.url
14
16
  @link = "#{@link}##{@fragment}" if @fragment
15
17
  @link_save = @link
18
+ @text = page_matches.first.title unless @label
16
19
  else
17
- abort "Error: More than one url matched '#{@path}': #{url_matches.join(', ')}"
20
+ logger.error { "Error: More than one url matched '#{@path}': #{url_matches.join(', ')}" }
21
+ exit! 2
18
22
  end
19
23
  end
20
24
 
@@ -31,8 +35,7 @@ module JekyllSupport
31
35
  END_DEBUG
32
36
  end
33
37
 
34
- all_urls = @site.all_collections.map(&:url)
35
- compute_link_and_text(all_urls)
38
+ compute_link_and_text
36
39
  end
37
40
  end
38
41
  end
data/lib/href_private.rb CHANGED
@@ -26,7 +26,7 @@ module JekyllSupport
26
26
  <pre>{% href #{@argument_string.strip} %}</pre>
27
27
  END_MESSAGE
28
28
  @logger.error { JekyllSupport::JekyllPluginHelper.remove_html_tags msg.strip }
29
- "<div class='href_error'>HRefError: #{msg}</div>"
29
+ "<div class='h_ref_error'>HRefError: #{msg}</div>"
30
30
  end
31
31
 
32
32
  # Sets @follow, @helper, @match, @path, @target, @url, @hyphenation
@@ -40,13 +40,10 @@ module JekyllSupport
40
40
  #{@helper.attribute if @helper.attribution && have_refs}
41
41
  END_RENDER
42
42
  rescue HRefError => e # jekyll_plugin_support handles StandardError
43
- e.shorten_backtrace
44
- msg = format_error_message e.message
45
- @logger.error "#{e.class} raised #{msg}"
46
- binding.pry if @pry_on_img_error # rubocop:disable Lint/Debugger
47
- raise e if @die_on_href_error
43
+ @logger.error { e.logger_message }
44
+ exit! 1 if @die_on_demo_block_error
48
45
 
49
- "<div class='href_error'>#{e.class} raised in #{self.class};\n#{msg}</div>"
46
+ e.html_message
50
47
  end
51
48
 
52
49
  def render_global_refs
data/lib/href_tag.rb CHANGED
@@ -46,7 +46,7 @@ module JekyllSupport
46
46
 
47
47
  @helper_save = @helper.clone
48
48
  globals_update(@helper.argv, linkk) # Sets @link and @text, might clear @follow and @target
49
- handle_match(@link) if @match
49
+ handle_match(linkk) if @match # Sets @text if not set by now
50
50
  raise HrefError, '@link_type was not set' if @link_type == LinkType::UNKNOWN
51
51
 
52
52
  save_summary
@@ -54,15 +54,10 @@ module JekyllSupport
54
54
  style = " style='#{@style}'" if @style
55
55
  "<a href='#{@link}'#{klass}#{style}#{@target}#{@follow}>#{@text}</a>"
56
56
  rescue HRefError => e # jekyll_plugin_support handles StandardError
57
- msg = format_error_message e.message
58
- msg = "#{msg}\n<pre> {% href #{@argument_string.strip} %}</pre>"
59
- @text = "<div class='href_error'>#{msg}</div>"
60
- e.shorten_backtrace
61
- @logger.error "#{e.class} raised #{msg}"
62
- binding.pry if @pry_on_img_error # rubocop:disable Lint/Debugger
63
- raise e if @die_on_href_error
57
+ @logger.error { e.logger_message }
58
+ exit 1 if @die_on_demo_tag_error
64
59
 
65
- "<div class='href_error'>#{e.class} raised in #{self.class};\n#{msg}</div>"
60
+ e.html_message
66
61
  end
67
62
 
68
63
  def to_s
@@ -1,3 +1,3 @@
1
1
  module JekyllHrefVersion
2
- VERSION = '1.2.11'.freeze
2
+ VERSION = '1.2.12'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll_href
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.11
4
+ version: 1.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Slinn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-27 00:00:00.000000000 Z
11
+ date: 2024-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ipaddress
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
61
+ version: 1.0.2
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0
68
+ version: 1.0.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: typesafe_enum
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
138
  requirements: []
139
- rubygems_version: 3.5.16
139
+ rubygems_version: 3.5.17
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: Generates an 'a href' tag, possibly with target='_blank' and rel='nofollow'.