jekyll-spaceship 0.9.7 → 0.9.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf1f9c38de511a38ca120048c76fa129f9052acb224eed310ceaada9e94421a0
4
- data.tar.gz: 7fb2cf77d779023e060d25950e0edf466b6e23e7b30994fba8a656239cd6c100
3
+ metadata.gz: feae82926b331a1fc32b0ed226447d3d58b6721c7187035ae3d82f297970e979
4
+ data.tar.gz: c34eef77784ba8087689780e75548318a91e188073995bbe0922d27abee1d0bc
5
5
  SHA512:
6
- metadata.gz: 412b791444ca4a08219a8d9e8099ab3f695e435466d27bd7810c368bf6dfe2039cfc5c2275af04db3495cd7d06547283ed49d30a613884fa0a10b65f55a841ea
7
- data.tar.gz: e399f4b1175694f91b00c1504b6ecb89dc43799ff77f600962f2ebbf45043708fc7c82bb3bbfb4728738e6ccf202a6d1be4b260f8e10b52b24523180f8f2ef1a
6
+ metadata.gz: b5e6ed122db069ffdc833eec1a360ee90257b356632ba4732a0b47a49a2ef9a41934d7e7de7eb23a03f61cf49d9347183d9d3cad88f1d9b6b79735cf100651a2
7
+ data.tar.gz: 8fca41fbf22600014b6c5b87f31b31b744447854effdf0099d446293e78d032bbdcc102a222c58a9fd05c7dd7f6088cea28575181e2e337488bd993c23504f93
@@ -1,6 +1,6 @@
1
1
  # These are supported funding model platforms
2
2
 
3
- github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
3
+ github: jeffreytse # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4
4
  patreon: jeffreytse
5
5
  open_collective: # Replace with a single Open Collective username
6
6
  ko_fi: jeffreytse
@@ -16,31 +16,67 @@ module Jekyll::Spaceship
16
16
  end
17
17
 
18
18
  def on_handle_html(content)
19
- # handle emoji markup
20
- content.scan(/:([\w\d+-]+):/) do |match|
19
+ emoji_filter(content, 'pre code') do |emoji|
20
+ # mark current file has been handled
21
+ self.handled = true
22
+
23
+ # here is the replacement content
24
+ "<img class=\"#{config['css']['class']}\""\
25
+ " title=\":#{emoji.name}:\""\
26
+ " alt=\":#{emoji.name}:\""\
27
+ " raw=\"#{emoji.raw}\""\
28
+ " src=\"#{config['src']}#{emoji.image_filename}\""\
29
+ " style=\"vertical-align: middle; display: inline;"\
30
+ " max-width: 1em; visibility: hidden;\""\
31
+ " onload=\"this.style.visibility='visible'\""\
32
+ " onerror=\"this.replaceWith(this.getAttribute('raw'))\">"\
33
+ "</img>"
34
+ end
35
+ end
36
+
37
+ def emoji_filter(content, selector)
38
+ # use nokogiri to parse html
39
+ doc = Nokogiri::HTML(content)
40
+ body = doc.at('body')
41
+
42
+ # filter nodes (pre, code)
43
+ nodes = body.css(selector)
44
+ nodes.each do |node|
45
+ # handle emoji markup
46
+ node.inner_html = node.inner_html.gsub(
47
+ /:([\w\d+-]+?):/, '\:\1\:'
48
+ )
49
+ end
50
+
51
+ # parse the emoji
52
+ content = body.inner_html
53
+ content.scan(/(?<!\\):([\w\d+-]+?)(?<!\\):/) do |match|
54
+ # Skip invalid emoji name
21
55
  emoji = Emoji.find_by_alias match[0]
22
56
  next if emoji.nil?
23
- self.handled = true
24
57
 
25
58
  # escape plus sign
26
59
  emoji_name = emoji.name.gsub('+', '\\\+')
27
- css_class = self.config['css']['class']
60
+
61
+ result = yield emoji
62
+ next if result.nil?
28
63
 
29
64
  content = content.gsub(
30
65
  /(?<!\=")\s*:#{emoji_name}:\s*(?!"\s)/,
31
- "<img class=\"#{css_class}\""\
32
- " title=\":#{emoji.name}:\""\
33
- " alt=\":#{emoji.name}:\""\
34
- " raw=\"#{emoji.raw}\""\
35
- " src=\"#{config['src']}#{emoji.image_filename}\""\
36
- " style=\"vertical-align: middle; display: inline;"\
37
- " max-width: 1em; visibility: hidden;\""\
38
- " onload=\"this.style.visibility='visible'\""\
39
- " onerror=\"this.replaceWith(this.getAttribute('raw'))\">"\
40
- "</img>"
66
+ result)
67
+ end
68
+
69
+ body.inner_html = content
70
+
71
+ # restore nodes (pre, code)
72
+ nodes.each do |node|
73
+ # handle emoji markup
74
+ node.inner_html = node.inner_html.gsub(
75
+ /\\:([\w\d+-]+?)\\:/, ':\1:'
41
76
  )
42
77
  end
43
- content
78
+
79
+ doc.to_html
44
80
  end
45
81
  end
46
82
  end
@@ -44,7 +44,7 @@ module Jekyll::Spaceship
44
44
  next if is_excluded
45
45
  escaped_expr = expr
46
46
  .gsub(/(?<!^)\\(?!\S$)/, '\\\\\\\\')
47
- .gsub(/(?<!\\)\$/, '\\\$')
47
+ .gsub(/(?<!\\)\$\$/, '\\\$\\\$')
48
48
  .gsub(/\\ /, '\\\\\\ ')
49
49
  content = content.gsub(expr, escaped_expr)
50
50
  end
@@ -60,6 +60,9 @@ module Jekyll::Spaceship
60
60
  end
61
61
 
62
62
  def handle_mermaid(code)
63
+ # Handle extra empty lines, otherwise it would cause error
64
+ code = code.gsub(/\n\s*\n/, "\n%%-\n")
65
+
63
66
  # encode to UTF-8
64
67
  code = code.encode('UTF-8')
65
68
  url = get_url(code)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Spaceship
5
- VERSION = "0.9.7"
5
+ VERSION = "0.9.8"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-spaceship
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - jeffreytse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-06 00:00:00.000000000 Z
11
+ date: 2021-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll