kramdown-plantuml 1.0.5 → 1.1.4

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.
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: false
2
+
3
+ require_relative 'logger'
4
+
5
+ module Kramdown
6
+ module PlantUml
7
+ # Provides theming support for PlantUML
8
+ class Theme
9
+ attr_reader :name, :directory
10
+
11
+ def initialize(options = {})
12
+ @logger = Logger.init
13
+ @name, @directory = theme_options(options)
14
+ end
15
+
16
+ def apply(plantuml)
17
+ if plantuml.nil? || !plantuml.is_a?(String) || plantuml.empty?
18
+ @logger.debug ' kramdown-plantuml: Empty diagram or not a String.'
19
+ return plantuml
20
+ end
21
+
22
+ if @name.nil? || @name.empty?
23
+ @logger.debug ' kramdown-plantuml: No theme to apply.'
24
+ return plantuml
25
+ end
26
+
27
+ theme(plantuml)
28
+ end
29
+
30
+ private
31
+
32
+ def theme_options(options)
33
+ options = symbolize_keys(options)
34
+
35
+ @logger.debug " kramdown-plantuml: Options: #{options}"
36
+
37
+ return nil if options.nil? || !options.key?(:theme)
38
+
39
+ theme = options[:theme] || {}
40
+ name = theme.key?(:name) ? theme[:name] : nil
41
+ directory = theme.key?(:directory) ? theme[:directory] : nil
42
+
43
+ [name, directory]
44
+ end
45
+
46
+ def symbolize_keys(options)
47
+ return options if options.nil?
48
+
49
+ array = options.map do |key, value|
50
+ value = value.is_a?(Hash) ? symbolize_keys(value) : value
51
+ [key.to_sym, value]
52
+ end
53
+
54
+ array.to_h
55
+ end
56
+
57
+ def theme(plantuml)
58
+ startuml = '@startuml'
59
+ startuml_index = plantuml.index(startuml) + startuml.length
60
+
61
+ return plantuml if startuml_index.nil?
62
+
63
+ theme_string = "\n!theme #{@name}"
64
+ theme_string << " from #{@directory}" unless @directory.nil?
65
+
66
+ @logger.debug " kramdown-plantuml: Applying #{theme_string.strip}"
67
+
68
+ /@startuml.*/.match(plantuml) do |match|
69
+ return plantuml.insert match.end(0), theme_string
70
+ end
71
+
72
+ plantuml
73
+ end
74
+ end
75
+ end
76
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kramdown
4
4
  module PlantUml
5
- VERSION = '1.0.5'
5
+ VERSION = '1.1.4'
6
6
  end
7
7
  end
@@ -1,11 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'kramdown-plantuml/version'
4
- require_relative 'kramdown-plantuml/converter'
5
3
  require_relative 'kramdown_html'
6
-
7
- module Kramdown
8
- module PlantUml
9
- class Error < StandardError; end
10
- end
11
- end
data/lib/kramdown_html.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'kramdown'
4
- require_relative 'kramdown-plantuml/converter'
5
-
6
- PlantUmlConverter = Kramdown::PlantUml::Converter
4
+ require 'kramdown-parser-gfm'
5
+ require_relative 'kramdown-plantuml/logger'
6
+ require_relative 'kramdown-plantuml/plantuml_error'
7
+ require_relative 'kramdown-plantuml/diagram'
7
8
 
8
9
  module Kramdown
9
10
  module Converter
@@ -15,8 +16,10 @@ module Kramdown
15
16
  def convert_codeblock(element, indent)
16
17
  return super_convert_codeblock(element, indent) if element.attr['class'] != 'language-plantuml'
17
18
 
18
- converter = PlantUmlConverter.new
19
- converter.convert_plantuml_to_svg(element.value)
19
+ plantuml = element.value
20
+ plantuml_options = @options.key?(:plantuml) ? @options[:plantuml] : {}
21
+ diagram = ::Kramdown::PlantUml::Diagram.new(plantuml, plantuml_options)
22
+ diagram.convert_to_svg
20
23
  end
21
24
  end
22
25
  end
data/pom.xml CHANGED
@@ -10,7 +10,7 @@
10
10
  <dependency>
11
11
  <groupId>net.sourceforge.plantuml</groupId>
12
12
  <artifactId>plantuml</artifactId>
13
- <version>1.2020.18</version>
13
+ <version>1.2021.9</version>
14
14
  </dependency>
15
15
  </dependencies>
16
16
  </project>
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.0.5
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Swedbank Pay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-09 00:00:00.000000000 Z
11
+ date: 2021-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: kramdown-parser-gfm
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: open3
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +80,62 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '3.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-its
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: rubocop
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: '0.92'
103
+ version: '1.12'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.12'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.6'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.6'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.4'
76
132
  type: :development
77
133
  prerelease: false
78
134
  version_requirements: !ruby/object:Gem::Requirement
79
135
  requirements:
80
136
  - - "~>"
81
137
  - !ruby/object:Gem::Version
82
- version: '0.92'
138
+ version: '2.4'
83
139
  description:
84
140
  email:
85
141
  - opensource@swedbankpay.com
@@ -87,12 +143,16 @@ executables: []
87
143
  extensions: []
88
144
  extra_rdoc_files: []
89
145
  files:
146
+ - ".github/codecov.yml"
147
+ - ".github/dependabot.yml"
148
+ - ".github/mergify.yml"
149
+ - ".github/scripts/amend.sh"
90
150
  - ".github/scripts/build-gem.sh"
91
- - ".github/scripts/bundle-install.sh"
92
151
  - ".github/scripts/inspect-gem.sh"
93
152
  - ".github/scripts/publish-gem.sh"
94
153
  - ".github/scripts/test-gem.sh"
95
154
  - ".github/scripts/variables.sh"
155
+ - ".github/workflows/amend.yml"
96
156
  - ".github/workflows/no-java.yml"
97
157
  - ".github/workflows/no-plantuml.yml"
98
158
  - ".github/workflows/ruby.yml"
@@ -102,13 +162,21 @@ files:
102
162
  - ".rubocop.yml"
103
163
  - CODE_OF_CONDUCT.md
104
164
  - Gemfile
165
+ - GitVersion.yml
105
166
  - LICENSE
106
167
  - README.md
107
168
  - Rakefile
108
- - bin/net/sourceforge/plantuml/plantuml/1.2020.18/plantuml-1.2020.18.jar
169
+ - bin/net/sourceforge/plantuml/plantuml/1.2021.9/plantuml-1.2021.9.jar
109
170
  - kramdown-plantuml.gemspec
110
171
  - lib/kramdown-plantuml.rb
111
- - lib/kramdown-plantuml/converter.rb
172
+ - lib/kramdown-plantuml/bool_env.rb
173
+ - lib/kramdown-plantuml/console_logger.rb
174
+ - lib/kramdown-plantuml/diagram.rb
175
+ - lib/kramdown-plantuml/executor.rb
176
+ - lib/kramdown-plantuml/logger.rb
177
+ - lib/kramdown-plantuml/plantuml_error.rb
178
+ - lib/kramdown-plantuml/plantuml_result.rb
179
+ - lib/kramdown-plantuml/theme.rb
112
180
  - lib/kramdown-plantuml/version.rb
113
181
  - lib/kramdown_html.rb
114
182
  - lib/which.rb
@@ -127,16 +195,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
195
  requirements:
128
196
  - - ">="
129
197
  - !ruby/object:Gem::Version
130
- version: 2.3.0
198
+ version: 2.5.0
131
199
  required_rubygems_version: !ruby/object:Gem::Requirement
132
200
  requirements:
133
201
  - - ">="
134
202
  - !ruby/object:Gem::Version
135
203
  version: '0'
136
204
  requirements: []
137
- rubygems_version: 3.1.2
205
+ rubygems_version: 3.1.6
138
206
  signing_key:
139
207
  specification_version: 4
140
208
  summary: kramdown-plantuml allows you to use PlantUML syntax within fenced code blocks
141
- with Kramdown (Jekyll's default Markdown parser)
209
+ with Kramdown (Jekyll's default Markdown parser).
142
210
  test_files: []
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -o errexit # Abort if any command fails
3
-
4
- gem install bundler
5
- bundle config path vendor/bundle
6
- bundle install --jobs 4 --retry 3
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'open3'
4
- require_relative '../which'
5
- require_relative 'version'
6
-
7
- module Kramdown
8
- module PlantUml
9
- # Converts PlantUML markup to SVG
10
- class Converter
11
- def initialize
12
- dir = File.dirname __dir__
13
- jar_glob = File.join dir, '../bin/**/plantuml*.jar'
14
- @plant_uml_jar_file = Dir[jar_glob].first
15
-
16
- raise IOError, 'Java can not be found' unless Which.which('java')
17
- raise IOError, "No 'plantuml.jar' file could be found" if @plant_uml_jar_file.nil?
18
- raise IOError, "'#{@plant_uml_jar_file}' does not exist" unless File.exist? @plant_uml_jar_file
19
- end
20
-
21
- def convert_plantuml_to_svg(content)
22
- cmd = "java -jar #{@plant_uml_jar_file} -tsvg -pipe"
23
-
24
- stdout, stderr, = Open3.capture3(cmd, stdin_data: content)
25
-
26
- # Circumvention of https://bugs.openjdk.java.net/browse/JDK-8244621
27
- raise stderr unless stderr.empty? || stderr.include?('CoreText note:')
28
-
29
- xml_prologue_start = '<?xml'
30
- xml_prologue_end = '?>'
31
-
32
- start_index = stdout.index(xml_prologue_start)
33
- end_index = stdout.index(xml_prologue_end, xml_prologue_start.length) + xml_prologue_end.length
34
-
35
- stdout.slice! start_index, end_index
36
-
37
- wrapper_element_start = '<div class="plantuml">'
38
- wrapper_element_end = '</div>'
39
-
40
- "#{wrapper_element_start}#{stdout}#{wrapper_element_end}"
41
- end
42
- end
43
- end
44
- end