jekyll-wns 3.1.4 β†’ 4.0.0

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: 2fb3df193ce350ac996fb965a707f559129757461ab977c79fac36d3bb93c65d
4
- data.tar.gz: 674a53eb066831f36a133492d5603b1f2fd3536de775bab6059b4e32083b0e45
3
+ metadata.gz: 15e91d37d865ed42046e37f966254d7677a1c4cbb6f1bc0aed66563db24957ca
4
+ data.tar.gz: e3c28d73df0d986bc40664ad0cf4108bcc4c0cff2e1aa26daa33eda68890282e
5
5
  SHA512:
6
- metadata.gz: a919817f3c9f3f7fc8655f8e6cf1e3cd85f6b37219fef19ee5805fb2716ea1e9ffe7e3f7cbbdd3e40ac3fc90ac8c2756dd162e81680da1eb51e67117db469130
7
- data.tar.gz: ec283dbe5c4dee47b38412edb829d112404ce2ac9286a9cc80019e9591f549c151fde25747f2f4ae26f32c19c94a1c29e519a43193013661f3dbabab226ed4f1
6
+ metadata.gz: 139ff2525f0a3b3895a9ef82a7671cfe7978a960f791b107718e3726827c1556bd8f39179c7815ecf4e0df4f09aa5add4a40fc39c2cc96c5295cabbac0f35f06
7
+ data.tar.gz: '0197f8cf54e680d458544df89abc4272b3b85db50bbbc2a8ba9889b9e61e76b46587a8fa805d81f39548df9c0471ea556dd065eed385e5c6fc137b6328faa1fb'
@@ -2,7 +2,7 @@ name: Ruby Gem
2
2
 
3
3
  on:
4
4
  push:
5
- tags: "*"
5
+ tags: "v*"
6
6
 
7
7
  jobs:
8
8
  build:
data/README.md CHANGED
@@ -4,11 +4,11 @@ A collection of filters, tags and hooks that I use on my pages.
4
4
 
5
5
  ## Installation
6
6
 
7
- 1. Add `gem "jekyll-wns", git: "https://github.com/0xReki/jekyll-wns.git, branch: "main"` to your site's Gemfile and run `bundle`
7
+ 1. Run Μ€ bundle add jekyll-wns` and
8
8
  2. Add the following to your site's `_config.yml`:
9
9
 
10
10
  ```yml
11
- gems:
11
+ plugins:
12
12
  - jekyll-wns
13
13
  ```
14
14
 
@@ -76,6 +76,62 @@ gems:
76
76
  <p style="text-align:center" data-mce-style="text-align:center">πŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™ΏπŸ™Ύ
77
77
  ```
78
78
 
79
+ #### Ruby Annotations
80
+
81
+ ```liquid
82
+ {% ruby b|t %}
83
+
84
+ {% ruby a#b|t#s %}
85
+
86
+ {% ruby a#b#c|x#y#z %}
87
+ ```
88
+
89
+ ```html
90
+ <p><ruby><span class="rb first last" aria-hidden="true">b</span><rp>(</rp><rt first="" last="">t</rt><rp>)</rp></ruby></p>
91
+
92
+ <p><ruby><span class="rb first" aria-hidden="true">a</span><rp>(</rp><rt first="">t</rt><rp>)</rp><span class="rb last" aria-hidden="true">b</span><rp>(</rp><rt last="">s</rt><rp>)</rp></ruby></p>
93
+
94
+ <p><ruby><span class="rb first" aria-hidden="true">a</span><rp>(</rp><rt first="">x</rt><rp>)</rp><span class="rb" aria-hidden="true">b</span><rp>(</rp><rt>y</rt><rp>)</rp><span class="rb last" aria-hidden="true">c</span><rp>(</rp><rt last="">z</rt><rp>)</rp></ruby></p>
95
+ ```
96
+
97
+ #### YouTube Embed
98
+
99
+ The following snippet should be integrated into your site for the tag to properly work:
100
+
101
+ ```javascript
102
+ function loadYouTube() {
103
+ var videos = d.getElementsByClassName('youtube');
104
+ for (var i = 0; i < videos.length; i++) {
105
+ videos[i].innerHTML = d.getElementById(videos[i].getAttribute('data-videoid')).innerHTML;
106
+ }
107
+ }
108
+ ```
109
+
110
+ ```liquid
111
+ {% youtube U6xJfP7-HCc|Base 12 β€” Numberphile %}
112
+ ```
113
+
114
+ ```html
115
+ <div class="youtube" data-videoid="youtube-U6xJfP7-HCc">
116
+ <a class="btn btn-lg btn-block btn-primary" href="https://youtu.be/U6xJfP7-HCc" target="_blank" rel="noopener">
117
+ Watch β€œBase 12 β€” Numberphile” on YouTube
118
+ </a>
119
+ <a class="btn btn-lg btn-block btn-primary" href="javascript:loadYouTube();">
120
+ Load YouTube Video (3rd party script)
121
+ </a>
122
+ </div>
123
+ <script id="youtube-U6xJfP7-HCc" type="text/html">
124
+ <div style='position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;'>
125
+ <iframe
126
+ style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;'
127
+ src='https://www.youtube-nocookie.com/embed/U6xJfP7-HCc?rel=0'
128
+ frameborder='0'
129
+ allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
130
+ allowfullscreen></iframe>
131
+ </div>
132
+ </script>
133
+ ```
134
+
79
135
  ### Hooks
