vectory 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) 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/Gemfile +3 -1
  6. data/README.adoc +307 -1
  7. data/Rakefile +4 -0
  8. data/bin/vectory +9 -0
  9. data/emf.emf +1 -0
  10. data/lib/vectory/cli.rb +140 -0
  11. data/lib/vectory/datauri.rb +48 -0
  12. data/lib/vectory/emf.rb +31 -0
  13. data/lib/vectory/eps.rb +31 -0
  14. data/lib/vectory/file_magic.rb +53 -0
  15. data/lib/vectory/image.rb +27 -0
  16. data/lib/vectory/inkscape_converter.rb +99 -0
  17. data/lib/vectory/ps.rb +25 -0
  18. data/lib/vectory/svg.rb +110 -0
  19. data/lib/vectory/svg_mapping.rb +118 -0
  20. data/lib/vectory/system_call.rb +58 -0
  21. data/lib/vectory/utils.rb +165 -0
  22. data/lib/vectory/vector.rb +75 -0
  23. data/lib/vectory/version.rb +1 -1
  24. data/lib/vectory.rb +35 -1
  25. data/spec/examples/emf2eps/img.emf +0 -0
  26. data/spec/examples/emf2eps/img.emf.datauri +1 -0
  27. data/spec/examples/emf2eps/ref.eps +88 -0
  28. data/spec/examples/emf2ps/img.emf +0 -0
  29. data/spec/examples/emf2ps/ref.ps +125 -0
  30. data/spec/examples/emf2svg/img.emf +0 -0
  31. data/spec/examples/emf2svg/ref.svg +9 -0
  32. data/spec/examples/eps2emf/img.eps +199 -0
  33. data/spec/examples/eps2emf/img.eps.datauri +1 -0
  34. data/spec/examples/eps2emf/ref.emf +0 -0
  35. data/spec/examples/eps2ps/img.eps +199 -0
  36. data/spec/examples/eps2ps/ref.ps +549 -0
  37. data/spec/examples/eps2svg/img.eps +199 -0
  38. data/spec/examples/eps2svg/ref.svg +173 -0
  39. data/spec/examples/eps_but_svg_extension.svg +199 -0
  40. data/spec/examples/img.jpg +0 -0
  41. data/spec/examples/ps2emf/img.ps +549 -0
  42. data/spec/examples/ps2emf/img.ps.datauri +1 -0
  43. data/spec/examples/ps2emf/ref.emf +0 -0
  44. data/spec/examples/ps2eps/img.ps +549 -0
  45. data/spec/examples/ps2eps/ref.eps +844 -0
  46. data/spec/examples/ps2svg/img.ps +549 -0
  47. data/spec/examples/ps2svg/ref.svg +476 -0
  48. data/spec/examples/svg/action_schemaexpg1.svg +124 -0
  49. data/spec/examples/svg/action_schemaexpg2.svg +124 -0
  50. data/spec/examples/svg/doc-ref.xml +109 -0
  51. data/spec/examples/svg/doc.xml +51 -0
  52. data/spec/examples/svg/doc2-ref.xml +59 -0
  53. data/spec/examples/svg/doc2.xml +28 -0
  54. data/spec/examples/svg2emf/img.svg +1 -0
  55. data/spec/examples/svg2emf/img.svg.datauri +1 -0
  56. data/spec/examples/svg2emf/ref.emf +0 -0
  57. data/spec/examples/svg2eps/img.svg +1 -0
  58. data/spec/examples/svg2eps/ref.eps +88 -0
  59. data/spec/examples/svg2ps/img.svg +1 -0
  60. data/spec/examples/svg2ps/ref.ps +125 -0
  61. data/spec/spec_helper.rb +7 -0
  62. data/spec/support/matchers.rb +39 -0
  63. data/spec/support/text_matcher.rb +63 -0
  64. data/spec/support/vectory_helper.rb +31 -0
  65. data/spec/vectory/cli_spec.rb +214 -0
  66. data/spec/vectory/datauri_spec.rb +101 -0
  67. data/spec/vectory/emf_spec.rb +38 -0
  68. data/spec/vectory/eps_spec.rb +40 -0
  69. data/spec/vectory/file_magic_spec.rb +24 -0
  70. data/spec/vectory/inkscape_converter_spec.rb +43 -0
  71. data/spec/vectory/ps_spec.rb +33 -0
  72. data/spec/vectory/svg_mapping_spec.rb +42 -0
  73. data/spec/vectory/svg_spec.rb +41 -0
  74. data/spec/vectory/vector_spec.rb +60 -0
  75. data/tmp/.keep +0 -0
  76. data/vectory.gemspec +6 -3
  77. metadata +116 -21
@@ -0,0 +1,41 @@
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/ref.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/ref.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
+
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
30
+ end
31
+
32
+ describe "#to_ps" do
33
+ let(:input) { "spec/examples/svg2ps/img.svg" }
34
+ let(:reference) { "spec/examples/svg2ps/ref.ps" }
35
+
36
+ it "returns ps content" do
37
+ expect(Vectory::Svg.from_path(input).to_ps.content)
38
+ .to be_equivalent_eps_to File.read(reference)
39
+ end
40
+ end
41
+ 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,10 @@ 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"
30
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.1.0
4
+ version: 0.3.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-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: emf2svg
@@ -25,47 +25,75 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rubocop
28
+ name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
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'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
- - - ">="
66
+ - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '0'
68
+ version: '0.6'
41
69
  - !ruby/object:Gem::Dependency
