vectory 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/README.adoc +150 -0
  4. data/lib/vectory/image.rb +4 -0
  5. data/lib/vectory/inkscape_converter.rb +35 -8
  6. data/lib/vectory/svg.rb +84 -1
  7. data/lib/vectory/svg_mapping.rb +118 -0
  8. data/lib/vectory/system_call.rb +11 -2
  9. data/lib/vectory/utils.rb +111 -0
  10. data/lib/vectory/vector.rb +3 -2
  11. data/lib/vectory/version.rb +1 -1
  12. data/lib/vectory.rb +1 -0
  13. data/spec/examples/svg/action_schemaexpg1.svg +124 -0
  14. data/spec/examples/svg/action_schemaexpg2.svg +124 -0
  15. data/spec/examples/svg/doc-ref.xml +109 -0
  16. data/spec/examples/svg/doc.xml +51 -0
  17. data/spec/examples/svg/doc2-ref.xml +59 -0
  18. data/spec/examples/svg/doc2.xml +28 -0
  19. data/spec/support/vectory_helper.rb +14 -0
  20. data/spec/vectory/cli_spec.rb +12 -12
  21. data/spec/vectory/emf_spec.rb +3 -3
  22. data/spec/vectory/eps_spec.rb +3 -3
  23. data/spec/vectory/file_magic_spec.rb +3 -3
  24. data/spec/vectory/inkscape_converter_spec.rb +11 -6
  25. data/spec/vectory/ps_spec.rb +3 -3
  26. data/spec/vectory/svg_mapping_spec.rb +42 -0
  27. data/spec/vectory/svg_spec.rb +11 -3
  28. data/vectory.gemspec +0 -4
  29. metadata +22 -70
  30. /data/spec/examples/emf2eps/{img.eps → ref.eps} +0 -0
  31. /data/spec/examples/emf2ps/{img.ps → ref.ps} +0 -0
  32. /data/spec/examples/emf2svg/{img.svg → ref.svg} +0 -0
  33. /data/spec/examples/eps2emf/{img.emf → ref.emf} +0 -0
  34. /data/spec/examples/eps2ps/{img.ps → ref.ps} +0 -0
  35. /data/spec/examples/eps2svg/{img.svg → ref.svg} +0 -0
  36. /data/spec/examples/ps2emf/{img.emf → ref.emf} +0 -0
  37. /data/spec/examples/ps2eps/{img.eps → ref.eps} +0 -0
  38. /data/spec/examples/ps2svg/{img.svg → ref.svg} +0 -0
  39. /data/spec/examples/svg2emf/{img.emf → ref.emf} +0 -0
  40. /data/spec/examples/svg2eps/{img.eps → ref.eps} +0 -0
  41. /data/spec/examples/svg2ps/{img.ps → ref.ps} +0 -0
@@ -27,84 +27,84 @@ RSpec.describe Vectory::CLI do
27
27
 
28
28
  context "eps to ps" do
29
29
  let(:input) { "spec/examples/eps2ps/img.eps" }
30
- let(:reference) { "spec/examples/eps2ps/img.ps" }
30
+ let(:reference) { "spec/examples/eps2ps/ref.ps" }
31
31
 
32
32
  it_behaves_like "converter", "ps"
33
33
  end
34
34
 
35
35
  context "eps to svg" do
36
36
  let(:input) { "spec/examples/eps2svg/img.eps" }
37
- let(:reference) { "spec/examples/eps2svg/img.svg" }
37
+ let(:reference) { "spec/examples/eps2svg/ref.svg" }
38
38
 
39
39
  it_behaves_like "converter", "svg"
40
40
  end
41
41
 
42
42
  context "eps to emf" do
43
43
  let(:input) { "spec/examples/eps2emf/img.eps" }
44
- let(:reference) { "spec/examples/eps2emf/img.emf" }
44
+ let(:reference) { "spec/examples/eps2emf/ref.emf" }
45
45
 
46
46
  it_behaves_like "converter", "emf"
47
47
  end
48
48
 
49
49
  context "ps to eps" do
50
50
  let(:input) { "spec/examples/ps2eps/img.ps" }
51
- let(:reference) { "spec/examples/ps2eps/img.eps" }
51
+ let(:reference) { "spec/examples/ps2eps/ref.eps" }
52
52
 