80
136
 
81
137
  #### Automatic replacement of spaces to en quads after each sentence
data/jekyll-wns.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "jekyll-wns"
5
- spec.version = "3.1.4"
5
+ spec.version = "4.0.0"
6
6
  spec.authors = ["Thai Chung"]
7
7
  spec.email = ["mail@0xReki.de"]
8
8
  spec.summary = "Collection of Filters, Tags and Hooks I use."
data/js/youtube.js ADDED
@@ -0,0 +1,6 @@
1
+ function loadYouTube() {
2
+ var videos = d.getElementsByClassName('youtube');
3
+ for (var i = 0; i < videos.length; i++) {
4
+ videos[i].innerHTML = d.getElementById(videos[i].getAttribute('data-videoid')).innerHTML;
5
+ }
6
+ }
data/lib/jekyll-wns.rb CHANGED
@@ -2,12 +2,16 @@ require 'liquid'
2
2
  require 'jekyll'
3
3
 
4
4
  require_relative 'jekyll-wns/assets/abbreviations'
5
+ require_relative 'jekyll-wns/assets/label_unicode'
5
6
  require_relative 'jekyll-wns/assets/quads'
6
7
 
7
8
  require_relative 'jekyll-wns/assets/digest_filters'
8
9
  require_relative 'jekyll-wns/assets/file_properties_filter'
9
10
  require_relative 'jekyll-wns/assets/quads_filter'
11
+
12
+ require_relative 'jekyll-wns/assets/ruby_tag'
10
13
  require_relative 'jekyll-wns/assets/scene_break_tag'
14
+ require_relative 'jekyll-wns/assets/youtube_tag'
11
15
 
12
16
  require_relative 'jekyll-wns/register_filters'
13
17
  require_relative 'jekyll-wns/register_hooks'
@@ -1,19 +1,28 @@
1
1
  module WNS
2
2
  module Abbreviations
3
- MAIN_EXPRESSION = /([a-zA-Z])\.([a-zA-Z])\.(,|) /
4
- MAIN_REPLACEMENT = "\\1.&#8239;\\2.\\3&nbsp;"
5
- CLEANUP_EXPRESSION = /, ([a-zA-Z]\.&)/
6
- CLEANUP_REPLACEMENT = ",&nbsp;\\1"
3
+ THREE_LETTER_EXPRESSION = /([a-zA-Z]\.)([a-zA-Z]\.)([a-zA-Z]\.)(,|) /
4
+ THREE_LETTER_REPLACEMENT = "\\1&#8239;\\2&#8239;\\3\\4&nbsp;"
7
5
 
8
- def enabled?(doc)
6
+ TWO_LETTER_EXPRESSION = /([a-zA-Z]\.)([a-zA-Z]\.)(,|) /
7
+ TWO_LETTER_REPLACEMENT = "\\1&#8239;\\2\\3&nbsp;"
8
+
9
+ TITLE_EXPRESSION = /(Mr|Ms|Mrs|Messrs|Mmes|Msgr|Prof|Rev|Dr|Sr|St|[A-Z][a-z]|[A-Z][a-z][a-z])(\.|)(,|) /
10
+ TITLE_REPLACEMENT = "\\1\\2\\3&nbsp;"
11
+
12
+ PREFIX_EXPRESSION = /, ([a-zA-Z]\.&)/
13
+ PREFIX_REPLACEMENT = ",&nbsp;\\1"
14
+
15
+ def self.enabled?(doc)
9
16
  wns = doc.site.config["wns"] || {}
10
17
  wns["abbreviations"] || false
11
18
  end
12
19
 
13
- def replace_abbreviations!(doc)
20
+ def self.replace_abbreviations!(doc)
14
21
  if Abbreviations::enabled?(doc)
15
- doc.content = doc.content.gsub(Abbreviations::MAIN_EXPRESSION, Abbreviations::MAIN_REPLACEMENT)
16
- doc.content = doc.content.gsub(Abbreviations::CLEANUP_EXPRESSION, Abbreviations::CLEANUP_REPLACEMENT)
22
+ doc.content = doc.content.gsub(Abbreviations::THREE_LETTER_EXPRESSION, Abbreviations::THREE_LETTER_REPLACEMENT)
23
+ doc.content = doc.content.gsub(Abbreviations::TWO_LETTER_EXPRESSION, Abbreviations::TWO_LETTER_REPLACEMENT)
24
+ doc.content = doc.content.gsub(Abbreviations::TITLE_EXPRESSION, Abbreviations::TITLE_REPLACEMENT)
25
+ doc.content = doc.content.gsub(Abbreviations::PREFIX_EXPRESSION, Abbreviations::PREFIX_REPLACEMENT)
17
26
  end
18
27
  end
19
28
  end
@@ -0,0 +1,19 @@
1
+ module WNS
2
+ module LabelUnicode
3
+ SYMBOLS = [/(β… )/, /(β…‘)/, /(β…’)/, /(β…£)/, /(β…€)/, /(β…₯)/, /(β…¦)/, /(β…§)/, /(β…¨)/, /(β…©)/]
4
+ READINGS = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
5
+
6
+ def self.enabled?(doc)
7
+ wns = doc.site.config["wns"] || {}
8
+ wns["label_unicode"] || false
9
+ end
10
+
11
+ def self.label_unicode!(doc)
12
+ if LabelUnicode::enabled?(doc)
13
+ for i in (0..(LabelUnicode::SYMBOLS.length()) - 1) do
14
+ doc.content = doc.content.gsub(LabelUnicode::SYMBOLS[i], "<span aria-label='#{LabelUnicode::READINGS[i]}'>\\1</span>")
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -5,14 +5,20 @@ module WNS
5
5
  CLEANUP_EXPRESSION = /&ensp;( |> )*/
6
6
  CLEANUP_REPLACEMENT = "&ensp;"
7
7
 
8
- def enabled?(doc)
8
+ def self.enabled?(doc)
9
9
  wns = doc.site.config["wns"] || {}
10
10
  quads = wns["quads"] || false
11
11
  end
12
12
 
13
- def quads(input)
13
+ def self.insert_quads(input)
14
14
  output = input.gsub(MAIN_EXPRESSION, MAIN_REPLACEMENT)
15
15
  output = output.gsub(CLEANUP_EXPRESSION, CLEANUP_REPLACEMENT)
16
16
  end
17
+
18
+ def self.insert_quads_into_document!(doc)
19
+ if Quads::enabled?(doc)
20
+ doc.content = insert_quads doc.content
21
+ end
22
+ end
17
23
  end
18
24
  end
@@ -0,0 +1,21 @@
1
+ module WNS
2
+ class RubyTag < Liquid::Tag
3
+ def initialize(tag_name, text, tokens)
4
+ super
5
+
6
+ @text = text.strip!.split("|")
7
+ end
8
+
9
+ def render(context)
10
+ base = @text[0].split("#")
11
+ text = @text[1].split("#")
12
+ output = "<ruby>"
13
+ i = 0
14
+ while i < base.length()
15
+ output += "<span class='rb" + (i == 0 ? " first" : "") + (i == base.length() - 1 ? " last" : "") + "' aria-hidden='true'>#{base[i]}</span><rp>(</rp><rt" + (i == 0 ? " first" : "") + (i == base.length() - 1 ? " last" : "") + ">#{text[i]}</rt><rp>)</rp>"
16
+ i += 1
17
+ end
18
+ output += "</ruby>"
19
+ end
20
+ end
21
+ end
@@ -13,7 +13,7 @@ module WNS
13
13
  when "wave"
14
14
  '<p style="text-align:center;letter-spacing:-.13em" data-mce-style="text-align:center;letter-spacing:-.13em">◠◑◠◑◠◑◠◑◠◑◠◑◠◑◠◑◠◑◠◑◠‏</p>'
15
15
  when "wall"
