kramdown-plantuml 1.0.1 → 1.1.2

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.github/codecov.yml +2 -0
  3. data/.github/dependabot.yml +23 -0
  4. data/.github/mergify.yml +22 -0
  5. data/.github/scripts/amend.sh +176 -0
  6. data/.github/scripts/build-gem.sh +6 -0
  7. data/.github/scripts/inspect-gem.sh +72 -0
  8. data/.github/scripts/publish-gem.sh +121 -0
  9. data/.github/scripts/test-gem.sh +170 -0
  10. data/.github/scripts/variables.sh +72 -0
  11. data/.github/workflows/amend.yml +19 -0
  12. data/.github/workflows/no-java.yml +3 -6
  13. data/.github/workflows/no-plantuml.yml +6 -9
  14. data/.github/workflows/ruby.yml +139 -86
  15. data/.github/workflows/shell.yml +11 -0
  16. data/.gitignore +9 -0
  17. data/.rubocop.yml +18 -0
  18. data/CODE_OF_CONDUCT.md +11 -9
  19. data/Gemfile +4 -8
  20. data/GitVersion.yml +5 -0
  21. data/LICENSE +201 -21
  22. data/README.md +143 -35
  23. data/Rakefile +33 -3
  24. data/bin/{plantuml.1.2020.5.jar → net/sourceforge/plantuml/plantuml/1.2021.8/plantuml-1.2021.8.jar} +0 -0
  25. data/kramdown-plantuml.gemspec +32 -17
  26. data/lib/kramdown-plantuml.rb +4 -6
  27. data/lib/kramdown-plantuml/bool_env.rb +24 -0
  28. data/lib/kramdown-plantuml/console_logger.rb +56 -0
  29. data/lib/kramdown-plantuml/converter.rb +39 -21
  30. data/lib/kramdown-plantuml/executor.rb +48 -0
  31. data/lib/kramdown-plantuml/hash.rb +14 -0
  32. data/lib/kramdown-plantuml/logger.rb +77 -0
  33. data/lib/kramdown-plantuml/plantuml_error.rb +33 -0
  34. data/lib/kramdown-plantuml/plantuml_result.rb +50 -0
  35. data/lib/kramdown-plantuml/themer.rb +64 -0
  36. data/lib/kramdown-plantuml/version.rb +3 -2
  37. data/lib/kramdown_html.rb +21 -9
  38. data/lib/which.rb +3 -0
  39. data/pom.xml +16 -0
  40. metadata +131 -12
  41. data/bin/console +0 -14
  42. data/bin/setup +0 -8
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'logger'
4
+ require_relative 'plantuml_error'
5
+
6
+ module Kramdown
7
+ module PlantUml
8
+ # Executes the PlantUML Java application.
9
+ class PlantUmlResult
10
+ attr_reader :stdout, :stderr, :exitcode
11
+
12
+ def initialize(stdout, stderr, status)
13
+ @stdout = stdout
14
+ @stderr = stderr
15
+ @exitcode = status.exitstatus
16
+ @logger = Logger.init
17
+ end
18
+
19
+ def without_xml_prologue
20
+ return @stdout if @stdout.nil? || @stdout.empty?
21
+
22
+ xml_prologue_start = '<?xml'
23
+ xml_prologue_end = '?>'
24
+
25
+ start_index = @stdout.index(xml_prologue_start)
26
+
27
+ return @stdout if start_index.nil?
28
+
29
+ end_index = @stdout.index(xml_prologue_end, xml_prologue_start.length)
30
+
31
+ return @stdout if end_index.nil?
32
+
33
+ end_index += xml_prologue_end.length
34
+
35
+ @stdout.slice! start_index, end_index
36
+
37
+ @stdout
38
+ end
39
+
40
+ def validate(plantuml)
41
+ raise PlantUmlError.new(plantuml, @stderr, @exitcode) if PlantUmlError.should_raise?(@exitcode, @stderr)
42
+
43
+ return if @stderr.nil? || @stderr.empty?
44
+
45
+ @logger.debug 'kramdown-plantuml: PlantUML log:'
46
+ @logger.debug_with_prefix 'kramdown-plantuml: ', @stderr
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: false
2
+
3
+ require_relative 'hash'
4
+ require_relative 'logger'
5
+
6
+ module Kramdown
7
+ module PlantUml
8
+ # Provides theming support for PlantUML
9
+ class Themer
10
+ attr_reader :theme_name, :theme_directory
11
+
12
+ def initialize(options = {})
13
+ options = options.symbolize_keys unless options.nil?
14
+ @logger = Logger.init
15
+ @logger.debug "kramdown-plantuml: Options: #{options}"
16
+ @theme_name, @theme_directory = theme_options(options)
17
+ end
18
+
19
+ def apply_theme(plantuml)
20
+ if plantuml.nil? || plantuml.empty?
21
+ @logger.debug 'kramdown-plantuml: Empty diagram.'
22
+ return plantuml
23
+ end
24
+
25
+ if @theme_name.nil? || @theme_name.empty?
26
+ @logger.debug 'kramdown-plantuml: No theme to apply.'
27
+ return plantuml
28
+ end
29
+
30
+ theme(plantuml)
31
+ end
32
+
33
+ private
34
+
35
+ def theme_options(options)
36
+ return nil if options.nil? || !options.key?(:theme)
37
+
38
+ theme = options[:theme] || {}
39
+ theme_name = theme.key?(:name) ? theme[:name] : nil
40
+ theme_directory = theme.key?(:directory) ? theme[:directory] : nil
41
+
42
+ [theme_name, theme_directory]
43
+ end
44
+
45
+ def theme(plantuml)
46
+ startuml = '@startuml'
47
+ startuml_index = plantuml.index(startuml) + startuml.length
48
+
49
+ return plantuml if startuml_index.nil?
50
+
51
+ theme_string = "\n!theme #{@theme_name}"
52
+ theme_string << " from #{@theme_directory}" unless @theme_directory.nil?
53
+
54
+ @logger.debug "kramdown-plantuml: Applying #{theme_string}"
55
+
56
+ /@startuml.*/.match(plantuml) do |match|
57
+ return plantuml.insert match.end(0), theme_string
58
+ end
59
+
60
+ plantuml
61
+ end
62
+ end
63
+ end
64
+ end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Kramdown
2
4
  module PlantUml
3
- @version = ENV['GEM_VERSION'] || '0.0.1-INVALID'
4
- VERSION = @version
5
+ VERSION = '1.1.2'
5
6
  end
6
7
  end
data/lib/kramdown_html.rb CHANGED
@@ -1,15 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'kramdown'
2
- require "kramdown-plantuml/converter"
4
+ require 'kramdown-parser-gfm'
5
+ require_relative 'kramdown-plantuml/converter'
6
+ require_relative 'kramdown-plantuml/logger'
7
+ require_relative 'kramdown-plantuml/plantuml_error'
8
+
9
+ module Kramdown
10
+ module Converter
11
+ # Plugs into Kramdown::Converter::Html to provide conversion of PlantUML markup
12
+ # into beautiful SVG.
13
+ class Html
14
+ alias super_convert_codeblock convert_codeblock
3
15
 
4
- class Kramdown::Converter::Html
5
- alias_method :super_convert_codeblock, :convert_codeblock
16
+ def convert_codeblock(element, indent)
17
+ return super_convert_codeblock(element, indent) if element.attr['class'] != 'language-plantuml'
6
18
 
7
- def convert_codeblock(element, indent)
8
- if element.attr["class"] != "language-plantuml"
9
- return super_convert_codeblock(element, indent)
10
- end
19
+ plantuml = element.value
20
+ plantuml_options = @options.key?(:plantuml) ? @options[:plantuml] : {}
21
+ converter = ::Kramdown::PlantUml::Converter.new(plantuml_options || {})
11
22
 
12
- converter = Kramdown::PlantUml::Converter.new
13
- return converter.convert_plantuml_to_svg(element.value)
23
+ converter.convert_plantuml_to_svg(plantuml)
24
+ end
14
25
  end
26
+ end
15
27
  end
data/lib/which.rb CHANGED
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Wraps the `which` Unix utility
1
4
  class Which
2
5
  def self.which(cmd)
3
6
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
data/pom.xml ADDED
@@ -0,0 +1,16 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
2
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
3
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+ <modelVersion>4.0.0</modelVersion>
5
+ <groupId>com.swedbankpay</groupId>
6
+ <artifactId>kramdown-plantuml</artifactId>
7
+ <version>INVALID</version>
8
+ <name>Kramdown::PlantUml</name>
9
+ <dependencies>
10
+ <dependency>
11
+ <groupId>net.sourceforge.plantuml</groupId>
12
+ <artifactId>plantuml</artifactId>
13
+ <version>1.2021.9</version>
14
+ </dependency>
15
+ </dependencies>
16
+ </project>
metadata CHANGED
@@ -1,29 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kramdown-plantuml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
- - Asbjørn Ulsberg
7
+ - Swedbank Pay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-01 00:00:00.000000000 Z
11
+ date: 2021-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: kramdown
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
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'
41
+ - !ruby/object:Gem::Dependency
42
+ name: open3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
13
55
  - !ruby/object:Gem::Dependency
14
56
  name: rake
15
57
  requirement: !ruby/object:Gem::Requirement
16
58
  requirements:
17
59
  - - "~>"
18
60
  - !ruby/object:Gem::Version
19
- version: '12.3'
61
+ version: '13.0'
20
62
  type: :development
21
63
  prerelease: false
22
64
  version_requirements: !ruby/object:Gem::Requirement
23
65
  requirements:
24
66
  - - "~>"
25
67
  - !ruby/object:Gem::Version
26
- version: '12.3'
68
+ version: '13.0'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: rspec
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -38,32 +80,108 @@ dependencies:
38
80
  - - "~>"
39
81
  - !ruby/object:Gem::Version
40
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'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
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'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.4'
41
139
  description:
42
140
  email:
43
- - asbjorn@ulsberg.no
141
+ - opensource@swedbankpay.com
44
142
  executables: []
45
143
  extensions: []
46
144
  extra_rdoc_files: []
47
145
  files:
146
+ - ".github/codecov.yml"
147
+ - ".github/dependabot.yml"
148
+ - ".github/mergify.yml"
149
+ - ".github/scripts/amend.sh"
150
+ - ".github/scripts/build-gem.sh"
151
+ - ".github/scripts/inspect-gem.sh"
152
+ - ".github/scripts/publish-gem.sh"
153
+ - ".github/scripts/test-gem.sh"
154
+ - ".github/scripts/variables.sh"
155
+ - ".github/workflows/amend.yml"
48
156
  - ".github/workflows/no-java.yml"
49
157
  - ".github/workflows/no-plantuml.yml"
50
158
  - ".github/workflows/ruby.yml"
159
+ - ".github/workflows/shell.yml"
51
160
  - ".gitignore"
52
161
  - ".rspec"
162
+ - ".rubocop.yml"
53
163
  - CODE_OF_CONDUCT.md
54
164
  - Gemfile
165
+ - GitVersion.yml
55
166
  - LICENSE
56
167
  - README.md
57
168
  - Rakefile
58
- - bin/console
59
- - bin/plantuml.1.2020.5.jar
60
- - bin/setup
169
+ - bin/net/sourceforge/plantuml/plantuml/1.2021.8/plantuml-1.2021.8.jar
61
170
  - kramdown-plantuml.gemspec
62
171
  - lib/kramdown-plantuml.rb
172
+ - lib/kramdown-plantuml/bool_env.rb
173
+ - lib/kramdown-plantuml/console_logger.rb
63
174
  - lib/kramdown-plantuml/converter.rb
175
+ - lib/kramdown-plantuml/executor.rb
176
+ - lib/kramdown-plantuml/hash.rb
177
+ - lib/kramdown-plantuml/logger.rb
178
+ - lib/kramdown-plantuml/plantuml_error.rb
179
+ - lib/kramdown-plantuml/plantuml_result.rb
180
+ - lib/kramdown-plantuml/themer.rb
64
181
  - lib/kramdown-plantuml/version.rb
65
182
  - lib/kramdown_html.rb
66
183
  - lib/which.rb
184
+ - pom.xml
67
185
  homepage: https://github.com/SwedbankPay/kramdown-plantuml
68
186
  licenses:
69
187
  - MIT
@@ -78,15 +196,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
196
  requirements:
79
197
  - - ">="
80
198
  - !ruby/object:Gem::Version
81
- version: 2.3.0
199
+ version: 2.5.0
82
200
  required_rubygems_version: !ruby/object:Gem::Requirement
83
201
  requirements:
84
202
  - - ">="
85
203
  - !ruby/object:Gem::Version
86
204
  version: '0'
87
205
  requirements: []
88
- rubygems_version: 3.0.3
206
+ rubygems_version: 3.1.6
89
207
  signing_key:
90
208
  specification_version: 4
91
- summary: Short summary
209
+ summary: kramdown-plantuml allows you to use PlantUML syntax within fenced code blocks
210
+ with Kramdown (Jekyll's default Markdown parser).
92
211
  test_files: []
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "kramdown-plantuml"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here