liquid-diagrams 0.3.0 → 0.4.0

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -16
  3. data/features/diagrams/bitfield.feature +48 -0
  4. data/features/diagrams/blockdiag.feature +19 -0
  5. data/features/diagrams/erd.feature +19 -0
  6. data/features/diagrams/graphviz.feature +19 -0
  7. data/features/diagrams/mermaid.feature +20 -0
  8. data/features/diagrams/netlistsvg.feature +27 -0
  9. data/features/diagrams/nomnoml.feature +19 -0
  10. data/features/diagrams/plantuml.feature +17 -0
  11. data/features/diagrams/smcat.feature +23 -0
  12. data/features/diagrams/svgbob.feature +19 -0
  13. data/features/diagrams/syntrax.feature +20 -0
  14. data/features/diagrams/vega.feature +23 -0
  15. data/features/diagrams/vegalite.feature +23 -0
  16. data/features/diagrams/wavedrom.feature +24 -0
  17. data/features/step_definitions/diagrams.rb +21 -0
  18. data/features/support/env.rb +15 -0
  19. data/lib/liquid_diagrams.rb +9 -17
  20. data/lib/liquid_diagrams/basic_block.rb +12 -42
  21. data/lib/liquid_diagrams/basic_renderer.rb +43 -1
  22. data/lib/liquid_diagrams/blocks.rb +14 -0
  23. data/lib/liquid_diagrams/renderers.rb +10 -0
  24. data/lib/liquid_diagrams/renderers/bitfield_renderer.rb +9 -13
  25. data/lib/liquid_diagrams/renderers/blockdiag_renderer.rb +7 -15
  26. data/lib/liquid_diagrams/renderers/erd_renderer.rb +7 -15
  27. data/lib/liquid_diagrams/renderers/graphviz_renderer.rb +10 -10
  28. data/lib/liquid_diagrams/renderers/mermaid_renderer.rb +2 -9
  29. data/lib/liquid_diagrams/renderers/netlistsvg_renderer.rb +13 -0
  30. data/lib/liquid_diagrams/renderers/nomnoml_renderer.rb +0 -4
  31. data/lib/liquid_diagrams/renderers/plantuml_renderer.rb +5 -5
  32. data/lib/liquid_diagrams/renderers/smcat_renderer.rb +0 -10
  33. data/lib/liquid_diagrams/renderers/svgbob_renderer.rb +0 -10
  34. data/lib/liquid_diagrams/renderers/syntrax_renderer.rb +0 -10
  35. data/lib/liquid_diagrams/renderers/vega_renderer.rb +9 -23
  36. data/lib/liquid_diagrams/renderers/vegalite_renderer.rb +19 -0
  37. data/lib/liquid_diagrams/renderers/wavedrom_renderer.rb +1 -1
  38. data/lib/liquid_diagrams/rendering.rb +8 -6
  39. data/lib/liquid_diagrams/utils.rb +21 -14
  40. data/lib/liquid_diagrams/version.rb +1 -1
  41. data/spec/liquid_diagrams/basic_block_spec.rb +25 -62
  42. data/spec/liquid_diagrams/basic_renderer_spec.rb +27 -5
  43. data/spec/liquid_diagrams/blocks_spec.rb +0 -0
  44. data/spec/liquid_diagrams/renderers/bitfield_renderer_spec.rb +1 -19
  45. data/spec/liquid_diagrams/renderers/blockdiag_renderer_spec.rb +3 -31
  46. data/spec/liquid_diagrams/renderers/erd_renderer_spec.rb +3 -37
  47. data/spec/liquid_diagrams/renderers/graphviz_renderer_spec.rb +11 -21
  48. data/spec/liquid_diagrams/renderers/mermaid_renderer_spec.rb +3 -19
  49. data/spec/liquid_diagrams/renderers/netlistsvg_renderer_spec.rb +9 -0
  50. data/spec/liquid_diagrams/renderers/nomnoml_renderer_spec.rb +1 -7
  51. data/spec/liquid_diagrams/renderers/plantuml_renderer_spec.rb +4 -14
  52. data/spec/liquid_diagrams/renderers/smcat_renderer_spec.rb +1 -25
  53. data/spec/liquid_diagrams/renderers/svgbob_renderer_spec.rb +1 -23
  54. data/spec/liquid_diagrams/renderers/syntrax_renderer_spec.rb +1 -23
  55. data/spec/liquid_diagrams/renderers/vega_renderer_spec.rb +3 -21
  56. data/spec/liquid_diagrams/renderers/vegalite_renderer_spec.rb +15 -0
  57. data/spec/liquid_diagrams/renderers/wavedrom_renderer_spec.rb +3 -3
  58. data/spec/liquid_diagrams/utils_spec.rb +20 -8
  59. data/spec/liquid_diagrams_spec.rb +52 -0
  60. data/spec/spec_helper.rb +5 -0
  61. data/spec/support/shared_examples.rb +8 -19
  62. data/vendor/{mermaid_puppeteer_config.json → puppeteer.json} +0 -0
  63. metadata +70 -19