53
53
  it_behaves_like "converter", "eps"
54
54
  end
55
55
 
56
56
  context "ps to emf" do
57
57
  let(:input) { "spec/examples/ps2emf/img.ps" }
58
- let(:reference) { "spec/examples/ps2emf/img.emf" }
58
+ let(:reference) { "spec/examples/ps2emf/ref.emf" }
59
59
 
60
60
  it_behaves_like "converter", "emf"
61
61
  end
62
62
 
63
63
  context "ps to svg" do
64
64
  let(:input) { "spec/examples/ps2svg/img.ps" }
65
- let(:reference) { "spec/examples/ps2svg/img.svg" }
65
+ let(:reference) { "spec/examples/ps2svg/ref.svg" }
66
66
 
67
67
  it_behaves_like "converter", "svg"
68
68
  end
69
69
 
70
70
  context "svg to emf" do
71
71
  let(:input) { "spec/examples/svg2emf/img.svg" }
72
- let(:reference) { "spec/examples/svg2emf/img.emf" }
72
+ let(:reference) { "spec/examples/svg2emf/ref.emf" }
73
73
 
74
74
  it_behaves_like "converter", "emf"
75
75
  end
76
76
 
77
77
  context "svg to eps" do
78
78
  let(:input) { "spec/examples/svg2eps/img.svg" }
79
- let(:reference) { "spec/examples/svg2eps/img.eps" }
79
+ let(:reference) { "spec/examples/svg2eps/ref.eps" }
80
80
 
81
81
  it_behaves_like "converter", "eps"
82
82
  end
83
83
 
84
84
  context "svg to ps" do
85
85
  let(:input) { "spec/examples/svg2ps/img.svg" }
86
- let(:reference) { "spec/examples/svg2ps/img.ps" }
86
+ let(:reference) { "spec/examples/svg2ps/ref.ps" }
87
87
 
88
88
  it_behaves_like "converter", "ps"
89
89
  end
90
90
 
91
91
  context "emf to svg" do
92
92
  let(:input) { "spec/examples/emf2svg/img.emf" }
93
- let(:reference) { "spec/examples/emf2svg/img.svg" }
93
+ let(:reference) { "spec/examples/emf2svg/ref.svg" }
94
94
 
95
95
  it_behaves_like "converter", "svg"
96
96
  end
97
97
 
98
98
  context "emf to eps" do
99
99
  let(:input) { "spec/examples/emf2eps/img.emf" }
100
- let(:reference) { "spec/examples/emf2eps/img.eps" }
100
+ let(:reference) { "spec/examples/emf2eps/ref.eps" }
101
101
 
102
102
  it_behaves_like "converter", "eps"
103
103
  end
104
104
 
105
105
  context "emf to ps" do
106
106
  let(:input) { "spec/examples/emf2ps/img.emf" }
107
- let(:reference) { "spec/examples/emf2ps/img.ps" }
107
+ let(:reference) { "spec/examples/emf2ps/ref.ps" }
108
108
 
109
109
  it_behaves_like "converter", "ps"
110
110
  end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  RSpec.describe Vectory::Emf do
4
4
  describe "#to_svg" do
5
5
  let(:input) { "spec/examples/emf2svg/img.emf" }
6
- let(:reference) { "spec/examples/emf2svg/img.svg" }
6
+ let(:reference) { "spec/examples/emf2svg/ref.svg" }
7
7
 
8
8
  it "returns svg content" do
9
9
  expect(Vectory::Emf.from_path(input).to_svg.content)
@@ -18,7 +18,7 @@ RSpec.describe Vectory::Emf do
18
18
 
19
19
  describe "#to_eps" do
20
20
  let(:input) { "spec/examples/emf2eps/img.emf" }
21
- let(:reference) { "spec/examples/emf2eps/img.eps" }
21
+ let(:reference) { "spec/examples/emf2eps/ref.eps" }
22
22
 
23
23
  it "returns eps content" do
24
24
  expect(Vectory::Emf.from_path(input).to_eps.content)
@@ -28,7 +28,7 @@ RSpec.describe Vectory::Emf do
28
28
 
29
29
  describe "#to_ps" do
