jekyll_href 1.2.6 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,143 @@
1
+ module MSlinn
2
+ class HRefTag
3
+ private
4
+
5
+ # Does not look at or compute @link
6
+ def compute_linkk
7
+ return @link, nil if @link
8
+
9
+ linkk = @url
10
+ if linkk.nil? || !linkk
11
+ linkk = @helper.argv&.shift
12
+ @helper.params&.shift
13
+ @helper.keys_values&.delete(linkk)
14
+ return nil, error_no_uri if linkk.nil?
15
+ elsif @url.to_s.empty?
16
+ return nil, error_no_uri
17
+ end
18
+ [linkk, nil]
19
+ rescue HRefError => e
20
+ [nil, e]
21
+ end
22
+
23
+ def error_no_uri
24
+ msg = <<~END_MESSAGE
25
+ No URL was provided on #{@path}:#{@line_number} (after front matter).
26
+ <pre>{% href #{@argument_string.strip} %}</pre>
27
+ END_MESSAGE
28
+ @logger.error { JekyllPluginHelper.remove_html_tags msg.strip }
29
+ "<div class='href_error'>HRefError: #{msg}</div>"
30
+ end
31
+
32
+ # Sets @follow, @helper, @match, @path, @shy, @target, @url, @wbr
33
+ def globals_initial
34
+ @path = @page['path']
35
+ AllCollectionsHooks.compute(@site)
36
+
37
+ @blank = @helper.parameter_specified? 'blank'
38
+ @klass = @helper.parameter_specified? 'class'
39
+ @follow = @helper.parameter_specified?('follow') ? '' : " rel='nofollow'"
40
+ @label = @helper.parameter_specified? 'label'
41
+ @match = @helper.parameter_specified? 'match'
42
+ @shy = @helper.parameter_specified? 'shy'
43
+ @style = @helper.parameter_specified? 'style'
44
+ @summary = @helper.parameter_specified? 'summary'
45
+ @summary_exclude = @helper.parameter_specified? 'summary_exclude'
46
+ @target = @blank ? " target='_blank'" : nil
47
+ @target ||= @helper.parameter_specified?('notarget') ? '' : " target='_blank'"
48
+ @url = @helper.parameter_specified? 'url'
49
+ @wbr = @helper.parameter_specified? 'wbr'
50
+
51
+ @label_source = if @helper.parameter_specified? 'page_title'
52
+ :from_page_title
53
+ elsif @label
54
+ :from_explicit_label
55
+ else
56
+ :from_implicit_label
57
+ end
58
+
59
+ return unless @tag_config
60
+
61
+ @die_on_href_error = @tag_config['die_on_href_error'] == true
62
+ @die_on_nomatch = @tag_config['die_on_nomatch'] == true
63
+ @pry_on_href_error = @tag_config['pry_on_href_error'] == true
64
+ end
65
+
66
+ # Might set @external_link, @follow, @local_link, @linkk, @target, and @text
67
+ def globals_update(tokens, linkk)
68
+ if linkk.start_with? 'mailto:'
69
+ handle_mailto linkk
70
+ return
71
+ else
72
+ if @label_source == :from_page_title
73
+ handle_page_title linkk
74
+ return
75
+ end
76
+ @text = @label || tokens.join(' ').strip
77
+ if @text.to_s.empty?
78
+ handle_empty_text linkk
79
+ else
80
+ handle_text linkk
81
+ end
82
+ @link_save = @link
83
+ end
84
+
85
+ if @external_link
86
+ @target = ''
87
+ return
88
+ end
89
+ @follow = ''
90
+ @target = '' unless @blank
91
+ end
92
+
93
+ def handle_empty_text(linkk)
94
+ text = linkk
95
+ text = linkk&.gsub('/', '/&shy;') if @shy
96
+ text = linkk&.gsub('/', '/<wbr>') if @wbr
97
+ @text = "<code>#{text}</code>"
98
+ @external_link = linkk.start_with? 'http'
99
+ @local_link = !@external_link
100
+ @mailto_link = false
101
+ @link = if @external_link
102
+ linkk
103
+ elsif insecure_ip_address linkk
104
+ "http://#{linkk}"
105
+ else
106
+ "https://#{linkk}"
107
+ end
108
+ end
109
+
110
+ def handle_mailto(linkk)
111
+ @mailto_link = true
112
+ @local_link = @external_link = false
113
+ @link = linkk
114
+ @target = @follow = ''
115
+ @text = @helper.argv.join(' ')
116
+ return unless @text.empty?
117
+
118
+ text = linkk.delete_prefix('mailto:')
119
+ @text = "<code>#{text}</code>"
120
+ end
121
+
122
+ def handle_text(linkk)
123
+ @link = if @shy
124
+ linkk&.gsub('/', '/&shy;')
125
+ elsif @wbr
126
+ linkk&.gsub('/', '/<wbr>')
127
+ else
128
+ linkk
129
+ end
130
+ end
131
+
132
+ def insecure_ip_address(string)
133
+ return true if string.start_with? 'localhost'
134
+
135
+ return false unless IPAddress.valid? string
136
+
137
+ ip_address = IPAddress string
138
+ true if ip_address.loopback? || ip_address.private?
139
+ ensure
140
+ false
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,39 @@
1
+ module MSlinn
2
+ class HRefTag
3
+ private
4
+
5
+ def save_summary
6
+ return if @summary_exclude || @link_save.start_with?('mailto:') || @link_save.start_with?('#')
7
+
8
+ @summary = @summary.to_s.empty? ? @text : @summary.to_s
9
+ if @summary == true
10
+ warning = <<~END_WARNING
11
+ Warning: a href plugin keyword option was detected in the link text for #{@path} on line #{line_number}.
12
+ The href tag will not be included in the summary, and the link text will not have the word summary included.
13
+ This is probably unintentional. Consider using the label option to correct this problem."
14
+ END_WARNING
15
+ puts warning.red
16
+ return
17
+ end
18
+ return if @summary.class != String || @summary.empty?
19
+
20
+ @summary = @summary[0].upcase + @summary[1..]
21
+ @summary_href = "<a href='#{@link_save}'#{@target}#{@follow}>#{@summary}</a>"
22
+ mini_href = MiniHref.new(
23
+ follow: @follow,
24
+ html: @summary_href,
25
+ line_number: @line_number,
26
+ link: @link_save,
27
+ link_save: @link_save,
28
+ path: @path,
29
+ summary_exclude: @summary_exclude,
30
+ summary_href: @summary_href
31
+ )
32
+ if @link_save.start_with? 'http'
33
+ add_global_link_for_page mini_href
34
+ else
35
+ add_local_link_for_page mini_href
36
+ end
37
+ end
38
+ end
39
+ end
@@ -2,8 +2,8 @@ require 'jekyll_plugin_logger'
2
2
  require 'jekyll_plugin_support'
3
3
  require_relative 'jekyll_href/version'
4
4
 
5
- module HrefSummaryTag
6
- class HrefSummary < JekyllSupport::JekyllTag # rubocop:disable Metrics/ClassLength
5
+ module MSlinn
6
+ class HrefSummary < JekyllSupport::JekyllTag
7
7
  include JekyllHrefVersion
8
8
 
9
9
  # Class instance variables accumulate hrefs across invocations.
@@ -28,6 +28,11 @@ module HrefSummaryTag
28
28
  def render_impl
29
29
  @helper.gem_file __FILE__ # Enables attribution
30
30
  @include_local = @helper.parameter_specified? 'include_local'
31
+
32
+ @die_on_href_error = @tag_config['die_on_href_error'] == true if @tag_config
33
+ @pry_on_href_error = @tag_config['pry_on_href_error'] == true if @tag_config
34
+
35
+ @path = @page['path']
31
36
  global_refs = render_global_refs
32
37
  local_refs = render_local_refs
33
38
  have_refs = !(global_refs + local_refs).empty?
@@ -36,12 +41,19 @@ module HrefSummaryTag
36
41
  #{local_refs}
37
42
  #{@helper.attribute if @helper.attribution && have_refs}
38
43
  END_RENDER
44
+ rescue HRefError => e # jekyll_plugin_support handles StandardError
45
+ e.shorten_backtrace
46
+ msg = format_error_message e.message
47
+ @logger.error "#{e.class} raised #{msg}"
48
+ binding.pry if @pry_on_img_error # rubocop:disable Lint/Debugger
49
+ raise e if @die_on_href_error
50
+
51
+ "<div class='href_error'>#{e.class} raised in #{self.class};\n#{msg}</div>"
39
52
  end
40
53
 
41
54
  def render_global_refs
42
55
  hrefs = HashArray.instance_variable_get(:@global_hrefs)
43
- path = @page['path']
44
- entries = hrefs[path]&.select { |h| h.path == path }
56
+ entries = hrefs[@path]&.select { |h| h.path == @path }
45
57
  return '' if entries.nil? || entries.empty?
46
58
 
47
59
  summaries = entries.map { |href| "<li>#{href.summary_href}</li>" }
@@ -61,8 +73,7 @@ module HrefSummaryTag
61
73
  return '' unless @include_local
62
74
 
63
75
  hrefs = HashArray.instance_variable_get(:@local_hrefs)
64
- path = @page['path']
65
- entries = hrefs[path]&.select { |h| h.path == path }
76
+ entries = hrefs[@path]&.select { |h| h.path == @path }
66
77
  return '' if entries.nil? || entries.empty?
67
78
 
68
79
  summary = entries.map { |href| "<li>#{href.summary_href}</li>" }
data/lib/href_tag.rb CHANGED
@@ -3,7 +3,6 @@ require 'jekyll_all_collections'
3
3
  require 'jekyll_plugin_logger'
4
4
  require 'jekyll_plugin_support'
5
5
  require 'liquid'
6
- require 'sanitize'
7
6
  require_relative 'jekyll_href/version'
8
7
  require_relative 'hash_array'
9
8
 
@@ -11,11 +10,13 @@ require_relative 'hash_array'
11
10
  # @license SPDX-License-Identifier: Apache-2.0
12
11
  # Generates an href.
13
12
 
14
- module HrefTag
13
+ module MSlinn
15
14
  MiniHref = Struct.new(:follow, :html, :link, :line_number, :link_save, :path, :summary_exclude, :summary_href, keyword_init: true)
16
15
 
16
+ HRefError = JekyllSupport.define_error
17
+
17
18
  # Implements href Jekyll tag
18
- class HrefTag < JekyllSupport::JekyllTag # rubocop:disable Metrics/ClassLength
19
+ class HRefTag < JekyllSupport::JekyllTag
19
20
  attr_reader :follow, :helper, :line_number, :link_save, :match, :page, :path, :site,
20
21
  :summary, :summary_exclude, :summary_href, :target, :text, :url
21
22
  attr_accessor :link
@@ -30,10 +31,6 @@ module HrefTag
30
31
  [follow, match, path, target, text] <=> [other.follow, other.match, other.path, other.target, other.text]
31
32
  end
32
33
 
33
- def to_s
34
- "On line #{line_number} of #{path}: #{follow} #{match} #{target} #{link} => '#{text}'"
35
- end
36
-
37
34
  # Method prescribed by the Jekyll plugin lifecycle.
38
35
  # @param liquid_context [Liquid::Context]
39
36
  # @return [String]
@@ -42,10 +39,10 @@ module HrefTag
42
39
  linkk, error_msg = compute_linkk
43
40
  return error_msg unless linkk
44
41
 
45
- linkk = replace_vars(linkk)
46
- linkk.delete_prefix('./') # normalize relative links
42
+ linkk.delete_prefix './' # normalize relative links
47
43
  @url = linkk if @url
48
44
  @link_save = linkk
45
+
49
46
  @helper_save = @helper.clone
50
47
  globals_update(@helper.argv, linkk) # Sets @link and @text, might clear @follow and @target
51
48
  handle_match if @match
@@ -53,196 +50,25 @@ module HrefTag
53
50
  klass = " class='#{@klass}'" if @klass
54
51
  style = " style='#{@style}'" if @style
55
52
  "<a href='#{@link}'#{klass}#{style}#{@target}#{@follow}>#{@text}</a>"
53
+ rescue HRefError => e # jekyll_plugin_support handles StandardError
54
+ e.shorten_backtrace
55
+ msg = format_error_message e.message
56
+ @logger.error "#{e.class} raised #{msg}"
57
+ binding.pry if @pry_on_img_error # rubocop:disable Lint/Debugger
58
+ raise e if @die_on_href_error
59
+
60
+ "<div class='href_error'>#{e.class} raised in #{self.class};\n#{msg}</div>"
56
61
  end
57
62
 
58
- private
59
-
60
- def save_summary
61
- return if @summary_exclude || @link_save.start_with?('mailto:') || @link_save.start_with?('#')
62
-
63
- @summary = @summary.to_s.empty? ? @text : @summary.to_s
64
- if @summary == true
65
- warning = <<~END_WARNING
66
- Warning: a href plugin keyword option was detected in the link text for #{@path} on line #{line_number}.
67
- The href tag will not be included in the summary, and the link text will not have the word summary included.
68
- This is probably unintentional. Consider using the label option to correct this problem."
69
- END_WARNING
70
- puts warning.red
71
- return
72
- end
73
- return if @summary.class != String || @summary.empty?
74
-
75
- @summary = @summary[0].upcase + @summary[1..]
76
- @summary_href = "<a href='#{@link_save}'#{@target}#{@follow}>#{@summary}</a>"
77
- mini_href = MiniHref.new(
78
- follow: @follow,
79
- html: @summary_href,
80
- line_number: @line_number,
81
- link: @link_save,
82
- link_save: @link_save,
83
- path: @path,
84
- summary_exclude: @summary_exclude,
85
- summary_href: @summary_href
86
- )
87
- if @link_save.start_with? 'http'
88
- add_global_link_for_page mini_href
89
- else
90
- add_local_link_for_page mini_href
91
- end
92
- end
93
-
94
- # Does not look at or compute @link
95
- def compute_linkk
96
- return @link, nil if @link
97
-
98
- linkk = @url
99
- if linkk.nil? || !linkk
100
- linkk = @helper.argv&.shift
101
- @helper.params&.shift
102
- @helper.keys_values&.delete(linkk)
103
- return nil, error_no_uri if linkk.nil?
104
- elsif @url.to_s.empty?
105
- return nil, error_no_uri
106
- end
107
- [linkk, nil]
108
- end
109
-
110
- def error_no_uri
111
- msg = <<~END_MESSAGE
112
- Error: no url was provided on #{@path}:#{@line_number} (after front matter).
113
- <pre>{% href #{@argument_string}%}</pre>
114
- END_MESSAGE
115
- @logger.error { Sanitize.fragment msg }
116
- "<span class='error'>Error: #{msg}</span>"
117
- end
118
-
119
- # Sets @follow, @helper, @match, @path, @shy, @target, @url, @wbr
120
- def globals_initial
121
- @path = @page['path']
122
- AllCollectionsHooks.compute(@site)
123
-
124
- @blank = @helper.parameter_specified? 'blank'
125
- @klass = @helper.parameter_specified? 'class'
126
- @follow = @helper.parameter_specified?('follow') ? '' : " rel='nofollow'"
127
- @match = @helper.parameter_specified? 'match'
128
- @label = @helper.parameter_specified? 'label'
129
- @summary_exclude = @helper.parameter_specified? 'summary_exclude'
130
- @shy = @helper.parameter_specified? 'shy'
131
- @style = @helper.parameter_specified? 'style'
132
- @summary = @helper.parameter_specified? 'summary'
133
- @target = @blank ? " target='_blank'" : nil
134
- @target ||= @helper.parameter_specified?('notarget') ? '' : " target='_blank'"
135
- @url = @helper.parameter_specified? 'url'
136
- @wbr = @helper.parameter_specified? 'wbr'
137
- end
138
-
139
- # Might set @follow, @linkk, @target, and @text
140
- def globals_update(tokens, linkk)
141
- if linkk.start_with? 'mailto:'
142
- @link = linkk
143
- @target = @follow = ''
144
- @text = @helper.argv.join(' ')
145
- if @text.empty?
146
- text = linkk.delete_prefix('mailto:')
147
- @text = "<code>#{text}</code>"
148
- end
149
- return
150
- else
151
- @text = @label || tokens.join(' ').strip
152
- if @text.to_s.empty?
153
- text = linkk
154
- text = linkk.gsub('/', '/&shy;') if @shy
155
- text = linkk.gsub('/', '/<wbr>') if @wbr
156
- @text = "<code>#{text}</code>"
157
- @link = if linkk.start_with?('http')
158
- linkk
159
- elsif insecure_ip_address linkk
160
- "http://#{linkk}"
161
- else
162
- "https://#{linkk}"
163
- end
164
- else
165
- @link = if @shy
166
- linkk.gsub('/', '/&shy;')
167
- elsif @wbr
168
- linkk.gsub('/', '/<wbr>')
169
- else
170
- linkk
171
- end
172
- end
173
- @link_save = @link
174
- end
175
-
176
- return if @link.start_with? 'http'
177
-
178
- @follow = ''
179
- @target = '' unless @blank
180
- end
181
-
182
- def handle_match
183
- match_post
184
- @follow = ''
185
- @target = '' unless @blank
186
- end
187
-
188
- # Might set @link and @text
189
- def match_post
190
- config = @site.config['href']
191
- @die_if_nomatch = !config.nil? && config['nomatch'] && config['nomatch'] == 'fatal'
192
- @path, @fragment = @link.split('#')
193
-
194
- @logger.debug do
195
- <<~END_DEBUG
196
- @link=#{@link}
197
- @site.posts.docs[0].url = #{@site.posts.docs[0].url}
198
- @site.posts.docs[0].path = #{@site.posts.docs[0].path}
199
- END_DEBUG
200
- end
201
-
202
- all_urls = @site.all_collections.map(&:url)
203
- compute_link_and_text(all_urls)
204
- end
205
-
206
- def compute_link_and_text(all_urls)
207
- url_matches = all_urls.select { |url| url&.include? @path }
208
- case url_matches.length
209
- when 0
210
- abort "href error: No url matches '#{@link}'" if @die_if_nomatch
211
- @link_save = @link = '#'
212
- @text = "<i>#{@link} is not available</i>"
213
- when 1
214
- @link = url_matches.first
215
- @link = "#{@link}##{@fragment}" if @fragment
216
- @link_save = @link
217
- else
218
- abort "Error: More than one url matched '#{@path}': #{url_matches.join(', ')}"
219
- end
220
- end
221
-
222
- def insecure_ip_address(string)
223
- return true if string.start_with? 'localhost'
224
-
225
- return false unless IPAddress.valid? string
226
-
227
- ip_address = IPAddress string
228
- return true if ip_address.loopback? || ip_address.private?
229
- rescue StandardError
230
- false
231
- ensure
232
- false
233
- end
234
-
235
- # Replace names in plugin-vars with values
236
- def replace_vars(text)
237
- variables = @site.config['plugin-vars']
238
- return text unless variables
239
-
240
- variables.each do |name, value|
241
- text = text.gsub "{{#{name}}}", value
242
- end
243
- text
63
+ def to_s
64
+ "On line #{line_number} of #{path}: #{follow} #{match} #{target} #{link} => '#{text}'"
244
65
  end
245
66
 
246
67
  JekyllPluginHelper.register(self, 'href')
247
68
  end
248
69
  end
70
+
71
+ require_relative 'href_match'
72
+ require_relative 'href_private'
73
+ require_relative 'href_page_title'
74
+ require_relative 'href_summary'
@@ -1,3 +1,3 @@
1
1
  module JekyllHrefVersion
2
- VERSION = '1.2.6'.freeze
2
+ VERSION = '1.2.7'.freeze
3
3
  end
data/lib/jekyll_href.rb CHANGED
@@ -4,6 +4,5 @@ require_relative 'href_summary_tag'
4
4
  HrefError = Class.new(Liquid::Error)
5
5
 
6
6
  module JekyllHrefModule
7
- include HrefTag
8
- include HrefSummaryTag
7
+ include MSlinn
9
8
  end
@@ -1,5 +1,5 @@
1
1
  module HashArraySpec
2
- require_relative '../lib/hash_array'
2
+ require_relative '../../lib/hash_array'
3
3
 
4
4
  RSpec.describe HashArray do
5
5
  let(:logger) do
data/spec/spec_helper.rb CHANGED
@@ -6,9 +6,7 @@ require 'yaml'
6
6
  require_relative "../lib/jekyll_href"
7
7
 
8
8
  RSpec.configure do |config|
9
- config.filter_run :focus
10
9
  # config.order = "random"
11
- config.run_all_when_everything_filtered = true
12
10
 
13
11
  # See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
14
12
  config.example_status_persistence_file_path = "../spec/status_persistence.txt"
@@ -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/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:1] | passed | 0.00938 seconds |
4
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:2] | failed | 0.01389 seconds |
5
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:3] | failed | 0.00319 seconds |
6
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:4] | failed | 0.00211 seconds |
7
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:5] | failed | 0.00196 seconds |
8
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:6] | failed | 0.00205 seconds |
9
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:7] | passed | 0.00212 seconds |
10
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:8] | failed | 0.00209 seconds |
11
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:9] | failed | 0.0021 seconds |
12
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:10] | passed | 0.00278 seconds |
13
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:11] | passed | 0.00237 seconds |
14
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:12] | passed | 0.00218 seconds |
15
+ /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:13] | passed | 0.00211 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.2.6
4
+ version: 1.2.7
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-06-19 00:00:00.000000000 Z
11
+ date: 2023-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ipaddress
@@ -58,28 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 0.7.0
61
+ version: 0.8.1
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: 0.7.0
69
- - !ruby/object:Gem::Dependency
70
- name: sanitize
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
68
+ version: 0.8.1
83
69
  description: 'Generates an ''a href'' tag, possibly with target=''_blank'' and rel=''nofollow''.
84
70
 
85
71
  '
@@ -96,11 +82,15 @@ files:
96
82
  - Rakefile
97
83
  - jekyll_href.gemspec
98
84
  - lib/hash_array.rb
85
+ - lib/href_match.rb
86
+ - lib/href_page_title.rb
87
+ - lib/href_private.rb
88
+ - lib/href_summary.rb
99
89
  - lib/href_summary_tag.rb
100
90
  - lib/href_tag.rb
101
91
  - lib/jekyll_href.rb
102
92
  - lib/jekyll_href/version.rb
103
- - spec/hash_array_spec.rb
93
+ - spec/hash_array_spec/hash_array_spec.rb
104
94
  - spec/href_spec.rb
105
95
  - spec/spec_helper.rb
106
96
  - spec/status_persistence.txt
@@ -131,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
121
  - !ruby/object:Gem::Version
132
122
  version: '0'
133
123
  requirements: []
134
- rubygems_version: 3.3.3
124
+ rubygems_version: 3.3.7
135
125
  signing_key:
136
126
  specification_version: 4
137
127
  summary: Generates an 'a href' tag, possibly with target='_blank' and rel='nofollow'.