vectory 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +1 -1
  3. data/.github/workflows/release.yml +24 -0
  4. data/.gitignore +4 -0
  5. data/README.adoc +157 -1
  6. data/Rakefile +4 -0
  7. data/bin/vectory +9 -0
  8. data/emf.emf +1 -0
  9. data/lib/vectory/cli.rb +140 -0
  10. data/lib/vectory/datauri.rb +48 -0
  11. data/lib/vectory/emf.rb +31 -0
  12. data/lib/vectory/eps.rb +31 -0
  13. data/lib/vectory/file_magic.rb +53 -0
  14. data/lib/vectory/image.rb +23 -0
  15. data/lib/vectory/inkscape_converter.rb +72 -0
  16. data/lib/vectory/ps.rb +25 -0
  17. data/lib/vectory/svg.rb +27 -0
  18. data/lib/vectory/system_call.rb +49 -0
  19. data/lib/vectory/utils.rb +54 -0
  20. data/lib/vectory/vector.rb +74 -0
  21. data/lib/vectory/version.rb +1 -1
  22. data/lib/vectory.rb +34 -1
  23. data/spec/examples/emf2eps/img.emf +0 -0
  24. data/spec/examples/emf2eps/img.emf.datauri +1 -0
  25. data/spec/examples/emf2eps/img.eps +88 -0
  26. data/spec/examples/emf2ps/img.emf +0 -0
  27. data/spec/examples/emf2ps/img.ps +125 -0
  28. data/spec/examples/emf2svg/img.emf +0 -0
  29. data/spec/examples/emf2svg/img.svg +9 -0
  30. data/spec/examples/eps2emf/img.emf +0 -0
  31. data/spec/examples/eps2emf/img.eps +199 -0
  32. data/spec/examples/eps2emf/img.eps.datauri +1 -0
  33. data/spec/examples/eps2ps/img.eps +199 -0
  34. data/spec/examples/eps2ps/img.ps +549 -0
  35. data/spec/examples/eps2svg/img.eps +199 -0
  36. data/spec/examples/eps2svg/img.svg +173 -0
  37. data/spec/examples/eps_but_svg_extension.svg +199 -0
  38. data/spec/examples/img.jpg +0 -0
  39. data/spec/examples/ps2emf/img.emf +0 -0
  40. data/spec/examples/ps2emf/img.ps +549 -0
  41. data/spec/examples/ps2emf/img.ps.datauri +1 -0
  42. data/spec/examples/ps2eps/img.eps +844 -0
  43. data/spec/examples/ps2eps/img.ps +549 -0
  44. data/spec/examples/ps2svg/img.ps +549 -0
  45. data/spec/examples/ps2svg/img.svg +476 -0
  46. data/spec/examples/svg2emf/img.emf +0 -0
  47. data/spec/examples/svg2emf/img.svg +1 -0
  48. data/spec/examples/svg2emf/img.svg.datauri +1 -0
  49. data/spec/examples/svg2eps/img.eps +88 -0
  50. data/spec/examples/svg2eps/img.svg +1 -0
  51. data/spec/examples/svg2ps/img.ps +125 -0
  52. data/spec/examples/svg2ps/img.svg +1 -0
  53. data/spec/spec_helper.rb +7 -0
  54. data/spec/support/matchers.rb +39 -0
  55. data/spec/support/text_matcher.rb +63 -0
  56. data/spec/support/vectory_helper.rb +17 -0
  57. data/spec/vectory/cli_spec.rb +214 -0
  58. data/spec/vectory/datauri_spec.rb +101 -0
  59. data/spec/vectory/emf_spec.rb +38 -0
  60. data/spec/vectory/eps_spec.rb +40 -0
  61. data/spec/vectory/file_magic_spec.rb +24 -0
  62. data/spec/vectory/inkscape_converter_spec.rb +38 -0
  63. data/spec/vectory/ps_spec.rb +33 -0
  64. data/spec/vectory/svg_spec.rb +33 -0
  65. data/spec/vectory/vector_spec.rb +60 -0
  66. data/tmp/.keep +0 -0
  67. data/vectory.gemspec +10 -3
  68. metadata +163 -20
