jekyll-spaceship 0.4.3 → 0.5.3

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: b764caa91610338387d31e7e46e9e8a76bad9de85ae35218e5e555080fe84566
4
- data.tar.gz: ae0a3cb843e45c686f15e467809bf885692809edf54cca48a4667c6cc2685280
3
+ metadata.gz: 732fde7e5574c855d85c10741f24c63a1ba695c707772f35fe7d4fba5c4f8826
4
+ data.tar.gz: 72ec0732f4e9cf9ca469a71585ce54c6aca4d10b5964184277ca14d1abcc97ad
5
5
  SHA512:
6
- metadata.gz: 39c4090c57da17685ae4af607a5267799a71e39df0740c5e9e65ef0de121e28ae4bf735e00a55373f7ce5446424684930ce9864f82578d0eb28ed0e20e68cf80
7
- data.tar.gz: ed8ff5bb71e5763a862c6281c0d7572d3e74f082092d165f925b732e720ab02ea26fdb13bc89a9f4333313aa439aad5d0501cab48e8b9c78d862e08d14f13a03
6
+ metadata.gz: 4cfc08bf4dd2eb0ead97a61b2a6396b8ce79f2c56ac390c2a9cedbd28648d4b51193eaf36a3a005722bb0362245468c66f64b4f5d75f649b0c4bc0d640d5432b
7
+ data.tar.gz: 8dfcae47fdc9250c4ea68acfe13adecfd348b4e00a24855a6989a6922db959679948ac26d621820d033de2306d2cf8e2973e17eea5aa09f91f77174a7b070f65
@@ -0,0 +1,12 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4
+ patreon: jeffreytse
5
+ open_collective: # Replace with a single Open Collective username
6
+ ko_fi: jeffreytse
7
+ tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
+ community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
+ liberapay: jeffreytse
10
+ issuehunt: # Replace with a single IssueHunt username
11
+ otechie: # Replace with a single Otechie username
12
+ custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
@@ -27,6 +27,7 @@ deploy:
27
27
  secure: AqjHemFJsIxFuudjWzYbUGBpA5wpAB9Ate6oDZMGMnpaoSD2VgfkBDklyFfEh5uuHrh+rU6U9MPv4wknXVIV7gTTY18ATgzciLa+JCVjhAaSoPGSkORT15/kKpVp4IXIoEytj5T9D+8Wc8czd/B1+lMGGu7n7d7gMvg0HsjOLzJtAOYPrRUTaTXDLeIA+rPnsI1IzbvfHzcZvuD70XkBJWN9kiu0djlI6o51XQNumWMJrFAD/NDD3h3tZ0kkI0TalAYbWVRkZ/ZeABKAod3IRAXGt4L2MM2eYqE5KaXb/GE5wISib3I/iTCjjwrNlM+wM9a+mnOkC+elaCJm1LENqP5Ocy9wbOLYmC8i1VpPDXm2bskbj32oy1wf5zeQUf6bnPB+wDmwgCirYb7z2jQlV4BzRRkDCTftfNTa8FIi03kf+i7phjHuj18j/JC3Ww1ApRq71JAuqEnUY0wBaaN3M5abrJsYOxCRnYVPcBn/w8gfkXuhv9xvDG2OgwqIjDiECPjmbeK8Apo9kgKSrfjBQ43q62Ore6SuVCS+PZOOxVnHmfphfT4xc1atyVeMLkSvnWOa/sWTwgOSXqt1TYAEEhb734AsfXeRMzxU/LN1Y4nZ0otuEv+HVHA/XeHLA1Skq9vHhtZaORhJ58Jmwv5oMwA8KC/wPrn0gGtSBPe8zxw=
28
28
  gem: jekyll-spaceship
29
29
  on:
30
+ rvm: 2.3
30
31
  tags: true
31
32
  repo: jeffreytse/jekyll-spaceship
32
33
  cleanup: false
data/README.md CHANGED
@@ -1,11 +1,93 @@
1
- # jekyll-spaceship
1
+ <h1 align="center">
2
+ <a href="https://github.com/jeffreytse/jekyll-spaceship">
3
+ <img alt="spaceship →~ jekyll" src="https://raw.githubusercontent.com/jeffreytse/jekyll-spaceship/master/logos/jekyll-spaceship-logo.png" width="400">
4
+ </a>
5
+ <br> 🚀 Jekyll Spaceship 🚀 <br>
6
+ </h1>
2
7
 