16
- '<p style="text-align:center;letter-spacing:-.2em" data-mce-style="text-align:center;letter-spacing:-.2em">β€ŽβšŽβ€βšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽβšβ€ŽβšŽ</p>'
16
+ '<p style="text-align:center;letter-spacing:-.2em" data-mce-style="text-align:center;letter-spacing:-.2em">⚎⚍⚎⚍⚎⚍⚎⚍⚎⚍⚎⚍⚎⚍⚎⚍⚎⚍⚎⚍</p>'
17
17
  else
18
18
  '<p style="text-align:center" data-mce-style="text-align:center">πŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™ΏπŸ™ΎπŸ™Ώ</p>'
19
19
  end
@@ -0,0 +1,30 @@
1
+ module WNS
2
+ class YoutubeTag < Liquid::Tag
3
+ def initialize(tag_name, text, tokens)
4
+ super
5
+ @text = text.strip!.split("|")
6
+ end
7
+
8
+ def render(context)
9
+ "<div class='youtube' data-videoid='youtube-" + @text[0] + "'>
10
+ <a class='btn btn-lg btn-block btn-primary' href='https://youtu.be/" + @text[0] + "' target='_blank' rel='noopener'>
11
+ Watch β€œ" + @text[1] + "” on YouTube
12
+ </a>
13
+ <a class='btn btn-lg btn-block btn-primary'
14
+ href='javascript:loadYouTube();'>
15
+ Load YouTube Video (3rd party script)
16
+ </a>
17
+ </div>
18
+ <script id='youtube-" + @text[0] + "' type='text/html'>
19
+ <div style='position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden;'>
20
+ <iframe
21
+ style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;'
22
+ src='https://www.youtube-nocookie.com/embed/" + @text[0] + "?rel=0'
23
+ frameborder='0'
24
+ allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture'
25
+ allowfullscreen></iframe>
26
+ </div>
27
+ </script>"
28
+ end
29
+ end
30
+ end
@@ -1,11 +1,21 @@
1
- Jekyll::Hooks.register :documents, :pre_render do |document|
2
- WNS::Abbreviations::replace_abbreviations! document
1
+ Jekyll::Hooks.register :pages, :pre_render do |document|
2
+ if document.path =~ /(.md|.html)/
3
+ WNS::Quads::insert_quads_into_document! document
4
+ end
3
5
  end
4
6
 
5
- Jekyll::Hooks.register :pages, :pre_render do |document|
6
- WNS::Abbreviations::replace_abbreviations! document
7
+ Jekyll::Hooks.register :pages, :post_render do |document|
8
+ if document.path =~ /(.md|.html)/
9
+ WNS::Abbreviations::replace_abbreviations! document
10
+ WNS::LabelUnicode::label_unicode! document
11
+ end
7
12
  end
8
13
 
9
14
  Jekyll::Hooks.register :posts, :pre_render do |document|
15
+ WNS::Quads::insert_quads_into_document! document
16
+ end
17
+
18
+ Jekyll::Hooks.register :posts, :post_render do |document|
10
19
  WNS::Abbreviations::replace_abbreviations! document
20
+ WNS::LabelUnicode::label_unicode! document
11
21
  end
@@ -1 +1,3 @@
1
1
  Liquid::Template.register_tag('scene_break', WNS::SceneBreakTag)
2
+ Liquid::Template.register_tag('youtube', WNS::YoutubeTag)
3
+ Liquid::Template.register_tag('ruby', WNS::RubyTag)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-wns
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.4
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thai Chung
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-08 00:00:00.000000000 Z
11
+ date: 2021-06-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -23,14 +23,18 @@ files:
23
23
  - LICENSE
24
24
  - README.md
25
25
  - jekyll-wns.gemspec
26
+ - js/youtube.js
26
27
  - lib/.ruby-version
27
28
  - lib/jekyll-wns.rb
28
29
  - lib/jekyll-wns/assets/abbreviations.rb
29
30
  - lib/jekyll-wns/assets/digest_filters.rb
30
31
  - lib/jekyll-wns/assets/file_properties_filter.rb
32
+ - lib/jekyll-wns/assets/label_unicode.rb
31
33
  - lib/jekyll-wns/assets/quads.rb
32
34
  - lib/jekyll-wns/assets/quads_filter.rb
35
+ - lib/jekyll-wns/assets/ruby_tag.rb
33
36
  - lib/jekyll-wns/assets/scene_break_tag.rb
37
+ - lib/jekyll-wns/assets/youtube_tag.rb
34
38
  - lib/jekyll-wns/register_filters.rb
35
39
  - lib/jekyll-wns/register_hooks.rb
36
40
  - lib/jekyll-wns/register_tags.rb