liquid-diagrams 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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