@@ -2,48 +2,14 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::ErdRenderer do
5
+ RSpec.describe LiquidDiagrams::Renderers::ErdRenderer, :renderers do
6
6
  subject(:renderer) { described_class.new('content') }
7
7
 
8
8
  describe '#render' do
9
9
  include_examples 'render with stdin and stdout', described_class
10
10
  end
11
11
 
12
- describe '#build_command' do
13
- context 'when config is empty' do
14
- it { expect(renderer.build_command).to eq 'erd --fmt=svg' }
15
- end
16
-
17
- context 'when config is not empty' do
18
- before do
19
- renderer.instance_variable_set(
20
- :@config, { 'edge' => 10, 'color' => :blue }
21
- )
22
- end
23
-
24
- it 'build command with config' do
25
- expect(renderer.build_command).to match '--edge=10'
26
- end
27
-
28
- it 'ignore unsupported configuration' do
29
- expect(renderer.build_command).not_to match '--color'
30
- end
31
- end
32
-
33
- context 'when switch is true' do
34
- it 'build command' do
35
- renderer.instance_variable_set(:@config, { 'dot-entity' => true })
36
-
37
- expect(renderer.build_command).to match '--dot-entity'
38
- end
39
- end
40
-
41
- context 'when switch is false' do
42
- it 'build command' do
43
- renderer.instance_variable_set(:@config, { 'dot-entity' => false })
44
-
45
- expect(renderer.build_command).not_to match '--dot-entity'
46
- end
47
- end
12
+ describe '#executable' do
13
+ it { expect(renderer.executable).to eq 'erd --fmt=svg' }
48
14
  end
49
15
  end
@@ -2,28 +2,18 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::GraphvizRenderer do
5
+ RSpec.describe LiquidDiagrams::Renderers::GraphvizRenderer, :renderers do
6
6
  subject(:renderer) { described_class.new('content') }
7
7
 
8
8
  describe '#render' do
9
9
  include_examples 'render with stdin and stdout', described_class
10
10
  end
11
11
 
12
- describe '#build_command' do
13
- context 'when config is empty' do
14
- it { expect(renderer.build_command).to eq 'dot -Tsvg' }
15
- end
16
-
17
- context 'when config is not empty' do
18
- before do
19
- renderer.instance_variable_set(:@config, { 'layout' => 'dot' })
20
- end
21
-
22
- it 'build command with config' do
23
- expect(renderer.build_command).to match '-Kdot'
24
- end
25
- end
12
+ describe '#executable' do
13
+ it { expect(renderer.executable).to eq 'dot -Tsvg' }
14
+ end
26
15
 
16
+ describe '#arguments' do
27
17
  context 'with string attributes' do
28
18
  before do
29
19
  renderer.instance_variable_set(
@@ -31,8 +21,8 @@ RSpec.describe LiquidDiagrams::Renderers::GraphvizRenderer do
31
21
  )
32
22
  end
33
23
 
34
- it 'build command' do
35
- expect(renderer.build_command).to match ' -Gcolor=red'
24
+ it do
25
+ expect(renderer.arguments).to match '-Gcolor=red'
36
26
  end
37
27
  end
38
28
 
@@ -43,8 +33,8 @@ RSpec.describe LiquidDiagrams::Renderers::GraphvizRenderer do
43
33
  )
44
34
  end
45
35
 
46
- it 'build command' do
47
- expect(renderer.build_command).to match ' -Ncolor=red -Nsize=10'
36
+ it do
37
+ expect(renderer.arguments).to match '-Ncolor=red -Nsize=10'
48
38
  end
49
39
  end
50
40
 
@@ -55,8 +45,8 @@ RSpec.describe LiquidDiagrams::Renderers::GraphvizRenderer do
55
45
  )
56
46
  end
57
47
 
58
- it 'build command' do
59
- expect(renderer.build_command).to match ' -Ecolor=red -Esize=10'
48
+ it do
49
+ expect(renderer.arguments).to match '-Ecolor=red -Esize=10'
60
50
  end
61
51
  end
62
52
  end
@@ -2,30 +2,14 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::MermaidRenderer do
5
+ RSpec.describe LiquidDiagrams::Renderers::MermaidRenderer, :renderers do
6
6
  subject(:renderer) { described_class.new('content') }
7
7
 
8
8
  describe '#render' do
9
9
  include_examples 'render with tempfile', described_class
10
10
  end
11
11
 
12
- describe '#build_command' do
13
- context 'when config is empty' do
14
- it { expect(renderer.build_command).to match 'mmdc --puppeteerConfigFile' }
15
- end
16
-
17
- context 'when config is not empty' do
18
- before do
19
- renderer.instance_variable_set(:@config, { 'scale' => 10, 'color' => :blue })
20
- end
21
-
22
- it 'build command with config' do
23
- expect(renderer.build_command).to match '--scale 10'
24
- end
25
-
26
- it 'ignore unsupported configuration' do
27
- expect(renderer.build_command).not_to match '--color blue'
28
- end
29
- end
12
+ describe '#executable' do
13
+ it { expect(renderer.executable).to match 'mmdc --puppeteerConfigFile' }
30
14
  end
31
15
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe LiquidDiagrams::Renderers::NetlistsvgRenderer, :renderers do
6
+ describe '#render' do
7
+ include_examples 'render with tempfile', described_class
8
+ end
9
+ end
@@ -2,14 +2,8 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::NomnomlRenderer do
6
- subject(:renderer) { described_class.new('content') }
7
-
5
+ RSpec.describe LiquidDiagrams::Renderers::NomnomlRenderer, :renderers do
8
6
  describe '#render' do
9
7
  include_examples 'render with tempfile', described_class
10
8
  end
11
-
12
- describe '#build_command' do
13
- it { expect(renderer.build_command).to eq 'nomnoml' }
14
- end
15
9
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::PlantumlRenderer do
5
+ RSpec.describe LiquidDiagrams::Renderers::PlantumlRenderer, :renderers do
6
6
  subject(:renderer) { described_class.new('content') }
7
7
 
8
8
  describe '#render' do
@@ -13,15 +13,10 @@ RSpec.describe LiquidDiagrams::Renderers::PlantumlRenderer do
13
13
  ).and_return('<?xml version="1.0" encoding="UTF-8" standalone="no"?><>')
14
14
  end
15
15
 
16
- it 'call build_command' do
17
- renderer.render
18
-
19
- expect(renderer).to have_received(:build_command)
20
- end
21
-
22
16
  it 'render with stdin and stdout' do
23
17
  renderer.render
24
18
 
19
+ expect(renderer).to have_received(:build_command)
25
20
  expect(LiquidDiagrams::Rendering).to have_received(:render_with_stdin_stdout)
26
21
  end
27
22
 
@@ -30,12 +25,7 @@ RSpec.describe LiquidDiagrams::Renderers::PlantumlRenderer do
30
25
  end
31
26
  end
32
27
 
33
- describe '#build_command' do
34
- it do
35
- command = renderer.build_command
36
-
37
- expect(command).to match 'plantuml'
38
- expect(command).to match '-tsvg -pipe'
39
- end
28
+ describe '#executable' do
29
+ it { expect(renderer.executable).to match '-tsvg -pipe' }
40
30
  end
41
31
  end
@@ -2,32 +2,8 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::SmcatRenderer do
6
- subject(:renderer) { described_class.new('content') }
7
-
5
+ RSpec.describe LiquidDiagrams::Renderers::SmcatRenderer, :renderers do
8
6
  describe '#render' do
9
7
  include_examples 'render with tempfile', described_class
10
8
  end
11
-
12
- describe '#build_command' do
13
- context 'when config is empty' do
14
- it { expect(renderer.build_command).to eq 'smcat' }
15
- end
16
-
17
- context 'when config is not empty' do
18
- before do
19
- renderer.instance_variable_set(
20
- :@config, { 'engine' => 'dot', 'color' => :blue }
21
- )
22
- end
23
-
24
- it 'build command with config' do
25
- expect(renderer.build_command).to match '--engine dot'
26
- end
27
-
28
- it 'ignore unsupported configuration' do
29
- expect(renderer.build_command).not_to match '--color blue'
30
- end
31
- end
32
- end
33
9
  end
@@ -2,30 +2,8 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::SvgbobRenderer do
6
- subject(:renderer) { described_class.new('content') }
7
-
5
+ RSpec.describe LiquidDiagrams::Renderers::SvgbobRenderer, :renderers do
8
6
  describe '#render' do
9
7
  include_examples 'render with stdin and stdout', described_class
10
8
  end
11
-
12
- describe '#build_command' do
13
- context 'when config is empty' do
14
- it { expect(renderer.build_command).to eq 'svgbob' }
15
- end
16
-
17
- context 'when config is not empty' do
18
- before do
19
- renderer.instance_variable_set(:@config, { 'scale' => 10, 'color' => :blue })
20
- end
21
-
22
- it 'build command with config' do
23
- expect(renderer.build_command).to match '--scale 10'
24
- end
25
-
26
- it 'ignore unsupported configuration' do
27
- expect(renderer.build_command).not_to match '--color blue'
28
- end
29
- end
30
- end
31
9
  end
@@ -2,30 +2,8 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::SyntraxRenderer do
6
- subject(:renderer) { described_class.new('content') }
7
-
5
+ RSpec.describe LiquidDiagrams::Renderers::SyntraxRenderer, :renderers do
8
6
  describe '#render' do
9
7
  include_examples 'render with tempfile', described_class
10
8
  end
11
-
12
- describe '#build_command' do
13
- context 'when config is empty' do
14
- it { expect(renderer.build_command).to eq 'syntrax' }
15
- end
16
-
17
- context 'when config is not empty' do
18
- before do
19
- renderer.instance_variable_set(:@config, { 'scale' => 10, 'color' => :blue })
20
- end
21
-
22
- it 'build command with config' do
23
- expect(renderer.build_command).to match '--scale 10'
24
- end
25
-
26
- it 'ignore unsupported configuration' do
27
- expect(renderer.build_command).not_to match '--color blue'
28
- end
29
- end
30
- end
31
9
  end
@@ -2,32 +2,14 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::VegaRenderer do
5
+ RSpec.describe LiquidDiagrams::Renderers::VegaRenderer, :renderers do
6
6
  subject(:renderer) { described_class.new('content') }
7
7
 
8
8
  describe '#render' do
9
9
  include_examples 'render with stdin and stdout', described_class
10
10
  end
11
11
 