30
30
  let(:input) { "spec/examples/emf2ps/img.emf" }
31
- let(:reference) { "spec/examples/emf2ps/img.ps" }
31
+ let(:reference) { "spec/examples/emf2ps/ref.ps" }
32
32
 
33
33
  it "returns ps content" do
34
34
  expect(Vectory::Emf.from_path(input).to_ps.content)
@@ -19,21 +19,21 @@ RSpec.describe Vectory::Eps do
19
19
 
20
20
  describe "#to_ps" do
21
21
  let(:input) { "spec/examples/eps2ps/img.eps" }
22
- let(:reference) { "spec/examples/eps2ps/img.ps" }
22
+ let(:reference) { "spec/examples/eps2ps/ref.ps" }
23
23
 
24
24
  it_behaves_like "converter", "ps"
25
25
  end
26
26
 
27
27
  describe "#to_svg" do
28
28
  let(:input) { "spec/examples/eps2svg/img.eps" }
29
- let(:reference) { "spec/examples/eps2svg/img.svg" }
29
+ let(:reference) { "spec/examples/eps2svg/ref.svg" }
30
30
 
31
31
  it_behaves_like "converter", "svg"
32
32
  end
33
33
 
34
34
  describe "#to_emf" do
35
35
  let(:input) { "spec/examples/eps2emf/img.eps" }
36
- let(:reference) { "spec/examples/eps2emf/img.emf" }
36
+ let(:reference) { "spec/examples/eps2emf/ref.emf" }
37
37
 
38
38
  it_behaves_like "converter", "emf"
39
39
  end
@@ -7,10 +7,10 @@ RSpec.describe Vectory::FileMagic do
7
7
  references = {
8
8
  "spec/examples/eps2svg/img.eps" => :eps,
9
9
  "spec/examples/eps2emf/img.eps" => :eps,
10
- "spec/examples/eps2svg/img.svg" => :svg,
10
+ "spec/examples/eps2svg/ref.svg" => :svg,
11
11
  "spec/examples/svg2emf/img.svg" => :svg,
12
- "spec/examples/eps2emf/img.emf" => :emf,
13
- "spec/examples/svg2emf/img.emf" => :emf,
12
+ "spec/examples/eps2emf/ref.emf" => :emf,
13
+ "spec/examples/svg2emf/ref.emf" => :emf,
14
14
  }
15
15
 
16
16
  references.each do |file, format|
@@ -5,13 +5,18 @@ RSpec.describe Vectory::InkscapeConverter do
5
5
  context "file has inproper format: svg extension, but eps content" do
6
6
  let(:input) { "spec/examples/eps_but_svg_extension.svg" }
7
7
 
8
- let(:command) do
9
- Vectory::InkscapeConverter.convert(input, "svg", "--export-type=eps")
10
- end
11
-
12
8
  it "raises error" do
13
- expect { command }.to raise_error(Vectory::ConversionError,
14
- /parser error : Start tag expected/)
9
+ with_tmp_dir do |dir|
10
+ tmp_input_path = File.join(dir, File.basename(input))
11
+ FileUtils.cp(input, tmp_input_path)
12
+
13
+ expect do
14
+ Vectory::InkscapeConverter.convert(tmp_input_path,
15
+ "emf",
16
+ "--export-type=emf")
17
+ end.to raise_error(Vectory::ConversionError,
18
+ /parser error : Start tag expected/)
19
+ end
15
20
  end
16
21
  end
17
22
 
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  RSpec.describe Vectory::Ps do
4
4
  describe "#to_eps" do
5
5
  let(:input) { "spec/examples/ps2eps/img.ps" }
6
- let(:reference) { "spec/examples/ps2eps/img.eps" }
6
+ let(:reference) { "spec/examples/ps2eps/ref.eps" }
7
7
 
8
8
  it "returns eps content" do
9
9
  expect(Vectory::Ps.from_path(input).to_eps.content)
@@ -13,7 +13,7 @@ RSpec.describe Vectory::Ps do
13
13
 
14
14
  describe "#to_emf" do
15
15
  let(:input) { "spec/examples/ps2emf/img.ps" }
16
- let(:reference) { "spec/examples/ps2emf/img.emf" }
16
+ let(:reference) { "spec/examples/ps2emf/ref.emf" }
17
17
 
