kramdown-plantuml 1.1.9 → 1.1.13
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af8b7df3676e0e2a57ebe8e4fc96f0e51388036d7910c9547bbd73f75b9ebde0
|
4
|
+
data.tar.gz: 1dc627d6d92fd81bd88a2ad7b9bc31f11a319117e734bff80d3e49651be07979
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e7fd6b35fe88507e326370e901b1cc02b7801e1b1a82d2510fa4f3cb41528a43e4465d4c44336ce05ae292a3bc4d1f11b3a382bc779e648c73aab70a33384ea
|
7
|
+
data.tar.gz: 919450a3b77827d699c2c071c161d7bb29cc7400e6bb108cc6f745e7e8980137174767e208d3cfae2c72ba9701fcc346415d2ee348817f79f4391e3d0ae39162
|
data/.github/scripts/test-gem.sh
CHANGED
@@ -0,0 +1,103 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'htmlentities'
|
4
|
+
require 'json'
|
5
|
+
require_relative 'log_wrapper'
|
6
|
+
|
7
|
+
module Kramdown
|
8
|
+
module PlantUml
|
9
|
+
# Processes Jekyll pages.
|
10
|
+
class JekyllPageProcessor
|
11
|
+
PROCESSED_KEY = :kramdown_plantuml_processed
|
12
|
+
|
13
|
+
def initialize(page)
|
14
|
+
raise ArgumentError, 'page cannot be nil' if page.nil?
|
15
|
+
|
16
|
+
@page = page
|
17
|
+
end
|
18
|
+
|
19
|
+
def process(site_destination_directory)
|
20
|
+
@page.output = do_process
|
21
|
+
@page.data[PROCESSED_KEY] = true
|
22
|
+
@page.write(site_destination_directory)
|
23
|
+
end
|
24
|
+
|
25
|
+
def should_process?
|
26
|
+
return false unless @page.output_ext == '.html'
|
27
|
+
|
28
|
+
if !@page.data.nil? && @page.data.key?(PROCESSED_KEY) && @page.data[PROCESSED_KEY]
|
29
|
+
logger.debug "Skipping #{@page.path} because it has already been processed."
|
30
|
+
return false
|
31
|
+
end
|
32
|
+
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
class << self
|
37
|
+
def needle(plantuml, options)
|
38
|
+
hash = { 'plantuml' => plantuml, 'options' => options.to_h }
|
39
|
+
|
40
|
+
<<~NEEDLE
|
41
|
+
<!--#kramdown-plantuml.start#-->
|
42
|
+
#{hash.to_json}
|
43
|
+
<!--#kramdown-plantuml.end#-->
|
44
|
+
NEEDLE
|
45
|
+
rescue StandardError => e
|
46
|
+
raise e if options.nil? || options.raise_errors?
|
47
|
+
|
48
|
+
logger.error 'Error while placing needle.'
|
49
|
+
logger.error e.to_s
|
50
|
+
logger.debug_multiline plantuml
|
51
|
+
end
|
52
|
+
|
53
|
+
def logger
|
54
|
+
@logger ||= ::Kramdown::PlantUml::LogWrapper.init
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def do_process
|
61
|
+
logger.debug "Replacing Jekyll needles in #{@page.path}"
|
62
|
+
|
63
|
+
html = @page.output
|
64
|
+
|
65
|
+
return html if html.nil? || html.empty? || !html.is_a?(String)
|
66
|
+
|
67
|
+
html.gsub(/<!--#kramdown-plantuml\.start#-->(?<json>.*?)<!--#kramdown-plantuml\.end#-->/m) do
|
68
|
+
json = $LAST_MATCH_INFO ? $LAST_MATCH_INFO[:json] : nil
|
69
|
+
replace_needle(json) unless json.nil?
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def replace_needle(json)
|
74
|
+
logger.debug 'Replacing Jekyll needle.'
|
75
|
+
|
76
|
+
needle_hash = JSON.parse(json)
|
77
|
+
options_hash = needle_hash['options']
|
78
|
+
options = ::Kramdown::PlantUml::Options.new({ plantuml: options_hash })
|
79
|
+
|
80
|
+
begin
|
81
|
+
decode_and_convert(needle_hash, options)
|
82
|
+
rescue StandardError => e
|
83
|
+
raise e if options.raise_errors?
|
84
|
+
|
85
|
+
logger.error 'Error while replacing Jekyll needle.'
|
86
|
+
logger.error e.to_s
|
87
|
+
logger.debug_multiline json
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def decode_and_convert(hash, options)
|
92
|
+
encoded_plantuml = hash['plantuml']
|
93
|
+
plantuml = HTMLEntities.new.decode encoded_plantuml
|
94
|
+
diagram = ::Kramdown::PlantUml::Diagram.new(plantuml, options)
|
95
|
+
diagram.convert_to_svg
|
96
|
+
end
|
97
|
+
|
98
|
+
def logger
|
99
|
+
@logger ||= ::Kramdown::PlantUml::LogWrapper.init
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -1,10 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'json'
|
4
|
-
require 'English'
|
5
|
-
require 'htmlentities'
|
6
3
|
require_relative 'log_wrapper'
|
7
|
-
require_relative '
|
4
|
+
require_relative 'jekyll_page_processor'
|
8
5
|
|
9
6
|
module Kramdown
|
10
7
|
module PlantUml
|
@@ -32,20 +29,7 @@ module Kramdown
|
|
32
29
|
end
|
33
30
|
|
34
31
|
def needle(plantuml, options)
|
35
|
-
|
36
|
-
|
37
|
-
<<~NEEDLE
|
38
|
-
<!--#kramdown-plantuml.start#-->
|
39
|
-
#{hash.to_json}
|
40
|
-
<!--#kramdown-plantuml.end#-->
|
41
|
-
NEEDLE
|
42
|
-
rescue StandardError => e
|
43
|
-
raise e if options.raise_errors?
|
44
|
-
|
45
|
-
puts e
|
46
|
-
logger.error 'Error while placing needle.'
|
47
|
-
logger.error e.to_s
|
48
|
-
logger.debug_multiline plantuml
|
32
|
+
JekyllPageProcessor.needle(plantuml, options)
|
49
33
|
end
|
50
34
|
|
51
35
|
private
|
@@ -63,55 +47,23 @@ module Kramdown
|
|
63
47
|
|
64
48
|
def register_hook
|
65
49
|
Jekyll::Hooks.register :site, :post_write do |site|
|
66
|
-
|
67
|
-
|
68
|
-
@site_destination_dir ||= site.dest
|
69
|
-
|
70
|
-
site.pages.each do |page|
|
71
|
-
page.output = replace_needles(page)
|
72
|
-
page.write(@site_destination_dir)
|
73
|
-
end
|
50
|
+
site_post_write(site)
|
74
51
|
end
|
75
52
|
end
|
76
53
|
|
77
|
-
def
|
78
|
-
logger.debug
|
79
|
-
|
80
|
-
html = page.output
|
81
|
-
return html if html.nil? || html.empty? || !html.is_a?(String)
|
54
|
+
def site_post_write(site)
|
55
|
+
logger.debug 'Jekyll:site:post_write triggered.'
|
56
|
+
@site_destination_dir ||= site.dest
|
82
57
|
|
83
|
-
|
84
|
-
|
85
|
-
return replace_needle(json)
|
86
|
-
end
|
87
|
-
end
|
58
|
+
site.pages.each do |page|
|
59
|
+
processor = JekyllPageProcessor.new(page)
|
88
60
|
|
89
|
-
|
90
|
-
logger.debug 'Replacing Jekyll needle.'
|
61
|
+
next unless processor.should_process?
|
91
62
|
|
92
|
-
|
93
|
-
options_hash = needle_hash['options']
|
94
|
-
options_hash[:site_destination_dir] = @site_destination_dir
|
95
|
-
options = ::Kramdown::PlantUml::Options.new({ plantuml: options_hash })
|
96
|
-
|
97
|
-
begin
|
98
|
-
decode_and_convert(needle_hash, options)
|
99
|
-
rescue StandardError => e
|
100
|
-
raise e if options.raise_errors?
|
101
|
-
|
102
|
-
logger.error 'Error while replacing Jekyll needle.'
|
103
|
-
logger.error e.to_s
|
104
|
-
logger.debug_multiline json
|
63
|
+
processor.process(site.dest)
|
105
64
|
end
|
106
65
|
end
|
107
66
|
|
108
|
-
def decode_and_convert(hash, options)
|
109
|
-
encoded_plantuml = hash['plantuml']
|
110
|
-
plantuml = HTMLEntities.new.decode encoded_plantuml
|
111
|
-
diagram = ::Kramdown::PlantUml::Diagram.new(plantuml, options)
|
112
|
-
diagram.convert_to_svg
|
113
|
-
end
|
114
|
-
|
115
67
|
def load_jekyll
|
116
68
|
require 'jekyll'
|
117
69
|
::Jekyll
|
@@ -10,7 +10,7 @@ module Kramdown
|
|
10
10
|
|
11
11
|
def initialize(options_hash = {})
|
12
12
|
@logger = LogWrapper.init
|
13
|
-
@options = massage(options_hash)
|
13
|
+
@options = massage(options_hash) || {}
|
14
14
|
@raise_errors = extract_raise_errors(@options)
|
15
15
|
extract_theme_options(@options)
|
16
16
|
end
|
@@ -44,9 +44,9 @@ module Kramdown
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def extract_theme_options(options)
|
47
|
-
return if options.empty? || !options.key?(:theme)
|
47
|
+
return if options.nil? || options.empty? || !options.key?(:theme)
|
48
48
|
|
49
|
-
theme = options[:theme]
|
49
|
+
theme = options[:theme]
|
50
50
|
|
51
51
|
unless theme.is_a?(Hash)
|
52
52
|
@logger.warn ":theme is not a Hash: #{theme}"
|
@@ -58,12 +58,10 @@ module Kramdown
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def extract_raise_errors(options)
|
61
|
-
if options.key?(:raise_errors)
|
62
|
-
raise_errors = options[:raise_errors]
|
63
|
-
return boolean(raise_errors, true)
|
64
|
-
end
|
61
|
+
return true if options.nil? || options.empty? || !options.key?(:raise_errors)
|
65
62
|
|
66
|
-
|
63
|
+
raise_errors = options[:raise_errors]
|
64
|
+
boolean(raise_errors, true)
|
67
65
|
end
|
68
66
|
|
69
67
|
def massage(options_hash)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kramdown-plantuml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Swedbank Pay
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|
@@ -187,6 +187,7 @@ files:
|
|
187
187
|
- lib/kramdown-plantuml/console_logger.rb
|
188
188
|
- lib/kramdown-plantuml/diagram.rb
|
189
189
|
- lib/kramdown-plantuml/executor.rb
|
190
|
+
- lib/kramdown-plantuml/jekyll_page_processor.rb
|
190
191
|
- lib/kramdown-plantuml/jekyll_provider.rb
|
191
192
|
- lib/kramdown-plantuml/log_wrapper.rb
|
192
193
|
- lib/kramdown-plantuml/options.rb
|