@@ -0,0 +1,38 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Vectory::InkscapeConverter do
4
+ describe "#convert " do
5
+ context "file has inproper format: svg extension, but eps content" do
6
+ let(:input) { "spec/examples/eps_but_svg_extension.svg" }
7
+
8
+ let(:command) do
9
+ Vectory::InkscapeConverter.convert(input, "svg", "--export-type=eps")
10
+ end
11
+
12
+ it "raises error" do
13
+ expect { command }.to raise_error(Vectory::ConversionError,
14
+ /parser error : Start tag expected/)
15
+ end
16
+ end
17
+
18
+ context "inkscape is not installed" do
19
+ let(:input) { "spec/examples/eps2svg/img.eps" }
20
+
21
+ it "raises error" do
22
+ with_tmp_dir do |dir|
23
+ tmp_input_path = File.join(dir, "image.eps")
24
+ FileUtils.cp(input, tmp_input_path)
25
+
26
+ expect(Vectory::InkscapeConverter.instance)
27
+ .to receive(:inkscape_path).and_return(nil)
28
+
29
+ expect do
30
+ Vectory::InkscapeConverter.convert(tmp_input_path,
31
+ "svg",
32
+ "--export-type=svg")
33
+ end.to raise_error(Vectory::InkscapeNotFoundError)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,33 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Vectory::Ps do
4
+ describe "#to_eps" do
5
+ let(:input) { "spec/examples/ps2eps/img.ps" }
6
+ let(:reference) { "spec/examples/ps2eps/img.eps" }
7
+
8
+ it "returns eps content" do
9
+ expect(Vectory::Ps.from_path(input).to_eps.content)
10
+ .to be_equivalent_eps_to File.read(reference)
11
+ end
12
+ end
13
+
14
+ describe "#to_emf" do
15
+ let(:input) { "spec/examples/ps2emf/img.ps" }
16
+ let(:reference) { "spec/examples/ps2emf/img.emf" }
17
+
18
+ it "returns emf content" do
19
+ expect(Vectory::Ps.from_path(input).to_emf.content)
20
+ .to be_equivalent_to File.read(reference)
21
+ end
22
+ end
23
+
24
+ describe "#to_svg" do
25
+ let(:input) { "spec/examples/ps2svg/img.ps" }
26
+ let(:reference) { "spec/examples/ps2svg/img.svg" }
27
+
28
+ it "returns svg content" do
29
+ expect(Vectory::Ps.from_path(input).to_svg.content)
30
+ .to be_equivalent_svg_to File.read(reference)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Vectory::Svg do
4
+ describe "#to_emf" do
5
+ let(:input) { "spec/examples/svg2emf/img.svg" }
6
+ let(:reference) { "spec/examples/svg2emf/img.emf" }
7
+
8
+ it "returns emf content" do
9
+ expect(Vectory::Svg.from_path(input).to_emf.content)
10
+ .to be_equivalent_to File.read(reference)
11
+ end
12
+ end
13
+
14
+ describe "#to_eps" do
15
+ let(:input) { "spec/examples/svg2eps/img.svg" }
16
+ let(:reference) { "spec/examples/svg2eps/img.eps" }
17
+
18
+ it "returns eps content" do
19
+ expect(Vectory::Svg.from_path(input).to_eps.content)
20
+ .to be_equivalent_eps_to File.read(reference)
21
+ end
22
+ end
23
+
24
+ describe "#to_ps" do
25
+ let(:input) { "spec/examples/svg2ps/img.svg" }
26
+ let(:reference) { "spec/examples/svg2ps/img.ps" }
27
+
28
+ it "returns ps content" do
29
+ expect(Vectory::Svg.from_path(input).to_ps.content)
30
+ .to be_equivalent_eps_to File.read(reference)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,60 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Vectory::Vector do
4
+ describe "#to_uri" do
5
+ let(:input) { "spec/examples/eps2emf/img.eps" }
6
+ let(:vector) { Vectory::Eps.from_path(input) }
7
+
8
+ it "returns Datauri object" do
9
+ expect(vector.to_uri).to be_kind_of(Vectory::Datauri)
10
+ end
11
+ end
12
+
13
+ describe "#write" do
14
+ let(:image) { Vectory::Emf.from_path("spec/examples/emf2svg/img.emf") }
15
+
16
+ context "no arg" do
17
+ it "saves to a temporary directory" do
18
+ expect(image.write.path).to include(Dir.tmpdir)
19
+ end
20
+ end
21
+
22
+ context "path provided" do
23
+ it "saves to the provided path" do
24
+ Dir.mktmpdir do |tmp_dir|
25
+ provided_path = File.join(tmp_dir, "image.emf")
26
+ expect(image.write(provided_path).path).to eq provided_path
27
+ end
28
+ end
29
+ end
30
+
31
+ context "created from path and no arg provided" do
32
+ it "saves to a temporary directory" do
33
+ expect(image.write.path).to include(Dir.tmpdir)
34
+ end
35
+ end
36
+
37
+ context "written two times without arg" do
38
+ it "writes to the same path" do
39
+ initial_path = image.write.path
40
+ expect(image.write.path).to eq initial_path
41
+ end
42
+ end
43
+
44
+ context "after conversion and no arg" do
45
+ it "saves to a temporary directory" do
46
+ expect(image.to_svg.write.path).to include(Dir.tmpdir)
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "#path" do
52
+ let(:image) { Vectory::Emf.from_path("spec/examples/emf2svg/img.emf") }
53
+
54
+ context "created from path" do
55
+ it "raises error that it is not written to disk" do
56
+ expect { image.path }.to raise_error(Vectory::NotWrittenToDiskError)
57
+ end
58
+ end
59
+ end
60
+ end
data/tmp/.keep ADDED
File without changes
data/vectory.gemspec CHANGED
@@ -24,7 +24,14 @@ Gem::Specification.new do |spec|
24
24
  spec.required_ruby_version = ">= 2.5.0"
