jekyll_href 1.0.14 → 1.1.0

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: 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