jekyll_href 1.2.6 → 1.2.8

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.
@@ -0,0 +1,155 @@
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, @target, @url, @hyphenation
33
+ def globals_initial
34
+ @path = @page['path']
35
+ AllCollectionsHooks.compute @site
36
+ @hyphenation = Hyphenation::NONE
37
+
38
+ @blank = @helper.parameter_specified? 'blank'
39
+ @klass = @helper.parameter_specified? 'class'
40
+ @follow_specified = @helper.parameter_specified?('follow')
41
+ @follow = @follow_specified ? '' : ' rel="nofollow"'
42
+ @label = @helper.parameter_specified? 'label'
43
+ @match = @helper.parameter_specified? 'match'
44
+ @hyphenation = Hyphenation::SHY if @helper.parameter_specified? 'shy'
45
+ @style = @helper.parameter_specified? 'style'
46
+ @summary = @helper.parameter_specified? 'summary'
47
+ @summary_exclude = @helper.parameter_specified? 'summary_exclude'
48
+ @target = @blank ? " target='_blank'" : nil
49
+ @target ||= @helper.parameter_specified?('notarget') ? '' : " target='_blank'"
50
+ @url = @helper.parameter_specified? 'url'
51
+
52
+ if @helper.parameter_specified? 'wbr' # <wbr> has precedence over &shy;
53
+ if @hyphenation == Hyphenation::SHY
54
+ @logger.info do
55
+ "Warning: wbr and shy were both specified for the href tag on line #{@line_number} (after front matter) of #{@page['path']}"
56
+ end
57
+ end
58
+ @hyphenation = Hyphenation::WBR
59
+ end
60
+
61
+ @label_source = if @helper.parameter_specified? 'page_title'
62
+ LabelSource::FROM_PAGE_TITLE
63
+ elsif @label
64
+ LabelSource::FROM_EXPLICIT_LABEL
65
+ else
66
+ LabelSource::FROM_IMPLICIT_LABEL
67
+ end
68
+
69
+ return unless @tag_config
70
+
71
+ @die_on_href_error = @tag_config['die_on_href_error'] == true
72
+ @die_on_nomatch = @tag_config['die_on_nomatch'] == true
73
+ @pry_on_href_error = @tag_config['pry_on_href_error'] == true
74
+ end
75
+
76
+ # Sets @link_type
77
+ # Might set @follow, @link, @link_save and @text
78
+ def globals_update(tokens, linkk)
79
+ @link_type = LinkType::UNKNOWN
80
+
81
+ if linkk.start_with? 'mailto:'
82
+ handle_mailto linkk
83
+ return
84
+ end
85
+
86
+ @link_type = if linkk.start_with? 'http'
87
+ LinkType::EXTERNAL
88
+ elsif linkk.start_with? '#'
89
+ LinkType::FRAGMENT
90
+ else
91
+ LinkType::LOCAL
92
+ end
93
+
94
+ @follow = !@follow_specified && @link_type == LinkType::EXTERNAL ? ' rel="nofollow"' : ''
95
+
96
+ handle_page_title linkk if @label_source == LabelSource::FROM_PAGE_TITLE
97
+ @text = @label || tokens.join(' ').strip
98
+ @link = if @text.to_s.empty?
99
+ handle_empty_text linkk
100
+ else
101
+ linkk
102
+ end
103
+ @link_save = @link
104
+ return if @link_type == LinkType::EXTERNAL
105
+
106
+ @follow = @target = ''
107
+ nil
108
+ end
109
+
110
+ # Sets @text and @link
111
+ def handle_empty_text(linkk)
112
+ text = hyphenate linkk
113
+ @text = "<code>#{text}</code>"
114
+ @link = if linkk.start_with? '#'
115
+ linkk
116
+ elsif insecure_ip_address linkk
117
+ "http://#{linkk}"
118
+ else
119
+ "https://#{linkk}"
120
+ end
121
+ end
122
+
123
+ def handle_mailto(linkk)
124
+ @link_type = LinkType::MAILTO
125
+ @link = linkk
126
+ @target = @follow = ''
127
+ @text = @label || @helper.argv.join(' ')
128
+ return unless @text.empty?
129
+
130
+ text = hyphenate(linkk.delete_prefix('mailto:'))
131
+ @text = "<code>#{text}</code>"
132
+ end
133
+
134
+ def hyphenate(linkk)
135
+ if @hyphenation == Hyphenation::WBR
136
+ linkk&.gsub('/', '/<wbr>')
137
+ elsif @hyphenation == Hyphenation::SHY
138
+ linkk&.gsub('/', '/&shy;')
139
+ else
140
+ linkk
141
+ end
142
+ end
143
+
144
+ def insecure_ip_address(string)
145
+ return true if string.start_with?('localhost', 'http://localhost')
146
+
147
+ return false unless IPAddress.valid? string
148
+
149
+ ip_address = IPAddress string
150
+ true if ip_address.loopback? || ip_address.private?
151
+ ensure
152
+ false
153
+ end
154
+ end
155
+ 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.to_s == 'true'
10
+ warning = <<~END_WARNING
11
+ Warning: The 'summary' 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,7 @@ require 'jekyll_all_collections'
3
3
  require 'jekyll_plugin_logger'
4
4
  require 'jekyll_plugin_support'
5
5
  require 'liquid'
6
- require 'sanitize'
6
+ require_relative 'enums'
7
7
  require_relative 'jekyll_href/version'
