liquid-diagrams 0.1.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 (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