jekyll_href 1.0.13 → 1.0.14

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: f6a4d85b016759a94f6242ea415a19cb5870f1e3b51e7f4c5141f95f6c817877
4
- data.tar.gz: 072b91a1e7919924daecb086549caaad4f30a071a88b9ad4b32c81d92056d946
3
+ metadata.gz: e77bc04770e6fae8eeb1a595be3e3faf81fe6c77c023a9a711a3a97d51b3a828
4
+ data.tar.gz: c9ff34ea2c4611fefb8f36e99471ad55a490b60d68c255fbcc06ce3791acc90e
5
5
  SHA512:
6
- metadata.gz: e816084465970281cfc16416f2cfcd30807d6f318833d9dfa39e2a48f178f3e0aa865f1ef5e53b4b6be90160fe9d0a6647cbb2eb166254953711e210c82e1fd4
7
- data.tar.gz: 146e99be071aeae009e47dff919265b569bc4d314a4239a87d02606d4a8d72522096be01379fda529fbe194120202ae1f298b4a541686e554f95dd2632a8f40b
6
+ metadata.gz: 9727eed971f210d18ab6826a297b5563bf899ab1c14bbd9a988fa31405d1521357ca6fa48894ab3dfacfda11371f025c83908ed5ef1519ce7fb04ba9f25605d9
7
+ data.tar.gz: e82fbe117198467601a940fbc24fd9a2a40ec802b263e43324cfaaca7467f8b704f16ad1dc6214a02154ba88f04006de7f9830c08a2857c49a8614515f016f4e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 1.0.14 / 2023-01-09
2
+ * Added `blank` parameter.
3
+
1
4
  ## 1.0.13 / 2022-12-14
2
5
  * Links with embedded spaces are now supported when the new 'url' named parameter is used. For example, instead of specifying:
3
6
  ```
data/README.md CHANGED
@@ -10,7 +10,8 @@ If the url starts with `http`, or the `match` keyword is specified:
10
10
  - The url will open in a new tab or window.
11
11
  - The url will include `rel=nofollow` for SEO purposes.
12
12
 
13
- CAUTION: if linked text contains a single or double quote you will see the error message: `Liquid Exception: Unmatched quote`. Instead, use ‘, ’, “, ”
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
15
 
15
16
  In `_config.yml`, if a section called `plugin-vars` exists,
16
17
  then its name/value pairs are available for substitution.
@@ -23,7 +24,7 @@ then its name/value pairs are available for substitution.
23
24
 
24
25
  ## Syntax 1 (requires `url` does not have embedded spaces):
25
26
  ```
26
- {% href [match | [follow] [notarget]] url text to display %}
27
+ {% href [match | [follow] [blank|notarget]] url text to display %}
27
28
  ```
28
29
  1. The url must be a single token, without embedded spaces.
29
30
  2. The url need not be enclosed in quotes.
@@ -33,10 +34,10 @@ then its name/value pairs are available for substitution.
33
34
  ## Syntax 2 (always works):
34
35
  This syntax is recommended when the URL contains a colon (:).
35
36
  ```