18
18
  it "returns emf content" do
19
19
  expect(Vectory::Ps.from_path(input).to_emf.content)
@@ -23,7 +23,7 @@ RSpec.describe Vectory::Ps do
23
23
 
24
24
  describe "#to_svg" do
25
25
  let(:input) { "spec/examples/ps2svg/img.ps" }
26
- let(:reference) { "spec/examples/ps2svg/img.svg" }
26
+ let(:reference) { "spec/examples/ps2svg/ref.svg" }
27
27
 
28
28
  it "returns svg content" do
29
29
  expect(Vectory::Ps.from_path(input).to_svg.content)
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Vectory::SvgMapping do
4
+ context "no namespace" do
5
+ let(:source) { Vectory::SvgMapping.from_path("doc.xml") }
6
+ let(:reference) { File.read("doc-ref.xml") }
7
+ let(:work_dir) { "spec/examples/svg" }
8
+
9
+ it "rewrites ids" do
10
+ Dir.chdir(work_dir) do
11
+ content = source.call
12
+
13
+ expect(xmlpp(strip_image_and_style(content)))
14
+ .to be_equivalent_to xmlpp(reference)
15
+ end
16
+ end
17
+ end
18
+
19
+ context "with namespaces" do
20
+ let(:source) { Vectory::SvgMapping.from_path("doc2.xml") }
21
+ let(:reference) { File.read("doc2-ref.xml") }
22
+ let(:work_dir) { "spec/examples/svg" }
23
+
24
+ it "rewrites ids" do
25
+ Dir.chdir(work_dir) do
26
+ content = source.call
27
+
28
+ expect(xmlpp(strip_image(content)))
29
+ .to be_equivalent_to xmlpp(reference)
30
+ end
31
+ end
32
+ end
33
+
34
+ def strip_image(xml)
35
+ xml.gsub(%r{<image.*?</image>}m, "<image/>")
36
+ end
37
+
38
+ def strip_image_and_style(xml)
39
+ xml.gsub(%r{<image.*?</image>}m, "<image/>")
40
+ .gsub(%r{<style.*?</style>}m, "<style/>") # rubocop:disable Layout/MultilineMethodCallIndentation
41
+ end
42
+ end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  RSpec.describe Vectory::Svg do
4
4
  describe "#to_emf" do
5
5
  let(:input) { "spec/examples/svg2emf/img.svg" }
6
- let(:reference) { "spec/examples/svg2emf/img.emf" }
6
+ let(:reference) { "spec/examples/svg2emf/ref.emf" }
7
7
 
8
8
  it "returns emf content" do
9
9
  expect(Vectory::Svg.from_path(input).to_emf.content)
@@ -13,17 +13,25 @@ RSpec.describe Vectory::Svg do
13
13
 
14
14
  describe "#to_eps" do
15
15
  let(:input) { "spec/examples/svg2eps/img.svg" }
16
- let(:reference) { "spec/examples/svg2eps/img.eps" }
16
+ let(:reference) { "spec/examples/svg2eps/ref.eps" }
17
17
 
18
18
  it "returns eps content" do
19
19
  expect(Vectory::Svg.from_path(input).to_eps.content)
20
20
  .to be_equivalent_eps_to File.read(reference)
21
21
  end
22
+
23
+ context "remapped links beforehand" do
24
+ it "converts successfully" do
25
+ vector = Vectory::Svg.from_path(input)
26
+ vector.remap_links({})
27
+ expect { vector.to_eps }.not_to raise_error
28
+ end
29
+ end
22
30
  end
23
31
 
24
32
  describe "#to_ps" do
25
33
  let(:input) { "spec/examples/svg2ps/img.svg" }
26
- let(:reference) { "spec/examples/svg2ps/img.ps" }
34
+ let(:reference) { "spec/examples/svg2ps/ref.ps" }
27
35
 
28
36
  it "returns ps content" do
29
37
  expect(Vectory::Svg.from_path(input).to_ps.content)
data/vectory.gemspec CHANGED
@@ -30,8 +30,4 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
31
31
  spec.add_development_dependency "htmlentities", "~> 4.3.4"
