liquid-diagrams 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +124 -0
  4. data/lib/liquid-diagrams.rb +3 -0
  5. data/lib/liquid_diagrams/basic_block.rb +49 -0
  6. data/lib/liquid_diagrams/basic_renderer.rb +20 -0
  7. data/lib/liquid_diagrams/errors.rb +12 -0
  8. data/lib/liquid_diagrams/renderers/blockdiag_renderer.rb +50 -0
  9. data/lib/liquid_diagrams/renderers/erd_renderer.rb +36 -0
  10. data/lib/liquid_diagrams/renderers/graphviz_renderer.rb +33 -0
  11. data/lib/liquid_diagrams/renderers/mermaid_renderer.rb +34 -0
  12. data/lib/liquid_diagrams/renderers/nomnoml_renderer.rb +17 -0
  13. data/lib/liquid_diagrams/renderers/plantuml_renderer.rb +20 -0
  14. data/lib/liquid_diagrams/renderers/smcat_renderer.rb +31 -0
  15. data/lib/liquid_diagrams/renderers/svgbob_renderer.rb +28 -0
  16. data/lib/liquid_diagrams/renderers/syntrax_renderer.rb +28 -0
  17. data/lib/liquid_diagrams/renderers/vega_renderer.rb +25 -0
  18. data/lib/liquid_diagrams/renderers/wavedrom_renderer.rb +17 -0
  19. data/lib/liquid_diagrams/rendering.rb +47 -0
  20. data/lib/liquid_diagrams/utils.rb +47 -0
  21. data/lib/liquid_diagrams/version.rb +5 -0
  22. data/lib/liquid_diagrams.rb +89 -0
  23. data/spec/liquid_diagrams/basic_block_spec.rb +49 -0
  24. data/spec/liquid_diagrams/basic_renderer_spec.rb +28 -0
  25. data/spec/liquid_diagrams/renderers/blockdiag_renderer_spec.rb +43 -0
  26. data/spec/liquid_diagrams/renderers/erd_renderer_spec.rb +49 -0
  27. data/spec/liquid_diagrams/renderers/graphviz_renderer_spec.rb +63 -0
  28. data/spec/liquid_diagrams/renderers/mermaid_renderer_spec.rb +31 -0
  29. data/spec/liquid_diagrams/renderers/nomnoml_renderer_spec.rb +15 -0
  30. data/spec/liquid_diagrams/renderers/plantuml_renderer_spec.rb +41 -0
  31. data/spec/liquid_diagrams/renderers/smcat_renderer_spec.rb +33 -0
  32. data/spec/liquid_diagrams/renderers/svgbob_renderer_spec.rb +31 -0
  33. data/spec/liquid_diagrams/renderers/syntrax_renderer_spec.rb +31 -0
  34. data/spec/liquid_diagrams/renderers/vega_renderer_spec.rb +33 -0
  35. data/spec/liquid_diagrams/renderers/wavedrom_renderer_spec.rb +15 -0
  36. data/spec/liquid_diagrams/rendering_spec.rb +127 -0
  37. data/spec/liquid_diagrams/utils_spec.rb +66 -0
  38. data/spec/liquid_diagrams_spec.rb +79 -0
  39. data/spec/spec_helper.rb +22 -0
  40. data/spec/support/shared_examples.rb +47 -0
  41. data/vendor/mermaid_puppeteer_config.json +3 -0
  42. data/vendor/plantuml.1.2020.1.jar +0 -0
  43. metadata +232 -0
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe LiquidDiagrams::Utils do
6
+ describe '.join' do
7
+ context 'with string input' do
8
+ it 'join the string with prefix' do
9
+ args = described_class.join('path', with: ' -I')
10
+
11
+ expect(args).to eq ' -Ipath'
12
+ end
13
+ end
14
+
15
+ context 'with array input' do
16
+ it 'join the array with prefix' do
17
+ args = described_class.join(
18
+ %w[path1 path2], with: ' -I'
19
+ )
20
+
21
+ expect(args).to eq ' -Ipath1 -Ipath2'
22
+ end
23
+ end
24
+
25
+ context 'with hash input' do
26
+ it 'join the hash with prefix' do
27
+ args = described_class.join(
28
+ { color: 'red', size: '10' }, with: ' --'
29
+ ) { |k, v| "#{k} #{v}" }
30
+
31
+ expect(args).to eq ' --color red --size 10'
32
+ end
33
+ end
34
+ end
35
+
36
+ describe '.merge' do
37
+ it 'merge the hash' do
38
+ hash = described_class.merge({ k1: 1, k2: 2 }, { k1: 11, k3: 13 })
39
+
40
+ expect(hash).to eq({ k1: 11, k2: 2 })
41
+ end
42
+ end
43
+
44
+ describe '.run_jar' do
45
+ it 'run jar in headless mode' do
46
+ command = described_class.run_jar('test.jar')
47
+
48
+ expect(command).to match '-Djava.awt.headless=true'
49
+ expect(command).to match '-jar test.jar'
50
+ end
51
+ end
52
+
53
+ describe '.vendor_path' do
54
+ context 'with no input' do
55
+ it 'return the vendor directory path' do
56
+ expect(described_class.vendor_path).to end_with 'vendor/'
57
+ end
58
+ end
59
+
60
+ context 'with input file name' do
61
+ it 'return the file path under vendor direcotry' do
62
+ expect(described_class.vendor_path('file')).to end_with 'vendor/file'
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe LiquidDiagrams do
4
+ describe '.diagrams' do
5
+ before do
6
+ allow(described_class).to receive(:renderers).and_return({})
7
+ end
8
+
9
+ it 'return and cache diagrams' do
10
+ 3.times { described_class.diagrams }
11
+
12
+ expect(described_class).to have_received(:renderers).once
13
+ end
14
+ end
15
+
16
+ describe '.renderers' do
17
+ before do
18
+ allow(described_class::Renderers).to receive(:constants).and_return(
19
+ %i[FirstRenderer SecondRenderer OtherConstant]
20
+ )
21
+ allow(described_class::Renderers).to receive(:const_get)
22
+ end
23
+
24
+ it 'return and cache renderers' do
25
+ 3.times { described_class.renderers }
26
+
27
+ expect(described_class.renderers.keys).to eq %i[first second]
28
+ expect(described_class::Renderers).to have_received(:constants).once
29
+ end
30
+ end
31
+
32
+ describe '.register_diagrams' do
33
+ before { allow(described_class).to receive(:register_diagram).and_return '!' }
34
+
35
+ it 'call .register_diagram for every diagrams' do
36
+ described_class.register_diagrams(('a'..'e').to_a)
37
+
38
+ expect(described_class).to have_received(:register_diagram).exactly(5).times
39
+ end
40
+ end
41
+
42
+ describe '.register_diagram' do
43
+ before do
44
+ allow(described_class).to receive(:diagrams).and_return({ test: Class.new })
45
+ end
46
+
47
+ context 'when diagram not found' do
48
+ it 'raise diagram not found error' do
49
+ expect do
50
+ described_class.register_diagrams(:unkown)
51
+ end.to raise_error LiquidDiagrams::Errors::DiagramNotFoundError
52
+ end
53
+ end
54
+
55
+ context 'when diagram is found' do
56
+ let(:block) { Class.new }
57
+
58
+ before do
59
+ allow(Liquid::Template).to receive(:register_tag)
60
+ allow(described_class::Blocks).to receive(:const_get).and_return(block)
61
+ allow(described_class).to receive(:registered_diagrams).and_return({})
62
+
63
+ described_class.register_diagram(:test)
64
+ end
65
+
66
+ it 'search diagram block in Blocks module' do
67
+ expect(LiquidDiagrams::Blocks).to have_received(:const_get).with('TestBlock')
68
+ end
69
+
70
+ it 'register a liquid tag with the diagram block' do
71
+ expect(Liquid::Template).to have_received(:register_tag).with(:test, block)
72
+ end
73
+
74
+ it 'store diagram to .registered_diagrams' do
75
+ expect(described_class).to have_received(:registered_diagrams)
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/setup'
4
+
5
+ require 'simplecov'
6
+ require 'pry-byebug'
7
+
8
+ require 'liquid-diagrams'
9
+
10
+ RSpec.configure do |config|
11
+ # Enable flags like --only-failures and --next-failure
12
+ config.example_status_persistence_file_path = '.rspec_status'
13
+
14
+ # Disable RSpec exposing methods globally on `Module` and `main`
15
+ config.disable_monkey_patching!
16
+
17
+ config.expect_with :rspec do |c|
18
+ c.syntax = :expect
19
+ end
20
+ end
21
+
22
+ Dir[File.join(__dir__, 'support/*.rb')].sort.each { |file| require file }
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'render with stdin and stdout' do |kclass|
4
+ let(:renderer) { kclass.new 'content' }
5
+
6
+ before do
7
+ allow(renderer).to receive(:build_command).and_return 'cmd'
8
+ allow(LiquidDiagrams::Rendering).to receive(
9
+ :render_with_stdin_stdout
10
+ ).and_return 'ok'
11
+ end
12
+
13
+ it 'call build_command' do
14
+ renderer.render
15
+
16
+ expect(renderer).to have_received(:build_command)
17
+ end
18
+
19
+ it 'render with tempfile' do
20
+ expect(renderer.render).to eq 'ok'
21
+
22
+ expect(LiquidDiagrams::Rendering).to have_received(
23
+ :render_with_stdin_stdout
24
+ ).with('cmd', renderer.instance_variable_get(:@content))
25
+ end
26
+ end
27
+
28
+ RSpec.shared_examples 'render with tempfile' do |kclass|
29
+ let(:renderer) { kclass.new 'content' }
30
+
31
+ before do
32
+ allow(renderer).to receive(:build_command)
33
+ allow(LiquidDiagrams::Rendering).to receive(
34
+ :render_with_tempfile
35
+ ).and_yield('in', 'out')
36
+
37
+ renderer.render
38
+ end
39
+
40
+ it 'call build_command' do
41
+ expect(renderer).to have_received(:build_command)
42
+ end
43
+
44
+ it 'render with tempfile' do
45
+ expect(LiquidDiagrams::Rendering).to have_received(:render_with_tempfile)
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ {
2
+ "args": ["--no-sandbox"]
3
+ }
Binary file
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: liquid-diagrams
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - zhustec
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-05-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: liquid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry-byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '12.0'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '14.0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '12.0'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '14.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubocop
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.82.0
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.82.0
89
+ - !ruby/object:Gem::Dependency
90
+ name: rubocop-rspec
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.30'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.30'
103
+ - !ruby/object:Gem::Dependency
104
+ name: simplecov
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.16'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.16'
117
+ - !ruby/object:Gem::Dependency
118
+ name: simplecov-lcov
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.5'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.5'
131
+ description: |
132
+ A Liquid plugin with support for Blockdiag, Erd, GraphViz, Mermaid,
133
+ Nomnoml, PlantUML, Svgbob, Syntrax, Vega, Vega-Lite and WaveDrom.
134
+ email:
135
+ - zhustec@foxmail.com
136
+ executables: []
137
+ extensions: []
138
+ extra_rdoc_files: []
139
+ files:
140
+ - LICENSE
141
+ - README.md
142
+ - lib/liquid-diagrams.rb
143
+ - lib/liquid_diagrams.rb
144
+ - lib/liquid_diagrams/basic_block.rb
145
+ - lib/liquid_diagrams/basic_renderer.rb
146
+ - lib/liquid_diagrams/errors.rb
147
+ - lib/liquid_diagrams/renderers/blockdiag_renderer.rb
148
+ - lib/liquid_diagrams/renderers/erd_renderer.rb
149
+ - lib/liquid_diagrams/renderers/graphviz_renderer.rb
150
+ - lib/liquid_diagrams/renderers/mermaid_renderer.rb
151
+ - lib/liquid_diagrams/renderers/nomnoml_renderer.rb
152
+ - lib/liquid_diagrams/renderers/plantuml_renderer.rb
153
+ - lib/liquid_diagrams/renderers/smcat_renderer.rb
154
+ - lib/liquid_diagrams/renderers/svgbob_renderer.rb
155
+ - lib/liquid_diagrams/renderers/syntrax_renderer.rb
156
+ - lib/liquid_diagrams/renderers/vega_renderer.rb
157
+ - lib/liquid_diagrams/renderers/wavedrom_renderer.rb
158
+ - lib/liquid_diagrams/rendering.rb
159
+ - lib/liquid_diagrams/utils.rb
160
+ - lib/liquid_diagrams/version.rb
161
+ - spec/liquid_diagrams/basic_block_spec.rb
162
+ - spec/liquid_diagrams/basic_renderer_spec.rb
163
+ - spec/liquid_diagrams/renderers/blockdiag_renderer_spec.rb
164
+ - spec/liquid_diagrams/renderers/erd_renderer_spec.rb
165
+ - spec/liquid_diagrams/renderers/graphviz_renderer_spec.rb
166
+ - spec/liquid_diagrams/renderers/mermaid_renderer_spec.rb
167
+ - spec/liquid_diagrams/renderers/nomnoml_renderer_spec.rb
168
+ - spec/liquid_diagrams/renderers/plantuml_renderer_spec.rb
169
+ - spec/liquid_diagrams/renderers/smcat_renderer_spec.rb
170
+ - spec/liquid_diagrams/renderers/svgbob_renderer_spec.rb
171
+ - spec/liquid_diagrams/renderers/syntrax_renderer_spec.rb
172
+ - spec/liquid_diagrams/renderers/vega_renderer_spec.rb
173
+ - spec/liquid_diagrams/renderers/wavedrom_renderer_spec.rb
174
+ - spec/liquid_diagrams/rendering_spec.rb
175
+ - spec/liquid_diagrams/utils_spec.rb
176
+ - spec/liquid_diagrams_spec.rb
177
+ - spec/spec_helper.rb
178
+ - spec/support/shared_examples.rb
179
+ - vendor/mermaid_puppeteer_config.json
180
+ - vendor/plantuml.1.2020.1.jar
181
+ homepage: https://github.com/zhustec/liquid-diagrams
182
+ licenses:
183
+ - MIT
184
+ metadata:
185
+ homepage_uri: https://github.com/zhustec/liquid-diagrams
186
+ changelog_uri: https://github.com/zhustec/liquid-diagrams/releases
187
+ source_code_uri: https://github.com/zhustec/liquid-diagrams
188
+ bug_tracker_uri: https://github.com/zhustec/liquid-diagrams/issues
189
+ post_install_message: "\n __________________________________________________________\n
190
+ \ ..........................................................\n\n Thank you
191
+ for installing liquid-diagrams.\n\n But it doesn't mean that you can use all
192
+ diagrams for now,\n You still need to install some dependencies by your self.\n\n
193
+ \ Please refer to the link below for more details:\n\n https://github.com/zhustec/liquid-diagrams#readme\n\n
194
+ \ ..........................................................\n __________________________________________________________\n
195
+ \ "
196
+ rdoc_options: []
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: 2.5.0
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ requirements: []
210
+ rubygems_version: 3.1.2
211
+ signing_key:
212
+ specification_version: 4
213
+ summary: Liquid plugins for diagrams support.
214
+ test_files:
215
+ - spec/spec_helper.rb
216
+ - spec/support/shared_examples.rb
217
+ - spec/liquid_diagrams/rendering_spec.rb
218
+ - spec/liquid_diagrams/basic_renderer_spec.rb
219
+ - spec/liquid_diagrams/basic_block_spec.rb
220
+ - spec/liquid_diagrams/renderers/nomnoml_renderer_spec.rb
221
+ - spec/liquid_diagrams/renderers/mermaid_renderer_spec.rb
222
+ - spec/liquid_diagrams/renderers/plantuml_renderer_spec.rb
223
+ - spec/liquid_diagrams/renderers/smcat_renderer_spec.rb
224
+ - spec/liquid_diagrams/renderers/svgbob_renderer_spec.rb
225
+ - spec/liquid_diagrams/renderers/vega_renderer_spec.rb
226
+ - spec/liquid_diagrams/renderers/blockdiag_renderer_spec.rb
227
+ - spec/liquid_diagrams/renderers/graphviz_renderer_spec.rb
228
+ - spec/liquid_diagrams/renderers/syntrax_renderer_spec.rb
229
+ - spec/liquid_diagrams/renderers/wavedrom_renderer_spec.rb
230
+ - spec/liquid_diagrams/renderers/erd_renderer_spec.rb
231
+ - spec/liquid_diagrams/utils_spec.rb
232
+ - spec/liquid_diagrams_spec.rb