3
- [![Build Status](https://travis-ci.org/jeffreytse/jekyll-spaceship.svg?branch=master)](https://travis-ci.org/jeffreytse/jekyll-spaceship)
4
- [![Gem Version](https://badge.fury.io/rb/jekyll-spaceship.svg)](http://badge.fury.io/rb/jekyll-spaceship)
5
- [![Code Climate](https://codeclimate.com/github/jeffreytse/jekyll-spaceship/badges/gpa.svg)](https://codeclimate.com/github/jeffreytse/jekyll-spaceship)
6
- [![Test Coverage](https://api.codeclimate.com/v1/badges/cd56b207f327603662a1/test_coverage)](https://codeclimate.com/github/jeffreytse/jekyll-spaceship/test_coverage)
8
+ <h4 align="center">
9
+ <a href="https://jekyllrb.org" target="_blank"><code>Jekyll</code></a> plugin for Astronauts.
10
+ </h4>
11
+
12
+ <p align="center">
13
+
14
+ <a href="https://travis-ci.org/jeffreytse/jekyll-spaceship">
15
+ <img src="https://travis-ci.org/jeffreytse/jekyll-spaceship.svg?branch=master"
16
+ alt="CI Status" />
17
+ </a>
18
+
19
+ <a href="http://badge.fury.io/rb/jekyll-spaceship">
20
+ <img src="https://badge.fury.io/rb/jekyll-spaceship.svg"
21
+ alt="Gem Version" />
22
+ </a>
23
+
24
+ <a href="https://codeclimate.com/github/jeffreytse/jekyll-spaceship">
25
+ <img src="https://codeclimate.com/github/jeffreytse/jekyll-spaceship/badges/gpa.svg"
26
+ alt="Code Climate" />
27
+ </a>
28
+
29
+ <a href="https://codeclimate.com/github/jeffreytse/jekyll-spaceship/test_coverage">
30
+ <img src="https://api.codeclimate.com/v1/badges/cd56b207f327603662a1/test_coverage"
31
+ alt="Test Coverage" />
32
+ </a>
33
+
34
+ <a href="https://github.com/jeffreytse/jekyll-spaceship/blob/master/LICENSE.txt">
35
+ <img src="https://img.shields.io/badge/License-MIT-brightgreen.svg"
36
+ alt="License" />
37
+ </a>
38
+
39
+ <a href="http://badge.fury.io/rb/jekyll-spaceship">
40
+ <img src="https://img.shields.io/gem/dt/jekyll-spaceship"
41
+ alt="Download Data" />
42
+ </a>
43
+
44
+ </p>
45
+
46
+ <p align="center">
47
+
48
+ <a href="https://liberapay.com/jeffreytse">
49
+ <img src="http://img.shields.io/liberapay/goal/jeffreytse.svg?logo=liberapay"
50
+ alt="Donate (Liberapay)" />
51
+ </a>
52
+
53
+ <a href="https://patreon.com/jeffreytse">
54
+ <img src="https://img.shields.io/badge/support-patreon-F96854.svg?style=flat-square"
55
+ alt="Donate (Patreon)" />
56
+ </a>
57
+
58
+ <a href="https://ko-fi.com/jeffreytse">
59
+ <img height="20" src="https://www.ko-fi.com/img/githubbutton_sm.svg"
60
+ alt="Donate (Ko-fi)" />
61
+ </a>
62
+
63
+ </p>
64
+
65
+ <div align="center">
66
+ <h4>
67
+ <a href="#requirements">Requirements</a> |
68
+ <a href="#installation">Install</a> |
69
+ <a href="#usage">Usage</a> |
70
+ <a href="#credits">Credits</a> |
71
+ <a href="#license">License</a>
72
+ </h4>
73
+ </div>
74
+
75
+ <div align="center">
76
+ <sub>Built with ❤︎ by
77
+ <a href="https://jeffreytse.net">jeffreytse</a> and
78
+ <a href="https://github.com/jeffreytse/jekyll-spaceship/graphs/contributors">contributors </a>
79
+ </div>
80
+ <br>
81
+
82
+
83
+ A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, emoji, youtube, vimeo, dailymotion, etc.
84
+
85
+ <p align="center">
86
+ <img alt="Jekyll Spaceship Demo" src="https://user-images.githubusercontent.com/9413601/82250463-15451780-997e-11ea-8809-f411586d9508.gif" alt="Donate (Ko-fi)" />
87
+ </p>
88
+
89
+ **💡 Tip:** I hope you enjoy using this plugin. If you like this project, **a little star** for it is your way make a clear statement: **My work is valued**. I would appreciate your support! _Thank you!_
7
90
 
8
- A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, youtube, etc.
9
91
 
10
92
  ## Table of Contents
11
93
 
@@ -19,6 +101,8 @@ A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, youtu
19
101
  - [1.4 Cell Alignment](#cell-alignment)
20
102
  - [1.5 Cell Markdown](#cell-markdown)
21
103
  - [2. MathJax Usage](#2-mathjax-usage)
104
+ - [2.1 Performance Optimization](#21-performance-optimization)
105
+ - [2.2 How to use?](#22-how-to-use)
22
106
  - [3. PlantUML Usage](#3-plantuml-usage)
23
107
  - [4. Video Usage](#4-video-usage)
24
108
  - [4.1 Youtube Usage](#youtube-usage)
@@ -27,6 +111,7 @@ A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, youtu
27
111
  - [5. Hybrid HTML with Markdown](#5-hybrid-html-with-markdown)
28
112
  - [6. Markdown Polyfill](#6-markdown-polyfill)
29
113
  - [6.1 Escape Ordered List](#escape-ordered-list)
114
+ - [7. Emoji Usage](#7-emoji-usage)
30
115
  - [Credits](#credits)
31
116
  - [Contributing](#contributing)
32
117
  - [License](#license)
@@ -50,6 +135,8 @@ plugins:
50
135
  - jekyll-spaceship
51
136
  ```
52
137
 
138
+ **💡 Tip:** Note that GitHub Pages runs in `safe` mode and only allows [a set of whitelisted plugins](https://pages.github.com/versions/). To use the gem in GitHub Pages, you need to build locally or use CI (e.g. [travis](https://travis-ci.org/), [github workflow](https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow)) and deploy to your `gh-pages` branch. [Click here for more information.](https://jekyllrb.com/docs/continuous-integration/github-actions/)
139
+
53
140
  ## Usage
54
141
 
55
142
  ### 1. Table Usage
@@ -384,7 +471,7 @@ Rowspan is 4
384
471
 
385
472
  [MathJax](http://www.mathjax.org/) is an open-source JavaScript display engine for LaTeX, MathML, and AsciiMath notation that works in all modern browsers.
386
473
 
387
- **Some of the main features of MathJax include:**
474
+ Some of the main features of MathJax include:
388
475
 
389
476
  - High-quality display of LaTeX, MathML, and AsciiMath notation in HTML pages
390
477
  - Supported in most browsers with no plug-ins, extra fonts, or special
@@ -394,6 +481,12 @@ Rowspan is 4
394
481
  advanced functionality
395
482
  - Powerful API for integration with other web applications
396
483
 
484
+ #### 2.1 Performance optimization
485
+
486
+ At building stage, the MathJax engine script will be added by automatically checking whether there is a math expression in the page, this feature can help you improve the page performance on loading speed.
487
+
488
+ #### 2.2 How to use?
489
+
397
490
  Put your math expression within \$...\$
398
491
 
399
492
  ```markdown
@@ -472,7 +565,7 @@ the link as below:
472
565
  ```
473
566
 
474
567
  ```markdown
475
- ![](https://www.dailymotion.com/video/x7tfyq3?width=100%&height=400)
568
+ ![](https://www.dailymotion.com/video/x7tfyq3?width=100%&height=400&autoplay=1)
476
569
  ```
477
570
 
478
571
  #### Youtube Usage
@@ -581,11 +674,27 @@ Escaped:
581
674
  10. List item Cafe.
582
675
  ```
583
676
 
677
+ ### 7. Emoji Usage
678
+ GitHub-flavored emoji images and names would allow emojifying content such as: it's raining :cat:s and :dog:s!
679
+
680
+ Noted that emoji images are served from the GitHub.com CDN, with a base URL of [https://github.githubassets.com](https://github.githubassets.com), which results in emoji image URLs like [https://github.githubassets.com/images/icons/emoji/unicode/1f604.png](https://github.githubassets.com/images/icons/emoji/unicode/1f604.png).
681
+
682
+ In any page or post, use emoji as you would normally, e.g.
683
+
684
+ ```
685
+ I give this plugin two :+1:!
686
+ ```
687
+
688
+ **Code above would be parsed as:**
689
+
690
+ I give this plugin two :+1:!
691
+
584
692
  ## Credits
585
693
 
586
694
  - [Jekyll](https://github.com/jekyll/jekyll) - A blog-aware static site generator in Ruby.
587
695
  - [MultiMarkdown](https://fletcher.github.io/MultiMarkdown-6) - Lightweight markup processor to produce HTML, LaTeX, and more.
588
696
  - [markdown-it-multimd-table](https://github.com/RedBug312/markdown-it-multimd-table) - Multimarkdown table syntax plugin for markdown-it markdown parser.
697
+ - [jmoji](https://github.com/jekyll/jemoji) - GitHub-flavored emoji plugin for Jekyll.
589
698
 
590
699
  ## Contributing
591
700
 
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.version = Jekyll::Spaceship::VERSION
10
10
  spec.authors = ["jeffreytse"]
11
11
  spec.email = ["jeffreytse.mail@gmail.com"]
12
- spec.summary = "A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, youtube, vimeo, dailymotion, etc."
12
+ spec.summary = "A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, emoji, youtube, vimeo, dailymotion, etc."
13
13
  spec.homepage = "https://github.com/jeffreytse/jekyll-spaceship"
14
14
  spec.license = "MIT"
15
15
 
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "jekyll", ">= 3.6", "< 5.0"
22
22
  spec.add_dependency "nokogiri", "~> 1.6"
23
+ spec.add_dependency "rainbow", "~> 3.0"
23
24
 
24
25
  spec.add_development_dependency "bundler"
25
26
  spec.add_development_dependency "rake", "~> 12.0"
@@ -12,4 +12,5 @@ module Jekyll::Spaceship
12
12
  Register.use 'plantuml-processor'
13
13
  Register.use 'polyfill-processor'
14
14
  Register.use 'video-processor'
15
+ Register.use 'emoji-processor'
15
16
  end
@@ -1,21 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'jekyll-spaceship/version'
4
+ require 'rainbow/refinement'
5
+
6
+ using Rainbow
4
7
 
5
8
  module Jekyll::Spaceship
6
9
  class Logger
10
+ def initialize(namespace)
11
+ @namespace = namespace
12
+ end
13
+
7
14
  def self.display_info
8
- self.log "Jekyll-Spaceship #{Jekyll::Spaceship::VERSION}"
9
- self.log 'A Jekyll plugin to provide powerful supports.'
10
- self.log 'https://github.com/jeffreytse/jekyll-spaceship'
15
+ self.log "🚀 Jekyll-Spaceship #{Jekyll::Spaceship::VERSION}"
16
+ self.log '🎉 A Jekyll plugin to provide powerful supports.'
17
+ self.log '👉 ' + 'https://github.com/jeffreytse/jekyll-spaceship'.underline
11
18
  end
12
19
 
13
20
  def self.log(content)
14
- self.output 'Jekyll Spaceship', content
21
+ self.output 'Jekyll Spaceship', content.bright
15
22
  end
16
23
 
17
24
  def self.output(title, content)
18
25
  puts "#{title.rjust(18)}: #{content}"
19
26
  end
27
+
28
+ def log(content)
29
+ if @namespace.nil?
30
+ self.class.log content
31
+ else
32
+ self.class.log "[#{@namespace}] #{content}"
33
+ end
34
+ end
20
35
  end
21
36
  end
@@ -6,7 +6,7 @@ require __dir__ + '/type'
6
6
  module Jekyll::Spaceship
7
7
  class Manager
8
8
  @@_hooks = {}
9
- @@_processers = []
9
+ @@_processors = []
10
10
 
11
11
  def self.add(processor)
12
12
  # register for listening event
@@ -15,14 +15,14 @@ module Jekyll::Spaceship
15
15
  events = _register.last.uniq
16
16
  events = events.select do |event|
17
17
  next true if event.match(/^post/)
18
- next !events.any?(event.to_s.gsub(/^pre/, 'post').to_sym)
18
+ next events.index(event.to_s.gsub(/^pre/, 'post').to_sym).nil?
19
19
  end
20
20
  events.each do |event|
21
21
  self.hook container, event
22
22
  end
23
23
  end
24
- @@_processers.push(processor)
25
- @@_processers = @@_processers.sort { |a, b| b.priority <=> a.priority }
24
+ @@_processors.push(processor)
25
+ @@_processors = @@_processors.sort { |a, b| b.priority <=> a.priority }
26
26
  end
27
27
 
28
28
  def self.hook(container, event, &block)
@@ -57,13 +57,13 @@ module Jekyll::Spaceship
57
57
  end
58
58
 
59
59
  def self.dispatch(page, container, event)
60
- @@_processers.each do |processor|
60
+ @@_processors.each do |processor|
61
61
  processor.dispatch page, container, event
62
62
  end
63
63
  if event.to_s.start_with?('post') and Type.html? output_ext(page)
64
64
  self.dispatch_html_block(page)
65
65
  end
66
- @@_processers.each do |processor|
66
+ @@_processors.each do |processor|
67
67
  processor.on_handled if processor.handled
68
68
  end
69
69
  end
@@ -91,7 +91,7 @@ module Jekyll::Spaceship
91
91
  next if type.nil?
92
92
 
93
93
  # dispatch to on_handle_html_block
94
- @@_processers.each do |processor|
94
+ @@_processors.each do |processor|
95
95
  next unless processor.process?
96
96
  content = processor.on_handle_html_block content, type
97
97
  # dispatch to type handlers
@@ -106,7 +106,7 @@ module Jekyll::Spaceship
106
106
  content = cvter.convert content unless cvter.nil?
107
107
 
108
108
  # dispatch to on_handle_html
109
- @@_processers.each do |processor|
109
+ @@_processors.each do |processor|
110
110
  next unless processor.process?
111
111
  content = processor.on_handle_html content
112
112
  end
@@ -17,16 +17,21 @@ module Jekyll::Spaceship
17
17
  @@_priority = nil
18
18
 
19
19
  attr_reader :page
20
+ attr_reader :logger
20
21
  attr_reader :priority
21
22
  attr_reader :registers
22
23
  attr_reader :exclusions
23
24
  attr_accessor :handled
24
25
 
26
+ def name
27
+ self.class.name.split('::').last
28
+ end
29
+
25
30
  def initialize()
26
31
  self.initialize_priority
27
32
  self.initialize_register
28
33
  self.initialize_exclusions
29
- Manager.add self
34
+ @logger = Logger.new(self.name)
30
35
  end
31
36
 
32
37
  def initialize_priority
@@ -122,9 +127,8 @@ module Jekyll::Spaceship
122
127
  end
123
128
 
124
129
  def on_handled
125
- processor = self.class.name.split('::').last
126
130
  file = page.path.gsub(/.*_posts\//, '')
127
- Logger.log "[#{processor}] #{file}"
131
+ logger.log file
128
132
  end
129
133
 
130
134
  def pre_exclude(content)
@@ -24,7 +24,7 @@ module Jekyll::Spaceship
24
24
  filename = File.basename(path, '.rb')
25
25
  next if filename.gsub(/-/, '').downcase != name
26
26
 
27
- Logger.log "use #{filename}"
27
+ Logger.log "🗂 use #{filename}"
28
28
  require path
29
29
  constants = Jekyll::Spaceship.constants.select do |c|
30
30
  c.downcase.to_s == name
@@ -34,7 +34,7 @@ module Jekyll::Spaceship
34
34
  _class = Jekyll::Spaceship.const_get(constants.first)
35
35
  next unless _class.is_a? Class
36
36
 
37
- _class.new
37
+ Manager.add _class.new
38
38
  end
39
39
  end
40
40
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+
7
+ module Jekyll::Spaceship
8
+ class EmojiProcessor < Processor
9
+ EMOJI_MARKUP_HOST = 'https://api.github.com/emojis'
10
+ EMOJI_MARKUP_DATA = {}
11
+
12
+ def initialize
13
+ super()
14
+ self.initialize_emoji_data
15
+ end
16
+
17
+ def initialize_emoji_data
18
+ EMOJI_MARKUP_DATA.update get_emoji_markup_data
19
+ end
20
+
21
+ def on_handle_html(content)
22
+ return content if EMOJI_MARKUP_DATA.size.zero?
23
+ # handle emoji markup
24
+ content.scan(/:([\w+-]+):/) do |match_data|
25
+ emoji_markup = match_data[0]
26
+ emoji_image = EMOJI_MARKUP_DATA[emoji_markup]
27
+ next if emoji_image.nil?
28
+ self.handled = true
29
+
30
+ # convert hex string to unicode
31
+ unicode = emoji_image.match(/unicode\/([\d\w]+)/)
32
+ if unicode[1]
33
+ unicode = "0x#{unicode[1]}".to_i(16)
34
+ alt = [unicode].pack('U*')
35
+ end
36
+ alt = emoji_markup if alt.nil?
37
+
38
+ content = content.gsub(
39
+ ":#{emoji_markup}:",
40
+ "<image class=\"emoji\" \
41
+ title=\"#{emoji_markup}\" \
42
+ alt=\"#{alt}\" \
43
+ src=\"#{emoji_image}\" \
44
+ style=\"vertical-align: middle; \
45
+ max-width: 1em; visibility: hidden;\" \
46
+ onload=\"this.style.visibility='visible'\" \
47
+ onerror=\"this.replaceWith(this.alt)\"> \
48
+ </image>"
49
+ )
50
+ end
51
+ content
52
+ end
53
+
54
+ def get_emoji_markup_data
55
+ data = {}
56
+ begin
57
+ source = Net::HTTP.get URI(EMOJI_MARKUP_HOST)
58
+ data = JSON.parse(source)
59
+ rescue StandardError => msg
60
+ logger.log msg
61
+ end
62
+ data
63
+ end
64
+ end
65
+ end
@@ -1,9 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "base64"
4
+
3
5
  module Jekyll::Spaceship
4
6
  class PlantUMLProcessor < Processor
5
7
  exclude :none
6
8
 
9
+ PLANT_UML_HOST = 'http://www.plantuml.com/plantuml/png/'
10
+
7
11
  def on_handle_markdown(content)
8
12
  # match default plantuml block and code block
9
13
  pattern = Regexp.union(
@@ -35,18 +39,28 @@ module Jekyll::Spaceship
35
39
 
36
40
  def handle_plantuml(code)
37
41
  # wrap plantuml code
38
- uml = "@startuml#{code}@enduml"
39
-
40
- dir = File.dirname(__FILE__)
41
- jar = dir + "/../utils/plantuml/plantuml.jar"
42
- echo = "echo -e \"#{uml.gsub('"', '\"')}\""
43
- plantuml = "java -jar \"#{jar}\" -pipe 2>/dev/null"
42
+ code = "@startuml#{code}@enduml".encode('UTF-8')
44
43
 
45
- # exec plantuml.jar and output base64 data
46
- base64 = `#{echo} | #{plantuml} | base64`
44
+ # encode to hex string
45
+ code = '~h' + code.unpack("H*").first
46
+ data = self.get_plantuml_img_data(code)
47
47
 
48
48
  # return img tag
49
- "<img src=\"data:image/png;base64, #{base64}\">"
49
+ "<img src=\"#{data}\">"
50
+ end
51
+
52
+ def get_plantuml_img_data(code)
53
+ data = ''
54
+ url = "#{PLANT_UML_HOST}#{code}"
55
+ begin
56
+ data = Net::HTTP.get URI(url)
57
+ data = Base64.encode64(data)
58
+ data = "data:image/png;base64, #{data}"
59
+ rescue StandardError => msg
60
+ data = url
61
+ logger.log msg
62
+ end
63
+ data
50
64
  end
51
65
  end
52
66
  end
@@ -112,19 +112,22 @@ module Jekyll::Spaceship
112
112
  end
113
113
 
114
114
  # handle colspan
115
- result = cell.content.match(/(\s*\|)+$/)
116
115
  if cell == cells.last and scope.row.colspan > 0
117
- range = (cells.count - scope.row.colspan)...cells.count
118
- for i in range do
119
- cells[i].remove
116
+ cells.count.downto(cells.count - scope.row.colspan + 1) do |i|
117
+ c = cells[i - 1]
118
+ return unless c.get_attribute('colspan').nil?
119
+ c.remove
120
120
  end
121
121
  end
122
- if result
123
- result = result[0]
124
- scope.row.colspan += result.scan(/\|/).count
125
- cell.content = cell.content.gsub(/(\s*\|)+$/, '')
126
- cell.set_attribute('colspan', scope.row.colspan + 1)
127
- end
122
+
123
+ result = cell.content.match(/(\|)+$/)
124
+ return if result.nil?
125
+
126
+ cell.content = cell.content.gsub(/(\|)+$/, '')
127
+ result = result[0]
128
+ colspan = result.scan(/\|/).count
129
+ scope.row.colspan += colspan
130
+ cell.set_attribute('colspan', colspan + 1)
128
131
  end
129
132
 
130
133
  def handle_multi_rows(data)
@@ -187,7 +190,7 @@ module Jekyll::Spaceship
187
190
  else
188
191
  scope.table.span_row_cells[scope.row.col_index] = cell
189
192
  end
190
- scope.row.col_index += 1
193
+ scope.row.col_index += [cell.get_attribute('colspan').to_i, 1].max
191
194
  end
192
195
 
193
196
  def handle_text_align(data)
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'uri'
4
+
3
5
  module Jekyll::Spaceship
4
6
  class VideoProcessor < Processor
5
7
  def on_handle_markdown(content)
@@ -70,22 +72,26 @@ module Jekyll::Spaceship
70
72
  url = match_data[2]
71
73
  id = match_data[4]
72
74
  title = match_data[6]
73
- width = url.match(/(?<=width=)(\S*?)(?=&|$)/)
74
- height = url.match(/(?<=height=)(\S*?)(?=&|$)/)
75
+ qs = url.match(/(?<=\?)(\S*?)$/)
76
+ qs = Hash[URI.decode_www_form(qs.to_s)].reject do |k, v|
77
+ next true if v == id or v == ''
78
+ end
75
79
 
76
- data[:width] = 600 if data[:width].nil?
77
- data[:height] = 400 if data[:height].nil?
80
+ width = qs['width'] || data[:width] || 600
81
+ height = qs['height'] || data[:height] || 400
78
82
  style = "max-width: 100%" if width.nil?
79
- width = data[:width] if width.nil?
80
- height = data[:height] if height.nil?
81
83
 
82
- url = "#{iframe_url}#{id}"
84
+ url = URI("#{iframe_url}#{id}").tap do |v|
85
+ v.query = URI.encode_www_form(qs) if qs.size > 0
86
+ end
87
+
83
88
  html = "<iframe \
84
89
  src=\"#{url}\" \
85
90
  title=\"#{title}\" \
86
91
  width=\"#{width}\" \
87
92
  height=\"#{height}\" \
88
93
  style=\"#{style}\" \
94
+ allow=\"autoplay; encrypted-media\" \
89
95
  frameborder=\"0\" \
90
96
  allowfullscreen=\"\">\
91
97
  </iframe>"
File without changes
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Spaceship
5
- VERSION = "0.4.3"
5
+ VERSION = "0.5.3"
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.4.3
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - jeffreytse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-14 00:00:00.000000000 Z
11
+ date: 2020-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.6'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rainbow
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.0'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: bundler
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,7 @@ extensions: []
94
108
  extra_rdoc_files: []
95
109
  files:
96
110
  - ".codeclimate.yml"
111
+ - ".github/FUNDING.yml"
97
112
  - ".gitignore"
98
113
  - ".travis.yml"
99
114
  - Gemfile
@@ -107,13 +122,15 @@ files:
107
122
  - lib/jekyll-spaceship/cores/processor.rb
108
123
  - lib/jekyll-spaceship/cores/register.rb
109
124
  - lib/jekyll-spaceship/cores/type.rb
125
+ - lib/jekyll-spaceship/processors/emoji-processor.rb
110
126
  - lib/jekyll-spaceship/processors/mathjax-processor.rb
111
127
  - lib/jekyll-spaceship/processors/plantuml-processor.rb
112
128
  - lib/jekyll-spaceship/processors/polyfill-processor.rb
113
129
  - lib/jekyll-spaceship/processors/table-processor.rb
114
130
  - lib/jekyll-spaceship/processors/video-processor.rb
115
- - lib/jekyll-spaceship/utils/plantuml/plantuml.jar
131
+ - lib/jekyll-spaceship/utils/.keep
116
132
  - lib/jekyll-spaceship/version.rb
133
+ - logos/jekyll-spaceship-logo.png
117
134
  - script/cibuild
118
135
  - script/test
119
136
  homepage: https://github.com/jeffreytse/jekyll-spaceship
@@ -140,5 +157,5 @@ rubygems_version: 2.7.7
140
157
  signing_key:
141
158
  specification_version: 4
142
159
  summary: A Jekyll plugin to provide powerful supports for table, mathjax, plantuml,
143
- youtube, vimeo, dailymotion, etc.
160
+ emoji, youtube, vimeo, dailymotion, etc.
144
161
  test_files: []