32
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"
37
33
  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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-16 00:00:00.000000000 Z
11
+ date: 2023-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: emf2svg
@@ -94,62 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
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'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 1.22.1
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 1.22.1
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop-rails
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '2.9'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '2.9'
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop-performance
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '1.10'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '1.10'
153
97
  description: |
154
98
  Vectory performs pairwise vector image conversions for common
155
99
  vector image formats, such as SVG, EMF, EPS and PS.
@@ -180,40 +124,47 @@ files:
180
124
  - lib/vectory/inkscape_converter.rb
181
125
  - lib/vectory/ps.rb
182
126
  - lib/vectory/svg.rb
127
+ - lib/vectory/svg_mapping.rb
183
128
  - lib/vectory/system_call.rb
184
129
  - lib/vectory/utils.rb
185
130
  - lib/vectory/vector.rb
186
131
  - lib/vectory/version.rb
187
132
  - spec/examples/emf2eps/img.emf
188
133
  - spec/examples/emf2eps/img.emf.datauri
189
- - spec/examples/emf2eps/img.eps
134
+ - spec/examples/emf2eps/ref.eps
190
135
  - spec/examples/emf2ps/img.emf
191
- - spec/examples/emf2ps/img.ps
136
+ - spec/examples/emf2ps/ref.ps
192
137
  - spec/examples/emf2svg/img.emf
193
- - spec/examples/emf2svg/img.svg
194
- - spec/examples/eps2emf/img.emf
138
+ - spec/examples/emf2svg/ref.svg
195
139
  - spec/examples/eps2emf/img.eps
196
140
  - spec/examples/eps2emf/img.eps.datauri
141
+ - spec/examples/eps2emf/ref.emf
197
142
  - spec/examples/eps2ps/img.eps
198
- - spec/examples/eps2ps/img.ps
143
+ - spec/examples/eps2ps/ref.ps
199
144
  - spec/examples/eps2svg/img.eps
200
- - spec/examples/eps2svg/img.svg
145
+ - spec/examples/eps2svg/ref.svg
201
146
  - spec/examples/eps_but_svg_extension.svg
202
147
  - spec/examples/img.jpg
203
- - spec/examples/ps2emf/img.emf
204
148
  - spec/examples/ps2emf/img.ps
205
149
  - spec/examples/ps2emf/img.ps.datauri
206
- - spec/examples/ps2eps/img.eps
150
+ - spec/examples/ps2emf/ref.emf
207
151
  - spec/examples/ps2eps/img.ps
152
+ - spec/examples/ps2eps/ref.eps
208
153
  - spec/examples/ps2svg/img.ps
209
- - spec/examples/ps2svg/img.svg
210
- - spec/examples/svg2emf/img.emf
154
+ - spec/examples/ps2svg/ref.svg
155
+ - spec/examples/svg/action_schemaexpg1.svg
156
+ - spec/examples/svg/action_schemaexpg2.svg
157
+ - spec/examples/svg/doc-ref.xml
158
+ - spec/examples/svg/doc.xml
159
+ - spec/examples/svg/doc2-ref.xml
160
+ - spec/examples/svg/doc2.xml
211
161
  - spec/examples/svg2emf/img.svg
212
162
  - spec/examples/svg2emf/img.svg.datauri
213
- - spec/examples/svg2eps/img.eps
163
+ - spec/examples/svg2emf/ref.emf
214
164
  - spec/examples/svg2eps/img.svg
215
- - spec/examples/svg2ps/img.ps
165
+ - spec/examples/svg2eps/ref.eps
216
166
  - spec/examples/svg2ps/img.svg
167
+ - spec/examples/svg2ps/ref.ps
217
168
  - spec/spec_helper.rb
218
169
  - spec/support/matchers.rb
219
170
  - spec/support/text_matcher.rb
@@ -225,6 +176,7 @@ files:
225
176
  - spec/vectory/file_magic_spec.rb
226
177
  - spec/vectory/inkscape_converter_spec.rb
227
178
  - spec/vectory/ps_spec.rb
179
+ - spec/vectory/svg_mapping_spec.rb
228
180
  - spec/vectory/svg_spec.rb
229
181
  - spec/vectory/vector_spec.rb
230
182
  - spec/vectory_spec.rb
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes