lbenicio-minimal-v1 1.0.3 → 1.0.6

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +471 -0
  3. data/_includes/analytics.html +10 -0
  4. data/_includes/anchor_headings.html +172 -0
  5. data/_includes/blog-navigation.html +18 -0
  6. data/_includes/conclusion.html +4 -0
  7. data/_includes/footer.html +13 -0
  8. data/_includes/fork.html +6 -0
  9. data/_includes/head.html +45 -0
  10. data/_includes/navigation.html +42 -0
  11. data/_includes/pagination.html +23 -0
  12. data/_includes/postList.html +20 -0
  13. data/_layouts/autopage_category.html +9 -0
  14. data/_layouts/autopage_collection.html +7 -0
  15. data/_layouts/autopage_tags.html +9 -0
  16. data/_layouts/default.html +28 -0
  17. data/_layouts/home.html +19 -0
  18. data/_layouts/posts.html +7 -0
  19. data/assets/favicon.ico +0 -0
  20. data/assets/monokai.scss +354 -0
  21. data/assets/postStyle.scss +26 -0
  22. data/assets/profile.jpg +0 -0
  23. data/assets/style.scss +143 -0
  24. data/assets/vendor/all.min.css +5 -0
  25. data/assets/webfonts/fa-brands-400.eot +0 -0
  26. data/assets/webfonts/fa-brands-400.svg +3717 -0
  27. data/assets/webfonts/fa-brands-400.ttf +0 -0
  28. data/assets/webfonts/fa-brands-400.woff +0 -0
  29. data/assets/webfonts/fa-brands-400.woff2 +0 -0
  30. data/assets/webfonts/fa-regular-400.eot +0 -0
  31. data/assets/webfonts/fa-regular-400.svg +801 -0
  32. data/assets/webfonts/fa-regular-400.ttf +0 -0
  33. data/assets/webfonts/fa-regular-400.woff +0 -0
  34. data/assets/webfonts/fa-regular-400.woff2 +0 -0
  35. data/assets/webfonts/fa-solid-900.eot +0 -0
  36. data/assets/webfonts/fa-solid-900.svg +5034 -0
  37. data/assets/webfonts/fa-solid-900.ttf +0 -0
  38. data/assets/webfonts/fa-solid-900.woff +0 -0
  39. data/assets/webfonts/fa-solid-900.woff2 +0 -0
  40. data/benchmark/capture-assign.rb +23 -0
  41. data/benchmark/conditional_liquid.rb +102 -0
  42. data/benchmark/end-with-vs-regexp +18 -0
  43. data/benchmark/file-dir-ensure-trailing-slash +56 -0
  44. data/benchmark/find-filter-vs-where-first-filters.rb +49 -0
  45. data/benchmark/flat-map +19 -0
  46. data/benchmark/hash-fetch +12 -0
  47. data/benchmark/jekyll-sanitize-path +47 -0
  48. data/benchmark/local-require +29 -0
  49. data/benchmark/native-vs-pathutil-relative +33 -0
  50. data/benchmark/parse-date +26 -0
  51. data/benchmark/parse-include-tag-params.rb +85 -0
  52. data/benchmark/path-manager.rb +65 -0
  53. data/benchmark/proc-call-vs-yield +17 -0
  54. data/benchmark/regexp-vs-include.rb +53 -0
  55. data/benchmark/sanitize-url.rb +27 -0
  56. data/benchmark/schwartzian_transform.rb +110 -0
  57. data/benchmark/sequential-assignment +15 -0
  58. data/benchmark/static-drop-vs-forwarded.rb +83 -0
  59. data/benchmark/string-concat +11 -0
  60. data/benchmark/string-replacement +16 -0
  61. data/benchmark/symbol-to-proc +9 -0
  62. data/rubocop/jekyll/assert_equal_literal_actual.rb +149 -0
  63. data/rubocop/jekyll/no_p_allowed.rb +23 -0
  64. data/rubocop/jekyll/no_puts_allowed.rb +23 -0
  65. data/rubocop/jekyll.rb +5 -0
  66. metadata +71 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 329f710c7d887fe970bf1cc931febede11eb5cb7065cd1f9dd0f44a858e36643