12
- describe '#build_command' do
13
- context 'when config is empty' do
14
- it { expect(renderer.build_command).to eq 'vg2svg' }
15
- end
16
-
17
- context 'when config is not empty' do
18
- before do
19
- renderer.instance_variable_set(
20
- :@config, { 'scale' => 10, 'other' => 'value' }
21
- )
22
- end
23
-
24
- it 'build command with config' do
25
- expect(renderer.build_command).to match '--scale 10'
26
- end
27
-
28
- it 'ignore unsupported configuration' do
29
- expect(renderer.build_command).not_to match '--other'
30
- end
31
- end
12
+ describe '#executable' do
13
+ it { expect(renderer.executable).to eq 'vg2svg' }
32
14
  end
33
15
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe LiquidDiagrams::Renderers::VegaliteRenderer, :renderers do
6
+ subject(:renderer) { described_class.new('content') }
7
+
8
+ describe '#render' do
9
+ include_examples 'render with stdin and stdout', described_class
10
+ end
11
+
12
+ describe '#executable' do
13
+ it { expect(renderer.executable).to eq 'vl2svg' }
14
+ end
15
+ end
@@ -2,14 +2,14 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe LiquidDiagrams::Renderers::WavedromRenderer do
5
+ RSpec.describe LiquidDiagrams::Renderers::WavedromRenderer, :renderers do
6
6
  subject(:renderer) { described_class.new('content') }
7
7
 
8
8
  describe '#render' do
9
9
  include_examples 'render with tempfile', described_class
10
10
  end
11
11
 
12
- describe '#build_command' do
13
- it { expect(renderer.build_command).to eq 'wavedrom-cli' }
12
+ describe '#executable' do
13
+ it { expect(renderer.executable).to eq 'wavedrom-cli' }
14
14
  end
15
15
  end
@@ -8,7 +8,7 @@ RSpec.describe LiquidDiagrams::Utils do
8
8
  it 'join the string with prefix' do
9
9
  args = described_class.join('path', with: ' -I')
10
10
 
11
- expect(args).to eq ' -Ipath'
11
+ expect(args).to eq '-Ipath'
12
12
  end
13
13
  end
14
14
 
@@ -18,7 +18,7 @@ RSpec.describe LiquidDiagrams::Utils do
18
18
  %w[path1 path2], with: ' -I'
19
19
  )
20
20
 
21
- expect(args).to eq ' -Ipath1 -Ipath2'
21
+ expect(args).to eq '-Ipath1 -Ipath2'
22
22
  end
23
23
  end
24
24
 
@@ -28,16 +28,26 @@ RSpec.describe LiquidDiagrams::Utils do
28
28
  { color: 'red', size: '10' }, with: ' --'
29
29
  ) { |k, v| "#{k} #{v}" }
30
30
 
31
- expect(args).to eq ' --color red --size 10'
31
+ expect(args).to eq '--color red --size 10'
32
32
  end
33
33
  end
34
34
  end
35
35
 
36
- describe '.merge' do
37
- it 'merge the hash' do
38
- hash = described_class.merge({ k1: 1, k2: 2 }, { k1: 11, k3: 13 })
36
+ describe '.build_options' do
37
+ let(:keys) { %i[color size] }
38
+ let(:config) { { color: :red, scale: 5 } }
39
39
 
40
- expect(hash).to eq({ k1: 11, k2: 2 })
40
+ it 'build options from config' do
41
+ expect(described_class.build_options(config, keys)).to eq '--color red'
42
+ end
43
+ end
44
+
45
+ describe '.build_flags' do
46
+ let(:keys) { %i[bold italic] }
47
+ let(:config) { { bold: true, center: true, italic: false } }
48
+
49
+ it 'build flags from config' do
50
+ expect(described_class.build_flags(config, keys)).to eq '--bold'
41
51
  end
42
52
  end
43
53
 
@@ -70,7 +80,9 @@ RSpec.describe LiquidDiagrams::Utils do
70
80
 
71
81
  options = described_class.parse_inline_options(input)
72
82
 
73
- expect(options).to match a_hash_including(a1: 'v1', a2: 'v2', a3: 'k3 v3')
83
+ expect(options).to match a_hash_including(
84
+ 'a1' => 'v1', 'a2' => 'v2', 'a3' => 'k3 v3'
85
+ )
74
86
  end
75
87
  end
76
88
  end