vectory 0.1.0 → 0.2.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 (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: []