4
- data.tar.gz: 87dbb85b348cfe97b5694fd67f3da4e310686ddbc06487817a426f722448d7c0
3
+ metadata.gz: '07108a7bb9378bc1e91c5e2509d5c7100b956e290759504d459fb78a035f41dd'
4
+ data.tar.gz: a7e6631674b21031b29b6a3f783ac944baf27bff8ffd75d4124cbad7a0fe3b66
5
5
  SHA512:
6
- metadata.gz: a4151e1f9ad1cb6e490069e63056049b4b7f60008763ab3253f6e76ebfc8f1332ac184e9547c214228331b45c5f3d1a7d6c4e4c35f49da16bd2c3471798f5f56
7
- data.tar.gz: 52e182a31d91ab07c4054253dd73fa6c9f8296ca60432392a58a0c983904a3744cfecc5a0af25f7ad8251cf7d7789387d956e43b2b62eecf94ba693d7455e94a
6
+ metadata.gz: 05bd1b6f6344b5223652a2453b0e357f70149b81c618c836515c29c6be134bc4dcf7fc5f15091a9dc6a234a4fc4dd8f2eb1a3950ac4b93e8e04a3f212bfeaaeb
7
+ data.tar.gz: 16b40ca6ef914ef032cdc23f59d6ea2e951404c3a371d006d1a5eac332536e9b468d8a5fe4a61ab0256c4b9d72f65b1f42bc6c2db19391f88b9b46a98c6428e4
data/.rubocop.yml ADDED
@@ -0,0 +1,471 @@
1
+ require:
2
+ - rubocop-minitest
3
+ - rubocop-performance
4
+ - rubocop-rake
5
+ - rubocop-rspec
6
+ - ./rubocop/jekyll
7
+
8
+ Jekyll/NoPutsAllowed:
9
+ Exclude:
10
+ - rake/*.rake
11
+
12
+ AllCops:
13
+ TargetRubyVersion: 2.7
14
+ Include:
15
+ - lib/**/*.rb
16
+ - test/**/*.rb
17
+ Exclude:
18
+ - bin/**/*
19
+ - exe/**/*
20
+ - benchmark/**/*
21
+ - script/**/*
22
+ - vendor/**/*
23
+ - tmp/**/*
24
+
25
+ Gemspec/DeprecatedAttributeAssignment:
26
+ Enabled: true
27
+ Gemspec/RequireMFA:
28
+ Enabled: false
29
+
30
+ Layout/BeginEndAlignment:
31
+ Enabled: true
32
+ Layout/EmptyComment:
33
+ Enabled: false
34
+ Layout/EmptyLinesAroundAttributeAccessor:
35
+ Enabled: true
36
+ Layout/EndAlignment:
37
+ Severity: error
38
+ Layout/FirstArrayElementIndentation:
39
+ EnforcedStyle: consistent
40
+ Layout/FirstHashElementIndentation:
41
+ EnforcedStyle: consistent
42
+ Layout/HashAlignment:
43
+ EnforcedHashRocketStyle: table
44
+ Layout/IndentationWidth:
45
+ Severity: error
46
+ Layout/LineContinuationLeadingSpace:
47
+ Enabled: true
48
+ Layout/LineContinuationSpacing:
49
+ Enabled: true
50
+ Layout/LineEndStringConcatenationIndentation:
51
+ Enabled: true
52
+ Layout/LineLength:
53
+ Exclude:
54
+ - !ruby/regexp /features\/.*.rb/
55
+ - Rakefile
56
+ - rake/*.rake
57
+ - Gemfile
58
+ Max: 100
59
+ Severity: warning
60
+ Layout/MultilineMethodCallIndentation:
61
+ EnforcedStyle: indented
62
+ Layout/MultilineOperationIndentation:
63
+ EnforcedStyle: indented
64
+ Layout/SpaceAroundMethodCallOperator:
65
+ Enabled: true
66
+ Layout/SpaceBeforeBrackets:
67
+ Enabled: true
68
+ Layout/SpaceInsideHashLiteralBraces:
69
+ Enabled: true
70
+ Exclude:
71
+ - test/**/*.rb
72
+
73
+ Lint/AmbiguousAssignment:
74
+ Enabled: true
75
+ Lint/AmbiguousOperatorPrecedence:
76
+ Enabled: true
77
+ Lint/AmbiguousRange:
78
+ Enabled: true
79
+ Lint/BinaryOperatorWithIdenticalOperands:
80
+ Enabled: true
81
+ Lint/ConstantDefinitionInBlock:
82
+ Enabled: true
83
+ Exclude:
84
+ - test/**/*.rb
85
+ Lint/ConstantOverwrittenInRescue:
86
+ Enabled: true
87
+ Lint/DeprecatedConstants:
88
+ Enabled: true
89
+ Lint/DeprecatedOpenSSLConstant:
90
+ Enabled: true
91
+ Lint/DuplicateBranch:
92
+ Enabled: true
93
+ Lint/DuplicateElsifCondition:
94
+ Enabled: true
95
+ Lint/DuplicateRegexpCharacterClassElement:
96
+ Enabled: true
97
+ Lint/DuplicateRequire:
98
+ Enabled: true
99
+ Lint/DuplicateRescueException:
100
+ Enabled: true
101
+ Lint/EmptyBlock:
102
+ Enabled: true
103
+ Lint/EmptyClass:
104
+ Enabled: true
105
+ Lint/EmptyConditionalBody:
106
+ Enabled: true
107
+ Lint/EmptyFile:
108
+ Enabled: true
109
+ Lint/FloatComparison:
110
+ Enabled: true
111
+ Lint/HashCompareByIdentity:
112
+ Enabled: true
113
+ Lint/IdentityComparison:
114
+ Enabled: true
115
+ Lint/LambdaWithoutLiteralBlock:
116
+ Enabled: true
117
+ Lint/MissingSuper:
118
+ Enabled: false
119
+ Lint/MixedRegexpCaptureTypes:
120
+ Enabled: false
121
+ Lint/NestedPercentLiteral:
122
+ Exclude:
123
+ - test/test_site.rb
124
+ Lint/NoReturnInBeginEndBlocks:
125
+ Enabled: true
126
+ Lint/NumberedParameterAssignment:
127
+ Enabled: true
128
+ Lint/OrAssignmentToConstant:
129
+ Enabled: true
130
+ Lint/OutOfRangeRegexpRef:
131
+ Enabled: true
132
+ Lint/RaiseException:
133
+ Enabled: true
134
+ Lint/RedundantDirGlobSort:
135
+ Enabled: true
136
+ Lint/RedundantSafeNavigation:
137
+ Enabled: true
138
+ Lint/RequireRangeParentheses:
139
+ Enabled: true
140
+ Lint/RequireRelativeSelfPath:
141
+ Enabled: true
142
+ Lint/SelfAssignment:
143
+ Enabled: true
144
+ Lint/StructNewOverride:
145
+ Enabled: true
146
+ Lint/SymbolConversion:
147
+ Enabled: true
148
+ Lint/ToEnumArguments:
149
+ Enabled: false
150
+ Lint/TopLevelReturnWithArgument:
151
+ Enabled: true
152
+ Lint/TrailingCommaInAttributeDeclaration:
153
+ Enabled: true
154
+ Lint/TripleQuotes:
155
+ Enabled: true
156
+ Lint/UnexpectedBlockArity:
157
+ Enabled: true
158
+ Lint/UnmodifiedReduceAccumulator:
159
+ Enabled: true
160
+ Lint/UnreachableCode:
161
+ Severity: error
162
+ Lint/UnreachableLoop:
163
+ Enabled: true
164
+ Lint/UselessMethodDefinition:
165
+ Enabled: true
166
+ Lint/UselessTimes:
167
+ Enabled: true
168
+ Lint/Void:
169
+ Exclude:
170
+ - lib/jekyll/site.rb
171
+
172
+ Metrics/AbcSize:
173
+ Max: 23
174
+ Metrics/BlockLength:
175
+ Exclude:
176
+ - test/**/*.rb
177
+ - lib/jekyll/configuration.rb
178
+ - rake/*.rake
179
+ Metrics/ClassLength:
180
+ Exclude:
181
+ - !ruby/regexp /features\/.*.rb$/
182
+ - !ruby/regexp /test\/.*.rb$/
183
+ - lib/jekyll/document.rb
184
+ - lib/jekyll/site.rb
185
+ - lib/jekyll/commands/serve.rb
186
+ - lib/jekyll/configuration.rb
187
+ Max: 240
188
+ Metrics/CyclomaticComplexity:
189
+ Exclude:
190
+ - lib/jekyll/utils.rb
191
+ - lib/jekyll/commands/serve.rb
192
+ Max: 11
193
+ Metrics/MethodLength:
194
+ CountComments: false
195
+ Max: 20
196
+ Severity: error
197
+ Metrics/ModuleLength:
198
+ Exclude:
199
+ - lib/jekyll/filters.rb
200
+ Max: 240
201
+ Metrics/ParameterLists:
202
+ Max: 4
203
+ Metrics/PerceivedComplexity:
204
+ Max: 13
205
+
206
+ Minitest/AssertEmptyLiteral:
207
+ Enabled: false
208
+ Minitest/AssertInDelta:
209
+ Enabled: true
210
+ Minitest/AssertionInLifecycleHook:
211
+ Enabled: true
212
+ Minitest/AssertKindOf:
213
+ Enabled: true
214
+ Minitest/AssertOutput:
215
+ Enabled: true
216
+ Minitest/AssertPathExists:
217
+ Enabled: true
218
+ Minitest/AssertSilent:
219
+ Enabled: true
220
+ Minitest/AssertWithExpectedArgument:
221
+ Enabled: true
222
+ Minitest/LiteralAsActualArgument:
223
+ Enabled: true
224
+ Minitest/TestMethodName:
225
+ Enabled: false
226
+ Minitest/MultipleAssertions:
227
+ Enabled: true
228
+ Minitest/RefuteInDelta:
229
+ Enabled: true
230
+ Minitest/RefuteKindOf:
231
+ Enabled: true
232
+ Minitest/RefutePathExists:
233
+ Enabled: true
234
+ Minitest/UnreachableAssertion:
235
+ Enabled: true
236
+ Minitest/UnspecifiedException:
237
+ Enabled: true
238
+
239
+ Naming/FileName:
240
+ Enabled: false
241
+ Naming/HeredocDelimiterNaming:
242
+ Exclude:
243
+ - test/**/*.rb
244
+ Naming/MemoizedInstanceVariableName:
245
+ Exclude:
246
+ - lib/jekyll/convertible.rb
247
+ - lib/jekyll/drops/site_drop.rb
248
+ - lib/jekyll/drops/unified_payload_drop.rb
249
+ - lib/jekyll/page_without_a_file.rb
250
+
251
+ Performance/AncestorsInclude:
252
+ Enabled: false
253
+ Performance/ArraySemiInfiniteRangeSlice:
254
+ Enabled: true
255
+ Performance/BigDecimalWithNumericArgument:
256
+ Enabled: true
257
+ Performance/BlockGivenWithExplicitBlock:
258
+ Enabled: true
259
+ Performance/ChainArrayAllocation:
260
+ Enabled: true
261
+ Performance/CollectionLiteralInLoop:
262
+ Enabled: true
263
+ Performance/ConstantRegexp:
264
+ Enabled: true
265
+ Performance/MapCompact:
266
+ Enabled: true
267
+ Performance/MethodObjectAsBlock:
268
+ Enabled: true
269
+ Performance/RedundantEqualityComparisonBlock:
270
+ Enabled: false
271
+ Performance/RedundantSortBlock:
272
+ Enabled: true
273
+ Performance/RedundantSplitRegexpArgument:
274
+ Enabled: true
275
+ Performance/RedundantStringChars:
276
+ Enabled: true
277
+ Performance/ReverseFirst:
278
+ Enabled: true
279
+ Performance/SortReverse:
280
+ Enabled: false
281
+ Performance/Squeeze:
282
+ Enabled: true
283
+ Performance/StringIdentifierArgument:
284
+ Enabled: true
285
+ Performance/StringInclude:
286
+ Enabled: true
287
+ Exclude:
288
+ - lib/jekyll/utils/platforms.rb
289
+ Performance/Sum:
290
+ Enabled: true
291
+
292
+ Security/CompoundHash:
293
+ Enabled: true
294
+ Security/IoMethods:
295
+ Enabled: true
296
+ Security/MarshalLoad:
297
+ Exclude:
298
+ - !ruby/regexp /test\/.*.rb$/
299
+ - lib/jekyll/regenerator.rb
300
+ Security/YAMLLoad:
301
+ Exclude:
302
+ - !ruby/regexp /features\/.*.rb/
303
+ - !ruby/regexp /test\/.*.rb$/
304
+
305
+ Style/AccessModifierDeclarations:
306
+ Enabled: false
307
+ Style/AccessorGrouping:
308
+ Enabled: true
309
+ Style/Alias:
310
+ EnforcedStyle: prefer_alias_method
311
+ Style/AndOr:
312
+ Severity: error
313
+ Style/ArgumentsForwarding:
314
+ Enabled: false
315
+ Style/ArrayCoercion:
316
+ Enabled: true
317
+ Style/BisectedAttrAccessor:
318
+ Enabled: true
319
+ Style/CaseLikeIf:
320
+ Enabled: true
321
+ Style/StringChars:
322
+ Enabled: true
323
+ Style/ClassAndModuleChildren:
324
+ Exclude:
325
+ - test/**/*.rb
326
+ Style/ClassEqualityComparison:
327
+ Enabled: true
328
+ Style/CollectionCompact:
329
+ Enabled: true
330
+ Style/CombinableLoops:
331
+ Enabled: true
332
+ Style/DocumentDynamicEvalDefinition:
333
+ Enabled: true
334
+ Style/Documentation:
335
+ Enabled: false
336
+ Style/DoubleNegation:
337
+ Enabled: false
338
+ Style/EmptyHeredoc:
339
+ Enabled: true
340
+ Style/EndlessMethod:
341
+ Enabled: true
342
+ Style/ExplicitBlockArgument:
343
+ Enabled: false
344
+ Style/ExponentialNotation:
345
+ Enabled: true
346
+ Style/EnvHome:
347
+ Enabled: true
348
+ Style/FetchEnvVar:
349
+ Enabled: false
350
+ Style/FileRead:
351
+ Enabled: false
352
+ Style/FormatStringToken:
353
+ Exclude:
354
+ - lib/jekyll/utils/ansi.rb
355
+ - lib/jekyll/liquid_renderer/table.rb
356
+ - lib/jekyll/profiler.rb
357
+ Style/FrozenStringLiteralComment:
358
+ EnforcedStyle: always
359
+ Style/FileWrite:
360
+ Enabled: true
361
+ Style/GlobalStdStream:
362
+ Enabled: true
363
+ Style/GuardClause:
364
+ Enabled: false
365
+ Style/HashAsLastArrayItem:
366
+ Enabled: true
367
+ Style/HashConversion:
368
+ Enabled: true
369
+ Style/HashEachMethods:
370
+ Enabled: true
371
+ Style/HashExcept:
372
+ Enabled: true
373
+ Style/HashLikeCase:
374
+ Enabled: true
375
+ Style/HashSyntax:
376
+ EnforcedStyle: hash_rockets
377
+ Severity: error
378
+ Style/HashTransformKeys:
379
+ Enabled: false
380
+ Style/HashTransformValues:
381
+ Enabled: true
382
+ Style/IfWithBooleanLiteralBranches:
383
+ Enabled: true
384
+ Style/KeywordParametersOrder:
385
+ Enabled: true
386
+ Style/MagicCommentFormat:
387
+ Enabled: true
388
+ Style/MapCompactWithConditionalBlock:
389
+ Enabled: true
390
+ Style/MapToHash:
391
+ Enabled: true
392
+ Style/MixinUsage:
393
+ Exclude:
394
+ - test/helper.rb
395
+ Style/ModuleFunction:
396
+ Enabled: false
397
+ Style/MultilineTernaryOperator:
398
+ Severity: error
399
+ Style/NegatedIfElseCondition:
400
+ Enabled: true
401
+ Style/NestedFileDirname:
402
+ Enabled: true
403
+ Style/NilLambda:
404
+ Enabled: true
405
+ Style/OptionalBooleanParameter:
406
+ Enabled: true
407
+ Exclude:
408
+ - lib/jekyll/log_adapter.rb
409
+ Style/PercentLiteralDelimiters:
410
+ PreferredDelimiters:
411
+ "%Q": "{}"
412
+ "%W": ()
413
+ "%q": "{}"
414
+ "%r": "!!"
415
+ "%s": ()
416
+ "%w": ()
417
+ "%x": ()
418
+ Style/QuotedSymbols:
419
+ Enabled: true
420
+ Style/RedundantArgument:
421
+ Enabled: true
422
+ Style/RedundantAssignment:
423
+ Enabled: true
424
+ Style/RedundantFetchBlock:
425
+ Enabled: false
426
+ Style/RedundantFileExtensionInRequire:
427
+ Enabled: true
428
+ Style/RedundantInitialize:
429
+ Enabled: true
430
+ Exclude:
431
+ - lib/jekyll/plugin.rb
432
+ Style/RedundantRegexpCharacterClass:
433
+ Enabled: true
434
+ Style/RedundantRegexpEscape:
435
+ Enabled: true
436
+ Style/RedundantSelfAssignment:
437
+ Enabled: true
438
+ Style/RedundantSelfAssignmentBranch:
439
+ Enabled: true
440
+ Style/RegexpLiteral:
441
+ EnforcedStyle: percent_r
442
+ Style/RescueModifier:
443
+ Enabled: false
444
+ Style/SafeNavigation:
445
+ Exclude:
446
+ - lib/jekyll/document.rb
447
+ Style/SignalException:
448
+ EnforcedStyle: only_raise
449
+ Style/SingleArgumentDig:
450
+ Enabled: true
451
+ Style/SlicingWithRange:
452
+ Enabled: false
453
+ Style/SoleNestedConditional:
454
+ Enabled: true
455
+ Style/StringConcatenation:
456
+ Enabled: true
457
+ Exclude:
458
+ - lib/jekyll/commands/*.rb
459
+ - test/**/*.rb
460
+ Style/StringLiterals:
461
+ EnforcedStyle: double_quotes
462
+ Style/StringLiteralsInInterpolation:
463
+ EnforcedStyle: double_quotes
464
+ Style/SwapValues:
465
+ Enabled: true
466
+ Style/SymbolArray:
467
+ EnforcedStyle: brackets
468
+ Style/TrailingCommaInArrayLiteral:
469
+ EnforcedStyleForMultiline: consistent_comma
470
+ Style/TrailingCommaInHashLiteral:
471
+ EnforcedStyleForMultiline: consistent_comma
@@ -0,0 +1,10 @@
1
+ {% if site.analytics.google != null %}
2
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google }}"></script>
3
+ <script>
4
+ window.dataLayer = window.dataLayer || [];
5
+ function gtag(){dataLayer.push(arguments);}
6
+ gtag('js', new Date());
7
+
8
+ gtag('config', '{{ site.analytics.google }}');
9
+ </script>
10
+ {% endif %}
@@ -0,0 +1,172 @@
1
+ {% capture headingsWorkspace %}
2
+ {% comment %}
3
+ Copyright (c) 2018 Vladimir "allejo" Jimenez
4
+
5
+ Permission is hereby granted, free of charge, to any person
6
+ obtaining a copy of this software and associated documentation
7
+ files (the "Software"), to deal in the Software without
8
+ restriction, including without limitation the rights to use,
9
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the
11
+ Software is furnished to do so, subject to the following
12
+ conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
19
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24
+ OTHER DEALINGS IN THE SOFTWARE.
25
+ {% endcomment %}
26
+ {% comment %}
27
+ Version 1.0.11
28
+ https://github.com/allejo/jekyll-anchor-headings
29
+
30
+ "Be the pull request you wish to see in the world." ~Ben Balter
31
+
32
+ Usage:
33
+ {% include anchor_headings.html html=content anchorBody="#" %}
34
+
35
+ Parameters:
36
+ * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
37
+
38
+ Optional Parameters:
39
+ * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content
40
+ * headerAttrs (string) : '' - Any custom HTML attributes that will be added to the heading tag; you may NOT use `id`;
41
+ the `%heading%` and `%html_id%` placeholders are available
42
+ * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `<a>` tag; you may NOT use `href`, `class` or `title`;
43
+ the `%heading%` and `%html_id%` placeholders are available
44
+ * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available
45
+ * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space
46
+ * anchorTitle (string) : '' - The `title` attribute that will be used for anchors
47
+ * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored
48
+ * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored
49
+ * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content
50
+ * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content
51
+ * generateId (true) : false - Set to true if a header without id should generate an id to use.
52
+
53
+ Output:
54
+ The original HTML with the addition of anchors inside of all of the h1-h6 headings.
55
+ {% endcomment %}
56
+
57
+ {% assign minHeader = include.h_min | default: 1 %}
58
+ {% assign maxHeader = include.h_max | default: 6 %}
59
+ {% assign beforeHeading = include.beforeHeading %}
60
+ {% assign headerAttrs = include.headerAttrs %}
61
+ {% assign nodes = include.html | split: '<h' %}
62
+
63
+ {% capture edited_headings %}{% endcapture %}
64
+
65
+ {% for _node in nodes %}
66
+ {% capture node %}{{ _node | strip }}{% endcapture %}
67
+
68
+ {% if node == "" %}
69
+ {% continue %}
70
+ {% endif %}
71
+
72
+ {% assign nextChar = node | replace: '"', '' | strip | slice: 0, 1 %}
73
+ {% assign headerLevel = nextChar | times: 1 %}
74
+
75
+ <!-- If the level is cast to 0, it means it's not a h1-h6 tag, so let's see if we need to fix it -->
76
+ {% if headerLevel == 0 %}
77
+ <!-- Split up the node based on closing angle brackets and get the first one. -->
78
+ {% assign firstChunk = node | split: '>' | first %}
79
+
80
+ <!-- If the first chunk does NOT contain a '<', that means we've broken another HTML tag that starts with 'h' -->
81
+ {% unless firstChunk contains '<' %}
82
+ {% capture node %}<h{{ node }}{% endcapture %}
83
+ {% endunless %}
84
+
85
+ {% capture edited_headings %}{{ edited_headings }}{{ node }}{% endcapture %}
86
+ {% continue %}
87
+ {% endif %}
88
+
89
+ {% capture _closingTag %}</h{{ headerLevel }}>{% endcapture %}
90
+ {% assign _workspace = node | split: _closingTag %}
91
+ {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
92
+ {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
93
+ {% assign escaped_header = header | strip_html | strip %}
94
+
95
+ {% assign _classWorkspace = _workspace[0] | split: 'class="' %}
96
+ {% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
97
+ {% assign _html_class = _classWorkspace[0] %}
98
+
99
+ {% if _html_class contains "no_anchor" %}
100
+ {% assign skip_anchor = true %}
101
+ {% else %}
102
+ {% assign skip_anchor = false %}
103
+ {% endif %}
104
+
105
+ {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
106
+ {% if _idWorkspace[1] %}
107
+ {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
108
+ {% assign html_id = _idWorkspace[0] %}
109
+ {% elsif include.generateId %}
110
+ <!-- If the header did not have an id we create one. -->
111
+ {% assign html_id = escaped_header | slugify %}
112
+ {% if html_id == "" %}
113
+ {% assign html_id = false %}
114
+ {% endif %}
115
+ {% capture headerAttrs %}{{ headerAttrs }} id="%html_id%"{% endcapture %}
116
+ {% endif %}
117
+
118
+ <!-- Build the anchor to inject for our heading -->
119
+ {% capture anchor %}{% endcapture %}
120
+
121
+ {% if skip_anchor == false and html_id and headerLevel >= minHeader and headerLevel <= maxHeader %}
122
+ {% if headerAttrs %}
123
+ {% capture _hAttrToStrip %}{{ _hAttrToStrip | split: '>' | first }} {{ headerAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}>{% endcapture %}
124
+ {% endif %}
125
+
126
+ {% capture anchor %}href="#{{ html_id }}"{% endcapture %}
127
+
128
+ {% if include.anchorClass %}
129
+ {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %}
130
+ {% endif %}
131
+
132
+ {% if include.anchorTitle %}
133
+ {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', escaped_header }}"{% endcapture %}
134
+ {% endif %}
135
+
136
+ {% if include.anchorAttrs %}
137
+ {% capture anchor %}{{ anchor }} {{ include.anchorAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}{% endcapture %}
138
+ {% endif %}
139
+
140
+ {% capture anchor %}<a {{ anchor }}>{{ include.anchorBody | replace: '%heading%', escaped_header | default: '' }}</a>{% endcapture %}
141
+
142
+ <!-- In order to prevent adding extra space after a heading, we'll let the 'anchor' value contain it -->
143
+ {% if beforeHeading %}
144
+ {% capture anchor %}{{ anchor }} {% endcapture %}
145
+ {% else %}
146
+ {% capture anchor %} {{ anchor }}{% endcapture %}
147
+ {% endif %}
148
+ {% endif %}
149
+
150
+ {% capture new_heading %}
151
+ <h{{ _hAttrToStrip }}
152
+ {{ include.bodyPrefix }}
153
+ {% if beforeHeading %}
154
+ {{ anchor }}{{ header }}
155
+ {% else %}
156
+ {{ header }}{{ anchor }}
157
+ {% endif %}
158
+ {{ include.bodySuffix }}
159
+ </h{{ headerLevel }}>
160
+ {% endcapture %}
161
+
162
+ <!--
163
+ If we have content after the `</hX>` tag, then we'll want to append that here so we don't lost any content.
164
+ -->
165
+ {% assign chunkCount = _workspace | size %}
166
+ {% if chunkCount > 1 %}
167
+ {% capture new_heading %}{{ new_heading }}{{ _workspace | last }}{% endcapture %}
168
+ {% endif %}
169
+
170
+ {% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %}
171
+ {% endfor %}
172
+ {% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }}
@@ -0,0 +1,18 @@
1
+ <div class="mt-1 mb-5 border-bottom border-1 border-light">
2
+ <nav class="offset-3 col-6">
3
+ <ul class="list-group list-group-horizontal justify-content-center">
4
+ <li class="list-group-item border-0">
5
+ <a class="text-dark nav-blog-links" href="/">Articles</a>
6
+ </li>
7
+ <li class="list-group-item border-0">
8
+ <a class="text-dark nav-blog-links" href="/feed/posts">Feed</a>
9
+ </li>
10
+ <li class="list-group-item border-0">
11
+ <a class="text-dark nav-blog-links" href="/category">Categories</a>
12
+ </li>
13
+ <li class="list-group-item border-0">
14
+ <a class="text-dark nav-blog-links" href="/tag">Tags</a>
15
+ </li>
16
+ </ul>
17
+ </nav>
18
+ </div>
@@ -0,0 +1,4 @@
1
+ <h1 id="conclusion"> Conclusion <a href="#conclusion" class="link-anchor">#</a> </h1>
2
+ <p>That its folks! Thank you for following up until here, and if you have any question or just want to chat, send me a message on GitHub of this project or an email. Am I doing it right? Was it a good hello world post for the blogging community?</p>
3
+ <p><a href="https://github.com/lbenicio/lbenicio.blog">https://github.com/lbenicio/lbenicio.blog</a></p>
4
+ <p><a href="mailto:hello@lbenicio.dev">hello@lbenicio.dev</a></p>
@@ -0,0 +1,13 @@
1
+ <footer class="footer border-top border-1 border-light pt-3 mt-auto fs-6 text-center text-muted">
2
+ <div class="container">
3
+ <div class="row">
4
+ <div class="offset-md-4 col-md-4 col-10 offset-1">
5
+ <p>
6
+ The theme of this blog is open sourced <a href="https://github.com/{{ site.github_username }}/{{ site.github_username }}.github.io" target="_blank" id="repo">on GitHub</a> by <a href="https://twitter.com/{{ site.twitter_username }}" target="_blank" id="twitter">{{ site.twitter_username }}</a>.
7
+ </p>
8
+ </div>
9
+ </div>
10
+ </div>
11
+ </footer>
12
+ <!-- JS -->
13
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>