25
25
 
26
26
  spec.add_runtime_dependency "emf2svg"
27
- spec.add_development_dependency "rubocop"
28
- spec.add_development_dependency "rubocop-performance"
29
- spec.add_development_dependency "rubocop-rspec"
27
+ spec.add_runtime_dependency "thor", "~> 1.2.1"
28
+ spec.add_runtime_dependency "marcel", "~> 1.0.0"
29
+
30
+ spec.add_development_dependency "equivalent-xml", "~> 0.6"
31
+ spec.add_development_dependency "htmlentities", "~> 4.3.4"
32
+ spec.add_development_dependency "nokogiri", "~> 1.14"
33
+ spec.add_development_dependency "rspec", "~> 3.0"
34
+ spec.add_development_dependency "rubocop", "~> 1.22.1"
35
+ spec.add_development_dependency "rubocop-rails", "~> 2.9"
36
+ spec.add_development_dependency "rubocop-performance", "~> 1.10"
30
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vectory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-29 00:00:00.000000000 Z
11
+ date: 2023-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: emf2svg
@@ -24,48 +24,132 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.2.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: marcel
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: equivalent-xml
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: htmlentities
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 4.3.4
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 4.3.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: nokogiri
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.14'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.14'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
27
111
  - !ruby/object:Gem::Dependency
28
112
  name: rubocop
29
113
  requirement: !ruby/object:Gem::Requirement
30
114
  requirements:
31
- - - ">="
115
+ - - "~>"
32
116
  - !ruby/object:Gem::Version
33
- version: '0'
117
+ version: 1.22.1
34
118
  type: :development
35
119
  prerelease: false
36
120
  version_requirements: !ruby/object:Gem::Requirement
37
121
  requirements:
38
- - - ">="
122
+ - - "~>"
39
123
  - !ruby/object:Gem::Version
40
- version: '0'
124
+ version: 1.22.1
41
125
  - !ruby/object:Gem::Dependency
42
- name: rubocop-performance
126
+ name: rubocop-rails
43
127
  requirement: !ruby/object:Gem::Requirement
44
128
  requirements:
45
- - - ">="
129
+ - - "~>"
46
130
  - !ruby/object:Gem::Version
47
- version: '0'
131
+ version: '2.9'
48
132
  type: :development
49
133
  prerelease: false
50
134
  version_requirements: !ruby/object:Gem::Requirement
51
135
  requirements:
52
- - - ">="
136
+ - - "~>"
53
137
  - !ruby/object:Gem::Version
54
- version: '0'
138
+ version: '2.9'
55
139
  - !ruby/object:Gem::Dependency
56
- name: rubocop-rspec
140
+ name: rubocop-performance
57
141
  requirement: !ruby/object:Gem::Requirement
58
142
  requirements:
59
- - - ">="
143
+ - - "~>"
60
144
  - !ruby/object:Gem::Version
61
- version: '0'
145
+ version: '1.10'
62
146
  type: :development
63
147
  prerelease: false
64
148
  version_requirements: !ruby/object:Gem::Requirement
65
149
  requirements:
66
- - - ">="
150
+ - - "~>"
67
151
  - !ruby/object:Gem::Version
68
- version: '0'
152
+ version: '1.10'
69
153
  description: |