42
- name: rubocop-performance
70
+ name: htmlentities
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - ">="
73
+ - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: '0'
75
+ version: 4.3.4
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - ">="
80
+ - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: '0'
82
+ version: 4.3.4
55
83
  - !ruby/object:Gem::Dependency
56
- name: rubocop-rspec
84
+ name: nokogiri
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - ">="
87
+ - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: '0'
89
+ version: '1.14'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - ">="
94
+ - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: '0'
96
+ version: '1.14'
69
97
  description: |
70
98
  Vectory performs pairwise vector image conversions for common
71
99
  vector image formats, such as SVG, EMF, EPS and PS.
@@ -77,21 +105,88 @@ extra_rdoc_files: []
77
105
  files:
78
106
  - ".github/workflows/automerge.yml"
79
107
  - ".github/workflows/rake.yml"
108
+ - ".github/workflows/release.yml"
109
+ - ".gitignore"
80
110
  - ".hound.yml"
81
111
  - ".rubocop.yml"
82
112
  - Gemfile
83
113
  - README.adoc
84
114
  - Rakefile
115
+ - bin/vectory
116
+ - emf.emf
85
117
  - lib/vectory.rb
118
+ - lib/vectory/cli.rb
119
+ - lib/vectory/datauri.rb
120
+ - lib/vectory/emf.rb
121
+ - lib/vectory/eps.rb
122
+ - lib/vectory/file_magic.rb
123
+ - lib/vectory/image.rb
124
+ - lib/vectory/inkscape_converter.rb
125
+ - lib/vectory/ps.rb
126
+ - lib/vectory/svg.rb
127
+ - lib/vectory/svg_mapping.rb
128
+ - lib/vectory/system_call.rb
129
+ - lib/vectory/utils.rb
130
+ - lib/vectory/vector.rb
86
131
  - lib/vectory/version.rb
132
+ - spec/examples/emf2eps/img.emf
133
+ - spec/examples/emf2eps/img.emf.datauri
134
+ - spec/examples/emf2eps/ref.eps
135
+ - spec/examples/emf2ps/img.emf
136
+ - spec/examples/emf2ps/ref.ps
137
+ - spec/examples/emf2svg/img.emf
138
+ - spec/examples/emf2svg/ref.svg
139
+ - spec/examples/eps2emf/img.eps
140
+ - spec/examples/eps2emf/img.eps.datauri
141
+ - spec/examples/eps2emf/ref.emf
142
+ - spec/examples/eps2ps/img.eps
143
+ - spec/examples/eps2ps/ref.ps
144
+ - spec/examples/eps2svg/img.eps
145
+ - spec/examples/eps2svg/ref.svg
146
+ - spec/examples/eps_but_svg_extension.svg
147
+ - spec/examples/img.jpg
148
+ - spec/examples/ps2emf/img.ps
149
+ - spec/examples/ps2emf/img.ps.datauri
150
+ - spec/examples/ps2emf/ref.emf
151
+ - spec/examples/ps2eps/img.ps
152
+ - spec/examples/ps2eps/ref.eps
153
+ - spec/examples/ps2svg/img.ps
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
161
+ - spec/examples/svg2emf/img.svg
162
+ - spec/examples/svg2emf/img.svg.datauri
163
+ - spec/examples/svg2emf/ref.emf
164
+ - spec/examples/svg2eps/img.svg
165
+ - spec/examples/svg2eps/ref.eps
166
+ - spec/examples/svg2ps/img.svg
167
+ - spec/examples/svg2ps/ref.ps
87
168
  - spec/spec_helper.rb
169
+ - spec/support/matchers.rb
170
+ - spec/support/text_matcher.rb
171
+ - spec/support/vectory_helper.rb
172
+ - spec/vectory/cli_spec.rb
173
+ - spec/vectory/datauri_spec.rb
174
+ - spec/vectory/emf_spec.rb
175
+ - spec/vectory/eps_spec.rb
176
+ - spec/vectory/file_magic_spec.rb
177
+ - spec/vectory/inkscape_converter_spec.rb
178
+ - spec/vectory/ps_spec.rb
179
+ - spec/vectory/svg_mapping_spec.rb
180
+ - spec/vectory/svg_spec.rb
181
+ - spec/vectory/vector_spec.rb
88
182
  - spec/vectory_spec.rb
183
+ - tmp/.keep
89
184
  - vectory.gemspec
90
185
  homepage: https://github.com/metanorma/vectory
91
186
  licenses:
92
187
  - BSD-2-Clause
93
188
  metadata: {}
94
- post_install_message:
189
+ post_install_message:
95
190
  rdoc_options: []
96
191
  require_paths:
97
192
  - lib
@@ -106,8 +201,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
201
  - !ruby/object:Gem::Version
107
202
  version: '0'
108
203
  requirements: []
109
- rubygems_version: 3.3.7
110
- signing_key:
204
+ rubygems_version: 3.3.26
205
+ signing_key:
111
206
  specification_version: 4
112
207
  summary: Pairwise vector image conversions.
113
208
  test_files: []