jekyll_href 1.2.11 → 1.2.12

Sign up to get free protection for your applications and to get access to all the features.
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'.