70
154
  Vectory performs pairwise vector image conversions for common
71
155
  vector image formats, such as SVG, EMF, EPS and PS.
@@ -77,21 +161,80 @@ extra_rdoc_files: []
77
161
  files:
78
162
  - ".github/workflows/automerge.yml"
79
163
  - ".github/workflows/rake.yml"
164
+ - ".github/workflows/release.yml"
165
+ - ".gitignore"
80
166
  - ".hound.yml"
81
167
  - ".rubocop.yml"
82
168
  - Gemfile
83
169
  - README.adoc
84
170
  - Rakefile
171
+ - bin/vectory
172
+ - emf.emf
85
173
  - lib/vectory.rb
174
+ - lib/vectory/cli.rb
175
+ - lib/vectory/datauri.rb
176
+ - lib/vectory/emf.rb
177
+ - lib/vectory/eps.rb
178
+ - lib/vectory/file_magic.rb
179
+ - lib/vectory/image.rb
180
+ - lib/vectory/inkscape_converter.rb
181
+ - lib/vectory/ps.rb
182
+ - lib/vectory/svg.rb
183
+ - lib/vectory/system_call.rb
184
+ - lib/vectory/utils.rb
185
+ - lib/vectory/vector.rb
86
186
  - lib/vectory/version.rb
187
+ - spec/examples/emf2eps/img.emf
188
+ - spec/examples/emf2eps/img.emf.datauri
189
+ - spec/examples/emf2eps/img.eps
190
+ - spec/examples/emf2ps/img.emf
191
+ - spec/examples/emf2ps/img.ps
192
+ - spec/examples/emf2svg/img.emf
193
+ - spec/examples/emf2svg/img.svg
194
+ - spec/examples/eps2emf/img.emf
195
+ - spec/examples/eps2emf/img.eps
196
+ - spec/examples/eps2emf/img.eps.datauri
197
+ - spec/examples/eps2ps/img.eps
198
+ - spec/examples/eps2ps/img.ps
199
+ - spec/examples/eps2svg/img.eps
200
+ - spec/examples/eps2svg/img.svg
201
+ - spec/examples/eps_but_svg_extension.svg
202
+ - spec/examples/img.jpg
203
+ - spec/examples/ps2emf/img.emf
204
+ - spec/examples/ps2emf/img.ps
205
+ - spec/examples/ps2emf/img.ps.datauri
206
+ - spec/examples/ps2eps/img.eps
207
+ - spec/examples/ps2eps/img.ps
208
+ - spec/examples/ps2svg/img.ps
209
+ - spec/examples/ps2svg/img.svg
210
+ - spec/examples/svg2emf/img.emf
211
+ - spec/examples/svg2emf/img.svg
212
+ - spec/examples/svg2emf/img.svg.datauri
213
+ - spec/examples/svg2eps/img.eps
214
+ - spec/examples/svg2eps/img.svg
215
+ - spec/examples/svg2ps/img.ps
216
+ - spec/examples/svg2ps/img.svg
87
217
  - spec/spec_helper.rb
218
+ - spec/support/matchers.rb
219
+ - spec/support/text_matcher.rb
220
+ - spec/support/vectory_helper.rb
221
+ - spec/vectory/cli_spec.rb
222
+ - spec/vectory/datauri_spec.rb
223
+ - spec/vectory/emf_spec.rb
224
+ - spec/vectory/eps_spec.rb
225
+ - spec/vectory/file_magic_spec.rb
226
+ - spec/vectory/inkscape_converter_spec.rb
227
+ - spec/vectory/ps_spec.rb
228
+ - spec/vectory/svg_spec.rb
229
+ - spec/vectory/vector_spec.rb
88
230
  - spec/vectory_spec.rb
231
+ - tmp/.keep
89
232
  - vectory.gemspec
90
233
  homepage: https://github.com/metanorma/vectory
91
234
  licenses:
92
235
  - BSD-2-Clause
93
236
  metadata: {}
94
- post_install_message:
237
+ post_install_message:
95
238
  rdoc_options: []
96
239
  require_paths:
97
240
  - lib
@@ -106,8 +249,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
249
  - !ruby/object:Gem::Version
107
250
  version: '0'
108
251
  requirements: []
109
- rubygems_version: 3.3.7
110
- signing_key:
252
+ rubygems_version: 3.3.26
253
+ signing_key:
111
254
  specification_version: 4
112
255
  summary: Pairwise vector image conversions.
113
256
  test_files: []