36
- {% href [match | [follow] [notarget]]
37
+ {% href [match | [follow] [blank|notarget]]
37
38
  url="http://link.com with space.html" some text %}
38
39
 
39
- {% href [match | [follow] [notarget]]
40
+ {% href [match | [follow] [blank|notarget]]
40
41
  url='http://link.com with space.html' some text %}
41
42
  ```
42
43
  1. Each of the above examples contain an embedded newline, which is legal.
@@ -44,6 +45,17 @@ This syntax is recommended when the URL contains a colon (:).
44
45
  3. The square brackets denote optional keyword parameters, and should not be typed.
45
46
 
46
47
 
48
+ ## Syntax 3 (implicit URL):
49
+ ```
50
+ {% href [match | [follow] [blank|notarget]] www.domain.com %}
51
+ ```
52
+ The URI provided, for example `www.domain.com`,
53
+ is used to form the URL by prepending `https://`,
54
+ in this case the result would be `https://www.domain.com`.
55
+ The displayed URI is enclosed in `<code></code>`,
56
+ so the resulting text is `<code>www.domain.com</code>`.
57
+
58
+
47
59
  ## Environment Variable Expansion
48
60
  URLs can contain environment variable references.
49
61
  For example, if `$domain`, `$uri` and `$USER` are environment variables:
@@ -56,12 +68,20 @@ For example, if `$domain`, `$uri` and `$USER` are environment variables:
56
68
  ```
57
69
 
58
70
  ## Optional Parameters
71
+ ### `blank`
72
+ The `target='_blank'` attribute is not normally generated for relative links.
73
+ To enforce the generation of this attribute, preface the link with the word `blank`.
74
+ The `blank` and `notarget` parameters are mutually exclusive.
75
+ If both are specified, `blank` prevails.
76
+
59
77
  ### `follow`
60
78
  To suppress the `nofollow` attribute, preface the link with the word `follow`.
61
79
 
62
80
 
63
81
  ### `notarget`
64
82
  To suppress the `target` attribute, preface the link with the word `notarget`.
83
+ The `blank` and `notarget` parameters are mutually exclusive.
84
+ If both are specified, `blank` prevails.
65
85
 
66
86
 
67
87
  ### `match`
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllHrefVersion
4
- VERSION = "1.0.13"
4
+ VERSION = "1.0.14"
5
5
  end
data/lib/jekyll_href.rb CHANGED
@@ -77,7 +77,7 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
77
77
  abort msg.red
78
78
  end
79
79
 
80
- def globals_initial(liquid_context)
80
+ def globals_initial(liquid_context) # rubocop:disable Metrics/MethodLength
81
81
  # Sets @follow, @helper, @match, @page, @path, @site, @target, @url
82
82
  @helper.liquid_context = liquid_context
83
83
 
@@ -88,11 +88,13 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
88
88
 
89
89
  @follow = @helper.parameter_specified?('follow') ? '' : " rel='nofollow'"
90
90
  @match = @helper.parameter_specified?('match')
91
- @target = @helper.parameter_specified?('notarget') ? '' : " target='_blank'"
91
+ @blank = @helper.parameter_specified?('blank')
92
+ @target = @blank ? " target='_blank'" : nil
93
+ @target ||= @helper.parameter_specified?('notarget') ? '' : " target='_blank'"
92
94
  @url = @helper.parameter_specified?('url')
93
95
  end
94
96
 
95
- def globals_update(tokens, linkk) # rubocop:disable Metrics/MethodLength
97
+ def globals_update(tokens, linkk) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
96
98
  # Might set @follow, @linkk, @target, and @text
97
99
  if linkk.start_with? 'mailto:'
98
100
  @link = linkk
@@ -116,13 +118,13 @@ class ExternalHref < Liquid::Tag # rubocop:disable Metrics/ClassLength
116
118
  return if @link.start_with? "http"
117
119
 
118
120
  @follow = ''
119
- @target = ''
121
+ @target = '' unless @blank
120
122
  end
121
123
 
122
124
  def handle_match
123
125
  match_post
124
126
  @follow = ''
125
- @target = ''
127
+ @target = '' unless @blank
126
128
  end
127
129
 
128
130
  def match_post # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
data/spec/href_spec.rb CHANGED
@@ -61,6 +61,22 @@ class MyTest # rubocop:disable Metrics/ClassLength
61
61
  )
62
62
  end
63
63
 
64
+ it "Obtains internal link with blank" do
65
+ href = ExternalHref.send(
66
+ :new,
67
+ 'href',
68
+ 'blank ./path/page.html internal link text'.dup,
69
+ parse_context
70
+ )
71
+ href.send(:globals_initial, parse_context)
72
+ linkk = href.send(:compute_linkk)
73
+ href.send(:globals_update, href.helper.argv, linkk)
74
+ expect(href.follow).to eq('')
75
+ expect(href.link).to eq('./path/page.html')
76
+ expect(href.target).to eq(" target='_blank'")
77
+ expect(href.text).to eq('internal link text')
78
+ end
79
+
64
80
  it "Obtains external link with text" do
65
81
  href = ExternalHref.send(
66
82
  :new,
@@ -158,7 +174,39 @@ class MyTest # rubocop:disable Metrics/ClassLength
158
174
  expect(href.text).to eq('Awesome')
159
175
  end
160
176
 
161
- it "Obtains external link with follow and notarget but without text" do
177
+ it "Obtains external link with blank" do
178
+ href = ExternalHref.send(
179
+ :new,
180
+ 'href',
181
+ 'blank https://www.mslinn.com Awesome'.dup,
182
+ parse_context
183
+ )
184
+ href.send(:globals_initial, parse_context)
185
+ linkk = href.send(:compute_linkk)
186
+ href.send(:globals_update, href.helper.argv, linkk)
187
+ expect(href.follow).to eq(" rel='nofollow'")
188
+ expect(href.link).to eq('https://www.mslinn.com')
189
+ expect(href.target).to eq(" target='_blank'")
190
+ expect(href.text).to eq('Awesome')
191
+ end
192
+
193
+ it "Implicitly computes external link from text" do
194
+ href = ExternalHref.send(
195
+ :new,
196
+ 'href',
197
+ 'www.mslinn.com'.dup,
198
+ parse_context
199
+ )
200
+ href.send(:globals_initial, parse_context)
201
+ linkk = href.send(:compute_linkk)
202
+ href.send(:globals_update, href.helper.argv, linkk)
203
+ expect(href.follow).to eq(" rel='nofollow'")
204
+ expect(href.link).to eq('https://www.mslinn.com')
205
+ expect(href.target).to eq(" target='_blank'")
206
+ expect(href.text).to eq('<code>www.mslinn.com</code>')
207
+ end
208
+
209
+ it "Implicitly computes external link from text with follow and notarget" do
162
210
  href = ExternalHref.send(
163
211
  :new,
164
212
  'href',
@@ -174,6 +222,22 @@ class MyTest # rubocop:disable Metrics/ClassLength
174
222
  expect(href.text).to eq('<code>www.mslinn.com</code>')
175
223
  end
176
224
 
225
+ it "Implicitly computes external link from text with blank" do
226
+ href = ExternalHref.send(
227
+ :new,
228
+ 'href',
229
+ 'follow blank www.mslinn.com'.dup,
230
+ parse_context
231
+ )
232
+ href.send(:globals_initial, parse_context)
233
+ linkk = href.send(:compute_linkk)
234
+ href.send(:globals_update, href.helper.argv, linkk)
235
+ expect(href.follow).to eq('')
236
+ expect(href.link).to eq('https://www.mslinn.com')
237
+ expect(href.target).to eq(" target='_blank'")
238
+ expect(href.text).to eq('<code>www.mslinn.com</code>')
239
+ end
240
+
177
241
  it "Obtains mailto without text" do
178
242
  href = ExternalHref.send(
179
243
  :new,
@@ -1,11 +1,15 @@
1
- example_id | status | run_time |
2
- ---------------------------------------------------------------- | ------ | --------------- |
3
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:1] | passed | 0.06693 seconds |
4
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:2] | passed | 0.06422 seconds |
5
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:3] | passed | 0.03492 seconds |
6
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:4] | passed | 0.05285 seconds |
7
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:5] | passed | 0.04698 seconds |
8
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:6] | passed | 0.05677 seconds |
9
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:7] | passed | 0.04366 seconds |
10
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:8] | passed | 0.0328 seconds |
11
- /mnt/f/work/jekyll/my_plugins/jekyll_href/spec/href_spec.rb[1:9] | passed | 0.05795 seconds |
1
+ example_id | status | run_time |
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 |
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.13
4
+ version: 1.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Slinn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-18 00:00:00.000000000 Z
11
+ date: 2023-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll