jekyll_href 1.0.14 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e77bc04770e6fae8eeb1a595be3e3faf81fe6c77c023a9a711a3a97d51b3a828
4
- data.tar.gz: c9ff34ea2c4611fefb8f36e99471ad55a490b60d68c255fbcc06ce3791acc90e
3
+ metadata.gz: '0656497a33e45341646549dc55a45747f8418acd5f84298e145134bf7c10eec5'
4
+ data.tar.gz: 2c938cbc5e5f09bc2b8ea42ea11dde9d28e44e74512d7ebc203bccc2d127a8f6
5
5
  SHA512:
6
- metadata.gz: 9727eed971f210d18ab6826a297b5563bf899ab1c14bbd9a988fa31405d1521357ca6fa48894ab3dfacfda11371f025c83908ed5ef1519ce7fb04ba9f25605d9
7
- data.tar.gz: e82fbe117198467601a940fbc24fd9a2a40ec802b263e43324cfaaca7467f8b704f16ad1dc6214a02154ba88f04006de7f9830c08a2857c49a8614515f016f4e
6
+ metadata.gz: cdbdfe53569e693e1a81cb3e30b773cc239f81ce05f46ad2f20fe638dfef0777ca4cbcafd79ba9faedc9af1bb416f2a9628abbf8d82f423dd66ef36233059402
7
+ data.tar.gz: 1a74a3ace7f95d965a4db351501b908345257ab6138ab9ad3f4647499230e2d2a24fcd02c17fd0577376c913dc60cb3689b526046097a33a107ccea3ea3ce484
data/.rubocop.yml CHANGED
@@ -21,7 +21,19 @@ Layout/LineLength:
21
21
  Layout/MultilineMethodCallIndentation:
22
22
  Enabled: false
23
23
 
24
- Metrics/BlockLength:
24
+ Metrics/AbcSize:
25
+ Max: 25
26
+
27
+ Metrics/CyclomaticComplexity:
28
+ Max: 10
29
+
30
+ Metrics/MethodLength:
31
+ Max: 30
32
+
33
+ Metrics/PerceivedComplexity:
34
+ Max: 10
35
+
36
+ Style/FrozenStringLiteralComment:
25
37
  Enabled: false
26
38
 
27
39
  Style/PercentLiteralDelimiters:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 1.1.0 / 2023-02-03
2
+ * Updated to `jekyll_all_collections` plugin v0.2.0.
3
+ * Fixed insidious bug where a valid link was not used properly.
4
+
1
5
  ## 1.0.14 / 2023-01-09
2
6
  * Added `blank` parameter.
3
7
 
data/README.md CHANGED
@@ -4,14 +4,17 @@
4
4
 
5
5
  `Jekyll_href` is a Jekyll plugin that provides a new Liquid tag: `href`.
6
6
  It provides a convenient way to generate formatted and clickable URIs.
7
- The Liquid tag generates an `a href` HTML tag, which by default contains `target="_blank"` and `rel=nofollow`.
7
+ The Liquid tag generates an `a href` HTML tag,
8
+ which by default contains `target="_blank"` and `rel=nofollow`.
8
9
 
9
10
  If the url starts with `http`, or the `match` keyword is specified:
10
11
  - The url will open in a new tab or window.
11
12
  - The url will include `rel=nofollow` for SEO purposes.
12
13
 
13
- CAUTION: if linked text contains a single or double quote you will see the error message: `Liquid Exception: Unmatched quote`.
14
- Instead, use ' (`'`), " (`"`), ‘ (`‘`), ’ (`’`), “ (`“`), and ” (`”`)
14
+ CAUTION: if linked text contains a single or double quote,
15
+ you will see the error message: `Liquid Exception: Unmatched quote`.
16
+ Instead, use ' (`'`), " (`"`), ‘ (`‘`),
17
+ ’ (`’`), “ (`“`), and ” (`”`)
15
18
 
16
19
  In `_config.yml`, if a section called `plugin-vars` exists,
17
20
  then its name/value pairs are available for substitution.
@@ -131,7 +134,8 @@ The `match` option looks through the pages collection for a URL with containing
131
134
 
132
135
 
133
136
  ## Additional Information
134
- More information is available on my web site about [my Jekyll plugins](https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html).
137
+ More information is available on my website about
138
+ [my Jekyll plugins](https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html).
135
139
 
136
140
 
137
141
  ## Installation
@@ -148,10 +152,6 @@ And then execute:
148
152
 
149
153
  $ bundle install
150
154
 
151
- Or install it yourself as:
152
-
153
- $ gem install jekyll_href
154
-
155
155
 
156
156
  ## Generated HTML
157
157
 
@@ -223,7 +223,8 @@ Which renders as: [`mslinn.com`](https://mslinn.com)
223
223
 
224
224
  ## Development
225
225
 
226
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
226
+ After checking out the repo, run `bin/setup` to install dependencies.
227
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
227
228
 
228
229
  Install development dependencies like this:
229
230
  ```
@@ -236,7 +237,7 @@ $ bundle exec rake install
236
237
  ```
237
238
 
238
239
  ## Test
239
- A test web site is provided in the `demo` directory.
240
+ A test website is provided in the `demo` directory.
240
241
  1. Set breakpoints.
241
242
 
242
243
  2. Initiate a debug session from the command line:
data/Rakefile CHANGED
@@ -1,4 +1,2 @@
1
- # frozen_string_literal: true
2
-
3
1
  require "bundler/gem_tasks"
4
2
  task default: %i[]
data/jekyll_href.gemspec CHANGED
@@ -1,47 +1,39 @@
1
- # frozen_string_literal: true
1
+ require_relative 'lib/jekyll_href/version'
2
2
 
3
- require_relative "lib/jekyll_href/version"
3
+ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
4
+ github = 'https://github.com/mslinn/jekyll_href'
4
5
 
5
- Gem::Specification.new do |spec|
6
- github = "https://github.com/mslinn/jekyll_href"
7
-
8
- spec.authors = ["Mike Slinn"]
9
- spec.bindir = "exe"
6
+ spec.authors = ['Mike Slinn']
7
+ spec.bindir = 'exe'
10
8
  spec.description = <<~END_OF_DESC
11
9
  Generates an 'a href' tag, possibly with target='_blank' and rel='nofollow'.
12
10
  END_OF_DESC
13
- spec.email = ["mslinn@mslinn.com"]
14
- spec.files = Dir[".rubocop.yml", "LICENSE.*", "Rakefile", "{lib,spec}/**/*", "*.gemspec", "*.md"]
15
- spec.homepage = "https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#href"
16
- spec.license = "MIT"
11
+ spec.email = ['mslinn@mslinn.com']
12
+ spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
13
+ spec.homepage = 'https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#href'
14
+ spec.license = 'MIT'
17
15
  spec.metadata = {
18
- "allowed_push_host" => "https://rubygems.org",
19
- "bug_tracker_uri" => "#{github}/issues",
20
- "changelog_uri" => "#{github}/CHANGELOG.md",
21
- "homepage_uri" => spec.homepage,
22
- "source_code_uri" => github,
16
+ 'allowed_push_host' => 'https://rubygems.org',
17
+ 'bug_tracker_uri' => "#{github}/issues",
18
+ 'changelog_uri' => "#{github}/CHANGELOG.md",
19
+ 'homepage_uri' => spec.homepage,
20
+ 'source_code_uri' => github,
23
21
  }
24
- spec.name = "jekyll_href"
22
+ spec.name = 'jekyll_href'
25
23
  spec.post_install_message = <<~END_MESSAGE
26
24
 
27
25
  Thanks for installing #{spec.name}!
28
26
 
29
27
  END_MESSAGE
30
- spec.require_paths = ["lib"]
31
- spec.required_ruby_version = ">= 2.6.0"
28
+ spec.require_paths = ['lib']
29
+ spec.required_ruby_version = '>= 2.6.0'
32
30
  spec.summary = "Generates an 'a href' tag, possibly with target='_blank' and rel='nofollow'."
33
31
  spec.test_files = spec.files.grep(%r!^(test|spec|features)/!)
34
32
  spec.version = JekyllHrefVersion::VERSION
35
33
 
36
34
  spec.add_dependency 'jekyll', '>= 3.5.0'
37
- spec.add_dependency 'jekyll_all_collections'
35
+ spec.add_dependency 'jekyll_all_collections', '>= 0.2.0'
38
36
  spec.add_dependency 'jekyll_plugin_logger'
39
37
  spec.add_dependency 'key-value-parser'
40
38
  spec.add_dependency 'shellwords'
41
-
42
- # spec.add_development_dependency 'debase'
43
- # spec.add_development_dependency 'rubocop-jekyll'
44
- # spec.add_development_dependency 'rubocop-rake'
45
- # spec.add_development_dependency 'rubocop-rspec'
46
- # spec.add_development_dependency 'ruby-debug-ide'
47
39
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module JekyllHrefVersion
4
- VERSION = "1.0.14"
2
+ VERSION = '1.1.0'.freeze
5
3
  end
data/lib/jekyll_href.rb CHANGED
@@ -1,9 +1,7 @@
1
- # frozen_string_literal: true
2
-
3
- require "jekyll_all_collections"
4
- require "jekyll_plugin_logger"
5
- require "liquid"
6
- require_relative "jekyll_href/version"
1
+ require 'jekyll_all_collections'
2
+ require 'jekyll_plugin_logger'
3
+ require 'liquid'
4
+ require_relative 'jekyll_href/version'
7
5
  require_relative './jekyll_tag_helper2'
8
6
 
9
7
  # @author Copyright 2020 Michael Slinn
@@ -49,8 +47,10 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
49
47
 
50
48
  private
51
49
 
52
- def compute_linkk # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
53
- # Does not look at or compute @link
50
+ # Does not look at or compute @link
51
+ def compute_linkk
52
+ return @link if @link
53
+
54
54
  linkk = @url
55
55
  if linkk.nil? || !linkk
56
56
  linkk = @helper.argv&.shift
@@ -63,7 +63,7 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
63
63
  linkk
64
64
  end
65
65
 
66
- def dump_linkk_relations(linkk) # rubocop:disable Metrics/MethodLength
66
+ def dump_linkk_relations(linkk)
67
67
  msg = <<~END_MESSAGE
68
68
  jekyll_href error: no url was provided on #{@path}:#{@line_number}.
69
69
  @helper.markup=#{@helper.markup}
@@ -77,14 +77,14 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
77
77
  abort msg.red
78
78
  end
79
79
 
80
- def globals_initial(liquid_context) # rubocop:disable Metrics/MethodLength
80
+ def globals_initial(liquid_context)
81
81
  # Sets @follow, @helper, @match, @page, @path, @site, @target, @url
82
82
  @helper.liquid_context = liquid_context
83
83
 
84
84
  @page = liquid_context.registers[:page]
85
85
  @path = @page['path']
86
86
  @site = liquid_context.registers[:site]
87
- JekyllAllCollections.maybe_compute_all_collections(@site)
87
+ AllCollectionsHooks.compute(@site)
88
88
 
89
89
  @follow = @helper.parameter_specified?('follow') ? '' : " rel='nofollow'"
90
90
  @match = @helper.parameter_specified?('match')
@@ -94,8 +94,8 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
94
94
  @url = @helper.parameter_specified?('url')
95
95
  end
96
96
 
97
- def globals_update(tokens, linkk) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
98
- # Might set @follow, @linkk, @target, and @text
97
+ # Might set @follow, @linkk, @target, and @text
98
+ def globals_update(tokens, linkk)
99
99
  if linkk.start_with? 'mailto:'
100
100
  @link = linkk
101
101
  @target = @follow = ''
@@ -106,7 +106,7 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
106
106
  end
107
107
  return
108
108
  else
109
- @text = tokens.join(" ").strip
109
+ @text = tokens.join(' ').strip
110
110
  if @text.to_s.empty?
111
111
  @text = "<code>#{linkk}</code>"
112
112
  @link = "https://#{linkk}"
@@ -115,7 +115,7 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
115
115
  end
116
116
  end
117
117
 
118
- return if @link.start_with? "http"
118
+ return if @link.start_with? 'http'
119
119
 
120
120
  @follow = ''
121
121
  @target = '' unless @blank
@@ -127,11 +127,11 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
127
127
  @target = '' unless @blank
128
128
  end
129
129
 
130
- def match_post # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
131
- # Might set @link and @text
130
+ # Might set @link and @text
131
+ def match_post
132
132
  config = @site.config['href']
133
- die_if_nomatch = !config.nil? && config['nomatch'] && config['nomatch'] == 'fatal'
134
- path, fragment = @link.split('#')
133
+ @die_if_nomatch = !config.nil? && config['nomatch'] && config['nomatch'] == 'fatal'
134
+ @path, @fragment = @link.split('#')
135
135
 
136
136
  @logger.debug do
137
137
  <<~END_DEBUG
@@ -142,22 +142,26 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
142
142
  end
143
143
 
144
144
  all_urls = @site.all_collections.map(&:url)
145
- url_matches = all_urls.select { |url| url.include? path }
145
+ compute_link_and_text(all_urls)
146
+ end
147
+
148
+ def compute_link_and_text(all_urls)
149
+ url_matches = all_urls.select { |url| url&.include? @path }
146
150
  case url_matches.length
147
151
  when 0
148
- abort "href error: No url matches '#{@link}'" if die_if_nomatch
149
- @link = "#"
152
+ abort "href error: No url matches '#{@link}'" if @die_if_nomatch
153
+ @link = '#'
150
154
  @text = "<i>#{@link} is not available</i>"
151
155
  when 1
152
156
  @link = url_matches.first
153
- @link = "#{@link}\##{fragment}" if fragment
157
+ @link = "#{@link}\##{@fragment}" if @fragment
154
158
  else
155
- abort "Error: More than one url matched '#{path}': #{url_matches.join(", ")}"
159
+ abort "Error: More than one url matched '#{@path}': #{url_matches.join(', ')}"
156
160
  end
157
161
  end
158
162
 
163
+ # Replace names in plugin-vars with values
159
164
  def replace_vars(text)
160
- # Replace names in plugin-vars with values
161
165
  variables = @site.config['plugin-vars']
162
166
  return text unless variables
163
167
 
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'shellwords'
4
2
  require 'key_value_parser'
5
3
 
data/spec/href_spec.rb CHANGED
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'jekyll'
4
2
  require 'jekyll_plugin_logger'
5
3
  require 'yaml'
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require "liquid"
4
2
  require "fileutils"
5
3
  require_relative "../lib/jekyll_href"
@@ -1,15 +1,15 @@
1
1
  example_id | status | run_time |
2
2
  ----------------------------------------------------------------- | ------ | --------------- |
3
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:1] | passed | 0.00817 seconds |
4
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:2] | passed | 0.00349 seconds |
5
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:3] | passed | 0.0033 seconds |
6
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:4] | passed | 0.00307 seconds |
7
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:5] | passed | 0.00315 seconds |
8
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:6] | passed | 0.0032 seconds |
9
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:7] | passed | 0.0035 seconds |
10
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:8] | passed | 0.00323 seconds |
11
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:9] | passed | 0.0032 seconds |
12
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:10] | passed | 0.00307 seconds |
13
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:11] | passed | 0.00317 seconds |
14
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:12] | passed | 0.00357 seconds |
15
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:13] | passed | 0.0035 seconds |
3
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:1] | passed | 0.00581 seconds |
4
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:2] | passed | 0.00416 seconds |
5
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:3] | passed | 0.00401 seconds |
6
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:4] | passed | 0.00384 seconds |
7
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:5] | passed | 0.00401 seconds |
8
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:6] | passed | 0.00405 seconds |
9
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:7] | passed | 0.00501 seconds |
10
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:8] | passed | 0.00461 seconds |
11
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:9] | passed | 0.00397 seconds |
12
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:10] | passed | 0.0039 seconds |
13
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:11] | passed | 0.00404 seconds |
14
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:12] | passed | 0.00427 seconds |
15
+ /mnt/_/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:13] | passed | 0.0041 seconds |
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.0.14
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Slinn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-09 00:00:00.000000000 Z
11
+ date: 2023-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: jekyll_plugin_logger
43
43
  requirement: !ruby/object:Gem::Requirement