jekyll-diagrams 0.9.3 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/features/{blockdiag.feature → blockdiag/block.feature} +2 -2
- data/features/graphviz/block.feature +26 -0
- data/features/{graphviz.feature → graphviz/config.feature} +18 -31
- data/features/{mermaid.feature → mermaid/block.feature} +2 -2
- data/features/{nomnoml.feature → nomnoml/block.feature} +2 -2
- data/features/{plantuml.feature → plantuml/block.feature} +3 -12
- data/features/{smcat.feature → smcat/block.feature} +3 -3
- data/features/step_definitions/jekyll-diagrams.rb +5 -5
- data/features/support/env.rb +3 -9
- data/features/{syntrax.feature → syntrax/block.feature} +2 -2
- data/features/{vega.feature → vega/block.feature} +3 -3
- data/features/{wavedrom.feature → wavedrom/block.feature} +2 -2
- data/lib/jekyll-diagrams.rb +22 -61
- data/lib/jekyll-diagrams/basic_block.rb +28 -0
- data/lib/jekyll-diagrams/basic_renderer.rb +38 -0
- data/lib/jekyll-diagrams/blockdiag.rb +5 -31
- data/lib/jekyll-diagrams/blockdiag/block.rb +9 -0
- data/lib/jekyll-diagrams/blockdiag/renderer.rb +40 -0
- data/lib/jekyll-diagrams/erd.rb +4 -30
- data/lib/jekyll-diagrams/erd/block.rb +8 -0
- data/lib/jekyll-diagrams/erd/renderer.rb +34 -0
- data/lib/jekyll-diagrams/errors.rb +12 -13
- data/lib/jekyll-diagrams/graphviz.rb +4 -34
- data/lib/jekyll-diagrams/graphviz/block.rb +8 -0
- data/lib/jekyll-diagrams/graphviz/renderer.rb +40 -0
- data/lib/jekyll-diagrams/mermaid.rb +4 -25
- data/lib/jekyll-diagrams/mermaid/block.rb +8 -0
- data/lib/jekyll-diagrams/mermaid/renderer.rb +29 -0
- data/lib/jekyll-diagrams/nomnoml.rb +4 -15
- data/lib/jekyll-diagrams/nomnoml/block.rb +8 -0
- data/lib/jekyll-diagrams/nomnoml/renderer.rb +19 -0
- data/lib/jekyll-diagrams/plantuml.rb +4 -19
- data/lib/jekyll-diagrams/plantuml/block.rb +8 -0
- data/lib/jekyll-diagrams/plantuml/renderer.rb +23 -0
- data/lib/jekyll-diagrams/smcat.rb +4 -26
- data/lib/jekyll-diagrams/smcat/block.rb +8 -0
- data/lib/jekyll-diagrams/smcat/renderer.rb +30 -0
- data/lib/jekyll-diagrams/svgbob.rb +4 -21
- data/lib/jekyll-diagrams/svgbob/block.rb +8 -0
- data/lib/jekyll-diagrams/svgbob/renderer.rb +25 -0
- data/lib/jekyll-diagrams/syntrax.rb +4 -23
- data/lib/jekyll-diagrams/syntrax/block.rb +8 -0
- data/lib/jekyll-diagrams/syntrax/renderer.rb +27 -0
- data/lib/jekyll-diagrams/utils.rb +85 -0
- data/lib/jekyll-diagrams/vega.rb +5 -26
- data/lib/jekyll-diagrams/vega/block.rb +9 -0
- data/lib/jekyll-diagrams/vega/renderer.rb +33 -0
- data/lib/jekyll-diagrams/version.rb +1 -1
- data/lib/jekyll-diagrams/wavedrom.rb +4 -15
- data/lib/jekyll-diagrams/wavedrom/block.rb +8 -0
- data/lib/jekyll-diagrams/wavedrom/renderer.rb +19 -0
- data/spec/basic_block_spec.rb +70 -0
- data/spec/basic_renderer_spec.rb +69 -0
- data/spec/blockdiag_renderer_spec.rb +43 -0
- data/spec/erd_renderer_spec.rb +43 -0
- data/spec/graphviz_renderer_spec.rb +19 -0
- data/spec/jekyll-diagrams_spec.rb +23 -0
- data/spec/mermaid_renderer_spec.rb +19 -0
- data/spec/nomnoml_renderer_spec.rb +19 -0
- data/spec/plantuml_renderer_spec.rb +20 -0
- data/spec/rendering_spec.rb +111 -0
- data/spec/smcat_renderer_spec.rb +19 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/svgbob_renderer_spec.rb +27 -0
- data/spec/syntrax_renderer_spec.rb +19 -0
- data/spec/utils_spec.rb +163 -0
- data/spec/vega_renderer_spec.rb +19 -0
- data/spec/wavedrom_renderer_spec.rb +19 -0
- metadata +115 -95
- data/lib/jekyll-diagrams/block.rb +0 -51
- data/test/block_test.rb +0 -6
- data/test/blockdiag_test.rb +0 -28
- data/test/erd_test.rb +0 -25
- data/test/rendering_test.rb +0 -20
- data/test/svgbob_test.rb +0 -22
- data/test/test_helper.rb +0 -22
@@ -1,38 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'blockdiag/renderer'
|
4
|
+
require_relative 'blockdiag/block'
|
5
|
+
|
3
6
|
module Jekyll
|
4
7
|
module Diagrams
|
5
|
-
|
6
|
-
|
7
|
-
SWITCHES = {
|
8
|
-
'antialias' => false
|
9
|
-
}.freeze
|
10
|
-
|
11
|
-
def render_svg(code, config)
|
12
|
-
command = build_command(config)
|
13
|
-
|
14
|
-
render_with_tempfile(command, code) do |input, output|
|
15
|
-
"#{input} -o #{output}"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def build_command(config)
|
20
|
-
command = +"#{block_name} -T svg --nodoctype"
|
21
|
-
|
22
|
-
SWITCHES.merge(config.slice(*SWITCHES.keys)).each do |switch, value|
|
23
|
-
command << " --#{switch}" if value != false
|
24
|
-
end
|
25
|
-
|
26
|
-
CONFIGURATIONS.each do |conf|
|
27
|
-
command << " --#{conf}=#{config[conf]}" if config.key?(conf)
|
28
|
-
end
|
29
|
-
|
30
|
-
command
|
31
|
-
end
|
8
|
+
%i[blockdiag seqdiag actdiag nwdiag rackdiag packetdiag].each do |name|
|
9
|
+
Liquid::Template.register_tag(name, const_get("#{name.capitalize}Block"))
|
32
10
|
end
|
33
11
|
end
|
34
12
|
end
|
35
|
-
|
36
|
-
%i[blockdiag seqdiag actdiag nwdiag rackdiag packetdiag].each do |tag|
|
37
|
-
Liquid::Template.register_tag(tag, Jekyll::Diagrams::BlockdiagBlock)
|
38
|
-
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Diagrams
|
5
|
+
%i[blockdiag seqdiag actdiag nwdiag rackdiag packetdiag].each do |name|
|
6
|
+
renderer = Class.new(BasicRenderer) do
|
7
|
+
const_set :CONFIGURATIONS, %w[config font fontmap size].freeze
|
8
|
+
const_set :SWITCHES, {
|
9
|
+
'antialias' => false
|
10
|
+
}.freeze
|
11
|
+
|
12
|
+
def render_svg(code, config)
|
13
|
+
command = build_command(config)
|
14
|
+
|
15
|
+
render_with_tempfile(command, code) do |input, output|
|
16
|
+
"#{input} -o #{output}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def build_command(config)
|
21
|
+
command = +"#{@diagram} -T svg --nodoctype"
|
22
|
+
|
23
|
+
switches = self.class.const_get(:SWITCHES)
|
24
|
+
|
25
|
+
switches.merge(config.slice(*switches.keys)).each do |switch, value|
|
26
|
+
command << " --#{switch}" if value != false
|
27
|
+
end
|
28
|
+
|
29
|
+
self.class.const_get(:CONFIGURATIONS).each do |conf|
|
30
|
+
command << " --#{conf}=#{config[conf]}" if config.key?(conf)
|
31
|
+
end
|
32
|
+
|
33
|
+
command
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
const_set "#{name.capitalize}Renderer", renderer
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/jekyll-diagrams/erd.rb
CHANGED
@@ -1,36 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'erd/renderer'
|
4
|
+
require_relative 'erd/block'
|
5
|
+
|
3
6
|
module Jekyll
|
4
7
|
module Diagrams
|
5
|
-
|
6
|
-
XML_REGEX = /^<\?xml(([^>]|\n)*>\n?){2}/.freeze
|
7
|
-
CONFIGURATIONS = %w[config edge].freeze
|
8
|
-
SWITCHES = {
|
9
|
-
'dot-entity' => false
|
10
|
-
}.freeze
|
11
|
-
|
12
|
-
def render_svg(code, config)
|
13
|
-
command = build_command(config)
|
14
|
-
|
15
|
-
svg = render_with_stdin_stdout(command, code)
|
16
|
-
svg.sub!(XML_REGEX, '')
|
17
|
-
end
|
18
|
-
|
19
|
-
def build_command(config)
|
20
|
-
command = +'erd --fmt=svg'
|
21
|
-
|
22
|
-
SWITCHES.merge(config.slice(*SWITCHES.keys)).each do |switch, value|
|
23
|
-
command << " --#{switch}" if value != false
|
24
|
-
end
|
25
|
-
|
26
|
-
CONFIGURATIONS.each do |conf|
|
27
|
-
command << " --#{conf}=#{config[conf]}" if config.key?(conf)
|
28
|
-
end
|
29
|
-
|
30
|
-
command
|
31
|
-
end
|
32
|
-
end
|
8
|
+
Liquid::Template.register_tag(:erd, ErdBlock)
|
33
9
|
end
|
34
10
|
end
|
35
|
-
|
36
|
-
Liquid::Template.register_tag(:erd, Jekyll::Diagrams::ErdBlock)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Diagrams
|
5
|
+
class ErdRenderer < BasicRenderer
|
6
|
+
XML_REGEX = /^<\?xml(([^>]|\n)*>\n?){2}/.freeze
|
7
|
+
CONFIGURATIONS = %w[config edge].freeze
|
8
|
+
SWITCHES = {
|
9
|
+
'dot-entity' => false
|
10
|
+
}.freeze
|
11
|
+
|
12
|
+
def render_svg(code, config)
|
13
|
+
command = build_command(config)
|
14
|
+
|
15
|
+
svg = render_with_stdin_stdout(command, code)
|
16
|
+
svg.sub!(XML_REGEX, '')
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_command(config)
|
20
|
+
command = +'erd --fmt=svg'
|
21
|
+
|
22
|
+
SWITCHES.merge(config.slice(*SWITCHES.keys)).each do |switch, value|
|
23
|
+
command << " --#{switch}" if value != false
|
24
|
+
end
|
25
|
+
|
26
|
+
CONFIGURATIONS.each do |conf|
|
27
|
+
command << " --#{conf}=#{config[conf]}" if config.key?(conf)
|
28
|
+
end
|
29
|
+
|
30
|
+
command
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -3,23 +3,22 @@
|
|
3
3
|
module Jekyll
|
4
4
|
module Diagrams
|
5
5
|
module Errors
|
6
|
-
|
7
|
-
def initialize(
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
class BasicError < ::StandardError
|
7
|
+
def initialize(val)
|
8
|
+
# Jekyll::...::CommandNotFoundError -> 'CommandNotFoundError'
|
9
|
+
klass = self.class.name.split('::').last
|
10
|
+
# 'CommandNotFound' -> 'Command Not Found'
|
11
|
+
prefix = klass.sub(/Error$/, '').split(/(?=[A-Z])/).join(' ')
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
"Command Not Found: #{@msg}"
|
13
|
+
# "Command Not Found: raw message"
|
14
|
+
super("#{prefix}: #{val}")
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
18
|
+
CommandNotFoundError = Class.new(BasicError)
|
19
|
+
RenderingFailedError = Class.new(BasicError)
|
20
|
+
RendererNotFoundError = Class.new(BasicError)
|
21
|
+
UnkownErrorModeError = Class.new(BasicError)
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
@@ -1,40 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'graphviz/renderer'
|
4
|
+
require_relative 'graphviz/block'
|
5
|
+
|
3
6
|
module Jekyll
|
4
7
|
module Diagrams
|
5
|
-
|
6
|
-
XML_REGEX = /^<\?xml(([^>]|\n)*>\n?){2}/.freeze
|
7
|
-
CONFIGRATIONS = {
|
8
|
-
'K' => 'default_layout',
|
9
|
-
'G' => 'graph_attributes',
|
10
|
-
'N' => 'node_attributes',
|
11
|
-
'E' => 'edge_attributes'
|
12
|
-
}.freeze
|
13
|
-
|
14
|
-
def render_svg(code, config)
|
15
|
-
command = build_command(config)
|
16
|
-
|
17
|
-
svg = render_with_stdin_stdout(command, code).force_encoding(
|
18
|
-
config.fetch('encoding', 'utf-8')
|
19
|
-
)
|
20
|
-
|
21
|
-
svg.sub!(XML_REGEX, '')
|
22
|
-
end
|
23
|
-
|
24
|
-
def build_command(config)
|
25
|
-
command = +'dot -Tsvg'
|
26
|
-
|
27
|
-
CONFIGRATIONS.each do |prefix, conf|
|
28
|
-
next unless config.key?(conf)
|
29
|
-
|
30
|
-
command << Diagrams.normalized_attrs(config[conf],
|
31
|
-
prefix: " -#{prefix}")
|
32
|
-
end
|
33
|
-
|
34
|
-
command
|
35
|
-
end
|
36
|
-
end
|
8
|
+
Liquid::Template.register_tag(:graphviz, GraphvizBlock)
|
37
9
|
end
|
38
10
|
end
|
39
|
-
|
40
|
-
Liquid::Template.register_tag(:graphviz, Jekyll::Diagrams::GraphvizBlock)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Diagrams
|
5
|
+
class GraphvizRenderer < BasicRenderer
|
6
|
+
XML_REGEX = /^<\?xml(([^>]|\n)*>\n?){2}/.freeze
|
7
|
+
CONFIGRATIONS = {
|
8
|
+
'K' => 'default_layout',
|
9
|
+
'G' => 'graph_attributes',
|
10
|
+
'N' => 'node_attributes',
|
11
|
+
'E' => 'edge_attributes'
|
12
|
+
}.freeze
|
13
|
+
|
14
|
+
def render_svg(code, config)
|
15
|
+
command = build_command(config)
|
16
|
+
|
17
|
+
svg = render_with_stdin_stdout(command, code).force_encoding(
|
18
|
+
config.fetch('encoding', 'utf-8')
|
19
|
+
)
|
20
|
+
|
21
|
+
svg.sub!(XML_REGEX, '')
|
22
|
+
end
|
23
|
+
|
24
|
+
def build_command(config)
|
25
|
+
command = +'dot -Tsvg'
|
26
|
+
|
27
|
+
CONFIGRATIONS.each do |prefix, conf|
|
28
|
+
next unless config.key?(conf)
|
29
|
+
|
30
|
+
command << Utils.normalized_attrs(
|
31
|
+
config[conf],
|
32
|
+
prefix: " -#{prefix}"
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
command
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -1,31 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'mermaid/renderer'
|
4
|
+
require_relative 'mermaid/block'
|
5
|
+
|
3
6
|
module Jekyll
|
4
7
|
module Diagrams
|
5
|
-
|
6
|
-
CONFIGURATIONS = %w[theme width height backgroundColor
|
7
|
-
configFile cssFile scale].freeze
|
8
|
-
|
9
|
-
def render_svg(code, config)
|
10
|
-
command = build_command(config)
|
11
|
-
|
12
|
-
render_with_tempfile(command, code) do |input, output|
|
13
|
-
"--input #{input} --output #{output}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def build_command(config)
|
18
|
-
command = +'mmdc --puppeteerConfigFile '
|
19
|
-
command << Diagrams.vendor_path('mermaid_puppeteer_config.json')
|
20
|
-
|
21
|
-
CONFIGURATIONS.each do |conf|
|
22
|
-
command << " --#{conf} #{config[conf]}" if config.key?(conf)
|
23
|
-
end
|
24
|
-
|
25
|
-
command
|
26
|
-
end
|
27
|
-
end
|
8
|
+
Liquid::Template.register_tag(:mermaid, MermaidBlock)
|
28
9
|
end
|
29
10
|
end
|
30
|
-
|
31
|
-
Liquid::Template.register_tag(:mermaid, Jekyll::Diagrams::MermaidBlock)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Diagrams
|
5
|
+
class MermaidRenderer < BasicRenderer
|
6
|
+
CONFIGURATIONS = %w[theme width height backgroundColor
|
7
|
+
configFile cssFile scale].freeze
|
8
|
+
|
9
|
+
def render_svg(code, config)
|
10
|
+
command = build_command(config)
|
11
|
+
|
12
|
+
render_with_tempfile(command, code) do |input, output|
|
13
|
+
"--input #{input} --output #{output}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_command(config)
|
18
|
+
command = +'mmdc --puppeteerConfigFile '
|
19
|
+
command << Utils.vendor_path('mermaid_puppeteer_config.json')
|
20
|
+
|
21
|
+
CONFIGURATIONS.each do |conf|
|
22
|
+
command << " --#{conf} #{config[conf]}" if config.key?(conf)
|
23
|
+
end
|
24
|
+
|
25
|
+
command
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -1,21 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'nomnoml/renderer'
|
4
|
+
require_relative 'nomnoml/block'
|
5
|
+
|
3
6
|
module Jekyll
|
4
7
|
module Diagrams
|
5
|
-
|
6
|
-
def render_svg(code, config)
|
7
|
-
command = build_command(config)
|
8
|
-
|
9
|
-
render_with_tempfile(command, code) do |input, output|
|
10
|
-
"#{input} #{output}"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def build_command(_config)
|
15
|
-
'nomnoml'
|
16
|
-
end
|
17
|
-
end
|
8
|
+
Liquid::Template.register_tag(:nomnoml, NomnomlBlock)
|
18
9
|
end
|
19
10
|
end
|
20
|
-
|
21
|
-
Liquid::Template.register_tag(:nomnoml, Jekyll::Diagrams::NomnomlBlock)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Diagrams
|
5
|
+
class NomnomlRenderer < BasicRenderer
|
6
|
+
def render_svg(code, config)
|
7
|
+
command = build_command(config)
|
8
|
+
|
9
|
+
render_with_tempfile(command, code) do |input, output|
|
10
|
+
"#{input} #{output}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_command(_config)
|
15
|
+
'nomnoml'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|