8
8
  require_relative 'hash_array'
9
9
 
@@ -11,11 +11,13 @@ require_relative 'hash_array'
11
11
  # @license SPDX-License-Identifier: Apache-2.0
12
12
  # Generates an href.
13
13
 
14
- module HrefTag
14
+ module MSlinn
15
15
  MiniHref = Struct.new(:follow, :html, :link, :line_number, :link_save, :path, :summary_exclude, :summary_href, keyword_init: true)
16
16
 
17
+ HRefError = JekyllSupport.define_error
18
+
17
19
  # Implements href Jekyll tag
18
- class HrefTag < JekyllSupport::JekyllTag # rubocop:disable Metrics/ClassLength
20
+ class HRefTag < JekyllSupport::JekyllTag
19
21
  attr_reader :follow, :helper, :line_number, :link_save, :match, :page, :path, :site,
20
22
  :summary, :summary_exclude, :summary_href, :target, :text, :url
21
23
  attr_accessor :link
@@ -30,10 +32,6 @@ module HrefTag
30
32
  [follow, match, path, target, text] <=> [other.follow, other.match, other.path, other.target, other.text]
31
33
  end
32
34
 
33
- def to_s
34
- "On line #{line_number} of #{path}: #{follow} #{match} #{target} #{link} => '#{text}'"
35
- end
36
-
37
35
  # Method prescribed by the Jekyll plugin lifecycle.
38
36
  # @param liquid_context [Liquid::Context]
39
37
  # @return [String]
@@ -42,207 +40,39 @@ module HrefTag
42
40
  linkk, error_msg = compute_linkk
43
41
  return error_msg unless linkk
44
42
 
45
- linkk = replace_vars(linkk)
46
- linkk.delete_prefix('./') # normalize relative links
43
+ linkk.delete_prefix './' # normalize relative links
47
44
  @url = linkk if @url
48
45
  @link_save = linkk
46
+
49
47
  @helper_save = @helper.clone
50
48
  globals_update(@helper.argv, linkk) # Sets @link and @text, might clear @follow and @target
51
- handle_match if @match
49
+ handle_match(@link) if @match
50
+ raise HrefError, "@link_type was not set" if @link_type == LinkType::UNKNOWN
51
+
52
52
  save_summary
53
53
  klass = " class='#{@klass}'" if @klass
54
54
  style = " style='#{@style}'" if @style
55
55
  "<a href='#{@link}'#{klass}#{style}#{@target}#{@follow}>#{@text}</a>"
56
+ rescue HRefError => e # jekyll_plugin_support handles StandardError
57
+ msg = format_error_message "#{e.message}\n<pre> {% href #{@argument_string.strip} %}</pre>"
58
+ @text = "<div class='href_error'>#{msg}</div>"
59
+ e.shorten_backtrace
60
+ @logger.error "#{e.class} raised #{msg}"
61
+ binding.pry if @pry_on_img_error # rubocop:disable Lint/Debugger
62
+ raise e if @die_on_href_error
63
+
64
+ "<div class='href_error'>#{e.class} raised in #{self.class};\n#{msg}</div>"
56
65
  end
57
66
 
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
67
+ def to_s
68
+ "On line #{line_number} of #{path}: #{follow} #{match} #{target} #{link} => '#{text}'"
244
69
  end
245
70
 
246
71
  JekyllPluginHelper.register(self, 'href')
247
72
  end
248
73
  end
74
+
75
+ require_relative 'href_match'
76
+ require_relative 'href_private'
77
+ require_relative 'href_page_title'
78
+ require_relative 'href_summary'
@@ -1,3 +1,3 @@
1
1
  module JekyllHrefVersion
2
- VERSION = '1.2.6'.freeze
2
+ VERSION = '1.2.8'.freeze
3
3
  end
data/lib/jekyll_href.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  require_relative 'href_tag'
2
2
  require_relative 'href_summary_tag'
3
3
 
4
- HrefError = Class.new(Liquid::Error)
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.8
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: 2024-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ipaddress
@@ -58,16 +58,16 @@ 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
68
+ version: 0.8.1
69
69
  - !ruby/object:Gem::Dependency
70
- name: sanitize
70
+ name: typesafe_enum
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -95,12 +95,17 @@ files:
95
95
  - README.md
96
96
  - Rakefile
97
97
  - jekyll_href.gemspec
98
+ - lib/enums.rb
98
99
  - lib/hash_array.rb
100
+ - lib/href_match.rb
101
+ - lib/href_page_title.rb
102
+ - lib/href_private.rb
103
+ - lib/href_summary.rb
99
104
  - lib/href_summary_tag.rb
100
105
  - lib/href_tag.rb
101
106
  - lib/jekyll_href.rb
102
107
  - lib/jekyll_href/version.rb
103
- - spec/hash_array_spec.rb
108
+ - spec/hash_array_spec/hash_array_spec.rb
104
109
  - spec/href_spec.rb
105
110
  - spec/spec_helper.rb
106
111
  - spec/status_persistence.txt
@@ -131,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
136
  - !ruby/object:Gem::Version
132
137
  version: '0'
133
138
  requirements: []
134
- rubygems_version: 3.3.3
139
+ rubygems_version: 3.3.7
135
140
  signing_key:
136
141
  specification_version: 4
137
142
  summary: Generates an 'a href' tag, possibly with target='_blank' and rel='nofollow'.