jekyll-wns 3.1.4 β†’ 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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