vectory 0.3.0 → 0.4.1
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.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/README.adoc +17 -0
- data/Rakefile +0 -4
- data/exe/vectory +8 -0
- data/lib/vectory/datauri.rb +13 -0
- data/lib/vectory/inkscape_converter.rb +47 -5
- data/lib/vectory/system_call.rb +0 -1
- data/lib/vectory/utils.rb +0 -48
- data/lib/vectory/vector.rb +22 -0
- data/lib/vectory/version.rb +1 -1
- data/lib/vectory.rb +2 -0
- data/spec/support/matchers.rb +12 -0
- data/spec/support/vectory_helper.rb +0 -1
- data/spec/vectory/cli_spec.rb +3 -2
- data/spec/vectory/datauri_spec.rb +80 -0
- data/spec/vectory/emf_spec.rb +24 -0
- data/spec/vectory/eps_spec.rb +33 -6
- data/spec/vectory/ps_spec.rb +25 -0
- data/spec/vectory/svg_spec.rb +32 -0
- data/spec/vectory/vector_spec.rb +37 -0
- data/vectory.gemspec +1 -5
- metadata +9 -51
- data/emf.emf +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3691d655d3fd1a29fc05a8efc5862bf6c401b2ea2e46a6cf3b6870a0088042a
|
4
|
+
data.tar.gz: a400645b7d70451dd894f9b8e68a44adc69cbd268739c1bdcc1dc096cef568af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e3b018076e90a60d9a04bf0aea7d7c839f69edd013f087f432302089cbae06439df73adf813bb62c8a88e2c62cbec7253c385024866f8e341269bdc7661ebdb
|
7
|
+
data.tar.gz: 27a3e056f5bbf9b96ba3dda57aa2e68c7b1981b44049916ae39bbaa2055541a00388e17e006f72f6baff58d7748e50b180a65d1cc4aae8aa05b637cf90ebdff5
|
data/Gemfile
CHANGED
data/README.adoc
CHANGED
@@ -329,6 +329,23 @@ purposes.
|
|
329
329
|
vector.initial_path # => "storage/images/img.eps"
|
330
330
|
----
|
331
331
|
|
332
|
+
==== Additional properties
|
333
|
+
|
334
|
+
The following additional properties are supported:
|
335
|
+
|
336
|
+
[source,ruby]
|
337
|
+
----
|
338
|
+
Datauri#mime
|
339
|
+
Datauri#height
|
340
|
+
Datauri#width
|
341
|
+
Vector (Eps, Ps, Svg, Emf)
|
342
|
+
Vector#mime
|
343
|
+
Vector#size
|
344
|
+
Vector#file_size
|
345
|
+
Vector#height
|
346
|
+
Vector#width
|
347
|
+
----
|
348
|
+
|
332
349
|
|
333
350
|
== Development
|
334
351
|
|
data/Rakefile
CHANGED
data/exe/vectory
ADDED
data/lib/vectory/datauri.rb
CHANGED
@@ -18,6 +18,19 @@ module Vectory
|
|
18
18
|
new("data:#{mimetype};base64,#{data}")
|
19
19
|
end
|
20
20
|
|
21
|
+
def mime
|
22
|
+
match = parse_datauri(@content)
|
23
|
+
match[:mimetype]
|
24
|
+
end
|
25
|
+
|
26
|
+
def height
|
27
|
+
to_vector.height
|
28
|
+
end
|
29
|
+
|
30
|
+
def width
|
31
|
+
to_vector.width
|
32
|
+
end
|
33
|
+
|
21
34
|
def to_vector
|
22
35
|
match = parse_datauri(@content)
|
23
36
|
content = Base64.strict_decode64(match[:data])
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "singleton"
|
4
|
+
require "tmpdir"
|
4
5
|
require_relative "system_call"
|
5
6
|
|
6
7
|
module Vectory
|
@@ -12,7 +13,7 @@ module Vectory
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def convert(uri, output_extension, option)
|
15
|
-
exe = inkscape_path_or_raise_error
|
16
|
+
exe = inkscape_path_or_raise_error
|
16
17
|
uri = external_path uri
|
17
18
|
exe = external_path exe
|
18
19
|
cmd = %(#{exe} #{option} #{uri})
|
@@ -22,17 +23,23 @@ module Vectory
|
|
22
23
|
output_path = find_output(uri, output_extension)
|
23
24
|
raise_conversion_error(call) unless output_path
|
24
25
|
|
25
|
-
# and return Vectory::Utils::datauri(file)
|
26
|
-
|
27
26
|
output_path
|
28
27
|
end
|
29
28
|
|
29
|
+
def height(content, format)
|
30
|
+
query_integer(content, format, "--query-height")
|
31
|
+
end
|
32
|
+
|
33
|
+
def width(content, format)
|
34
|
+
query_integer(content, format, "--query-width")
|
35
|
+
end
|
36
|
+
|
30
37
|
private
|
31
38
|
|
32
|
-
def inkscape_path_or_raise_error
|
39
|
+
def inkscape_path_or_raise_error
|
33
40
|
inkscape_path or raise(InkscapeNotFoundError,
|
34
41
|
"Inkscape missing in PATH, unable to " \
|
35
|
-
"convert image
|
42
|
+
"convert image. Aborting.")
|
36
43
|
end
|
37
44
|
|
38
45
|
def inkscape_path
|
@@ -95,5 +102,40 @@ module Vectory
|
|
95
102
|
path
|
96
103
|
end
|
97
104
|
end
|
105
|
+
|
106
|
+
def query_integer(content, format, options)
|
107
|
+
query(content, format, options).to_f.round
|
108
|
+
end
|
109
|
+
|
110
|
+
def query(content, format, options)
|
111
|
+
exe = inkscape_path_or_raise_error
|
112
|
+
|
113
|
+
with_file(content, format) do |path|
|
114
|
+
cmd = "#{external_path(exe)} #{options} #{external_path(path)}"
|
115
|
+
|
116
|
+
call = SystemCall.new(cmd).call
|
117
|
+
raise_query_error(call) if call.stdout.empty?
|
118
|
+
|
119
|
+
call.stdout
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def with_file(content, extension)
|
124
|
+
Dir.mktmpdir do |dir|
|
125
|
+
path = File.join(dir, "image.#{extension}")
|
126
|
+
File.binwrite(path, content)
|
127
|
+
|
128
|
+
yield path
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def raise_query_error(call)
|
133
|
+
raise Vectory::InkscapeQueryError,
|
134
|
+
"Could not query with Inkscape. " \
|
135
|
+
"Inkscape cmd: '#{call.cmd}',\n" \
|
136
|
+
"status: '#{call.status}',\n" \
|
137
|
+
"stdout: '#{call.stdout.strip}',\n" \
|
138
|
+
"stderr: '#{call.stderr.strip}'."
|
139
|
+
end
|
98
140
|
end
|
99
141
|
end
|
data/lib/vectory/system_call.rb
CHANGED
data/lib/vectory/utils.rb
CHANGED
@@ -1,58 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "marcel"
|
4
3
|
require "timeout"
|
5
4
|
|
6
5
|
module Vectory
|
7
6
|
class Utils
|
8
|
-
# Extracted from https://github.com/metanorma/metanorma-utils/blob/v1.5.2/lib/utils/image.rb
|
9
7
|
class << self
|
10
|
-
# sources/plantuml/plantuml20200524-90467-1iqek5i.png
|
11
|
-
# already includes localdir
|
12
|
-
# Check whether just the local path or the other specified relative path
|
13
|
-
# works.
|
14
|
-
def datauri(uri, local_dir = ".")
|
15
|
-
return uri if datauri?(uri) || url?(uri)
|
16
|
-
|
17
|
-
options = absolute_path?(uri) ? [uri] : [uri, File.join(local_dir, uri)]
|
18
|
-
path = options.detect do |p|
|
19
|
-
File.exist?(p) ? p : nil
|
20
|
-
end
|
21
|
-
|
22
|
-
unless path
|
23
|
-
warn "Image specified at `#{uri}` does not exist."
|
24
|
-
return uri # Return original provided location
|
25
|
-
end
|
26
|
-
|
27
|
-
encode_datauri(path)
|
28
|
-
end
|
29
|
-
|
30
|
-
def encode_datauri(path)
|
31
|
-
return nil unless File.exist?(path)
|
32
|
-
|
33
|
-
type = Marcel::MimeType.for(Pathname.new(path)) ||
|
34
|
-
'text/plain; charset="utf-8"'
|
35
|
-
|
36
|
-
bin = File.binread(path)
|
37
|
-
data = Base64.strict_encode64(bin)
|
38
|
-
"data:#{type};base64,#{data}"
|
39
|
-
rescue StandardError
|
40
|
-
warn "Data-URI encoding of `#{path}` failed."
|
41
|
-
nil
|
42
|
-
end
|
43
|
-
|
44
|
-
def datauri?(uri)
|
45
|
-
/^data:/.match?(uri)
|
46
|
-
end
|
47
|
-
|
48
|
-
def url?(url)
|
49
|
-
%r{^[A-Z]{2,}://}i.match?(url)
|
50
|
-
end
|
51
|
-
|
52
|
-
def absolute_path?(uri)
|
53
|
-
%r{^/}.match?(uri) || %r{^[A-Z]:/}.match?(uri)
|
54
|
-
end
|
55
|
-
|
56
8
|
# rubocop:disable all
|
57
9
|
#
|
58
10
|
# Originally from https://gist.github.com/pasela/9392115
|
data/lib/vectory/vector.rb
CHANGED
@@ -28,6 +28,28 @@ module Vectory
|
|
28
28
|
@initial_path = initial_path
|
29
29
|
end
|
30
30
|
|
31
|
+
def mime
|
32
|
+
self.class.mimetype
|
33
|
+
end
|
34
|
+
|
35
|
+
def size
|
36
|
+
content.bytesize
|
37
|
+
end
|
38
|
+
|
39
|
+
def file_size
|
40
|
+
raise(NotWrittenToDiskError) unless @path
|
41
|
+
|
42
|
+
File.size(@path)
|
43
|
+
end
|
44
|
+
|
45
|
+
def height
|
46
|
+
InkscapeConverter.instance.height(content, self.class.default_extension)
|
47
|
+
end
|
48
|
+
|
49
|
+
def width
|
50
|
+
InkscapeConverter.instance.width(content, self.class.default_extension)
|
51
|
+
end
|
52
|
+
|
31
53
|
def to_uri
|
32
54
|
Datauri.from_vector(self)
|
33
55
|
end
|
data/lib/vectory/version.rb
CHANGED
data/lib/vectory.rb
CHANGED
data/spec/support/matchers.rb
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
RSpec::Matchers.define :be_eps do
|
2
|
+
match do |actual|
|
3
|
+
actual.start_with?("%!PS-Adobe-3.0")
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
RSpec::Matchers.define :be_svg do
|
8
|
+
match do |actual|
|
9
|
+
actual.include?("<svg")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
1
13
|
RSpec::Matchers.define :be_equivalent_eps_to do |expected|
|
2
14
|
match do |actual|
|
3
15
|
e = sub_time_and_version(expected)
|
data/spec/vectory/cli_spec.rb
CHANGED
@@ -11,10 +11,11 @@ RSpec.describe Vectory::CLI do
|
|
11
11
|
shared_examples "converter" do |format|
|
12
12
|
it "creates file of a chosen format" do
|
13
13
|
matcher = case format
|
14
|
-
when "eps", "ps" then "
|
15
|
-
when "svg" then "
|
14
|
+
when "eps", "ps" then "be_eps"
|
15
|
+
when "svg" then "be_svg"
|
16
16
|
else "be_equivalent_to"
|
17
17
|
end
|
18
|
+
|
18
19
|
with_tmp_dir do |dir|
|
19
20
|
output = File.join(dir, "output.#{format}")
|
20
21
|
status = described_class.start(["-f", format, "-o", output, input])
|
@@ -98,4 +98,84 @@ RSpec.describe Vectory::Datauri do
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
describe "#mime" do
|
103
|
+
context "incorrect data" do
|
104
|
+
let(:not_a_datauri) { "123abc" }
|
105
|
+
|
106
|
+
it "raises conversion error" do
|
107
|
+
expect { described_class.new(not_a_datauri).mime }
|
108
|
+
.to raise_error(Vectory::ConversionError)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context "eps" do
|
113
|
+
let(:input) { "spec/examples/eps2emf/img.eps.datauri" }
|
114
|
+
|
115
|
+
it "returns eps" do
|
116
|
+
expect(described_class.from_path(input).mime)
|
117
|
+
.to eq "application/postscript"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "emf" do
|
122
|
+
let(:input) { "spec/examples/emf2eps/img.emf.datauri" }
|
123
|
+
|
124
|
+
it "returns emf" do
|
125
|
+
expect(described_class.from_path(input).mime).to eq "image/emf"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context "svg" do
|
130
|
+
let(:input) { "spec/examples/svg2emf/img.svg.datauri" }
|
131
|
+
|
132
|
+
it "returns svg" do
|
133
|
+
expect(described_class.from_path(input).mime).to eq "image/svg+xml"
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe "dimensions (#height / #width)" do
|
139
|
+
context "incorrect data" do
|
140
|
+
let(:not_a_datauri) { "123abc" }
|
141
|
+
|
142
|
+
it "raises conversion error" do
|
143
|
+
expect { described_class.new(not_a_datauri).height }
|
144
|
+
.to raise_error(Vectory::ConversionError)
|
145
|
+
|
146
|
+
expect { described_class.new(not_a_datauri).width }
|
147
|
+
.to raise_error(Vectory::ConversionError)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
context "eps" do
|
152
|
+
let(:input) { "spec/examples/eps2emf/img.eps.datauri" }
|
153
|
+
|
154
|
+
it "returns height and width" do
|
155
|
+
expect(described_class.from_path(input).height)
|
156
|
+
.to eq 707
|
157
|
+
|
158
|
+
expect(described_class.from_path(input).width)
|
159
|
+
.to eq 649
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context "emf" do
|
164
|
+
let(:input) { "spec/examples/emf2eps/img.emf.datauri" }
|
165
|
+
|
166
|
+
it "returns height and width" do
|
167
|
+
expect(described_class.from_path(input).height).to eq 90
|
168
|
+
expect(described_class.from_path(input).width).to eq 90
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
context "svg" do
|
173
|
+
let(:input) { "spec/examples/svg2emf/img.svg.datauri" }
|
174
|
+
|
175
|
+
it "returns height and width" do
|
176
|
+
expect(described_class.from_path(input).height).to eq 90
|
177
|
+
expect(described_class.from_path(input).width).to eq 90
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
101
181
|
end
|
data/spec/vectory/emf_spec.rb
CHANGED
@@ -35,4 +35,28 @@ RSpec.describe Vectory::Emf do
|
|
35
35
|
.to be_equivalent_eps_to File.read(reference)
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
describe "#mime" do
|
40
|
+
let(:input) { "spec/examples/emf2eps/img.emf" }
|
41
|
+
|
42
|
+
it "returns emf" do
|
43
|
+
expect(described_class.from_path(input).mime).to eq "image/emf"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#height" do
|
48
|
+
let(:input) { "spec/examples/emf2eps/img.emf" }
|
49
|
+
|
50
|
+
it "returns height" do
|
51
|
+
expect(described_class.from_path(input).height).to eq 90
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#width" do
|
56
|
+
let(:input) { "spec/examples/emf2eps/img.emf" }
|
57
|
+
|
58
|
+
it "returns width" do
|
59
|
+
expect(described_class.from_path(input).width).to eq 90
|
60
|
+
end
|
61
|
+
end
|
38
62
|
end
|
data/spec/vectory/eps_spec.rb
CHANGED
@@ -3,16 +3,18 @@ require "spec_helper"
|
|
3
3
|
RSpec.describe Vectory::Eps do
|
4
4
|
shared_examples "converter" do |format|
|
5
5
|
it "returns content of a chosen format" do
|
6
|
+
to_format_method = "to_#{format}"
|
7
|
+
content = described_class.from_path(input)
|
8
|
+
.public_send(to_format_method)
|
9
|
+
.content
|
10
|
+
|
6
11
|
matcher = case format
|
7
|
-
when "eps", "ps" then "
|
8
|
-
when "svg" then "
|
12
|
+
when "eps", "ps" then "be_eps"
|
13
|
+
when "svg" then "be_svg"
|
9
14
|
else "be_equivalent_to"
|
10
15
|
end
|
11
16
|
|
12
|
-
|
13
|
-
expect(described_class.from_path(input)
|
14
|
-
.public_send(to_format_method)
|
15
|
-
.content)
|
17
|
+
expect(content)
|
16
18
|
.to public_send(matcher, File.read(reference))
|
17
19
|
end
|
18
20
|
end
|
@@ -37,4 +39,29 @@ RSpec.describe Vectory::Eps do
|
|
37
39
|
|
38
40
|
it_behaves_like "converter", "emf"
|
39
41
|
end
|
42
|
+
|
43
|
+
describe "#mime" do
|
44
|
+
let(:input) { "spec/examples/eps2emf/img.eps" }
|
45
|
+
|
46
|
+
it "returns postscript" do
|
47
|
+
expect(described_class.from_path(input).mime)
|
48
|
+
.to eq "application/postscript"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#height" do
|
53
|
+
let(:input) { "spec/examples/eps2emf/img.eps" }
|
54
|
+
|
55
|
+
it "returns height" do
|
56
|
+
expect(described_class.from_path(input).height).to eq 707
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "#width" do
|
61
|
+
let(:input) { "spec/examples/eps2emf/img.eps" }
|
62
|
+
|
63
|
+
it "returns width" do
|
64
|
+
expect(described_class.from_path(input).width).to eq 649
|
65
|
+
end
|
66
|
+
end
|
40
67
|
end
|
data/spec/vectory/ps_spec.rb
CHANGED
@@ -30,4 +30,29 @@ RSpec.describe Vectory::Ps do
|
|
30
30
|
.to be_equivalent_svg_to File.read(reference)
|
31
31
|
end
|
32
32
|
end
|
33
|
+
|
34
|
+
describe "#mime" do
|
35
|
+
let(:input) { "spec/examples/ps2emf/img.ps" }
|
36
|
+
|
37
|
+
it "returns postscript" do
|
38
|
+
expect(described_class.from_path(input).mime)
|
39
|
+
.to eq "application/postscript"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#height" do
|
44
|
+
let(:input) { "spec/examples/ps2emf/img.ps" }
|
45
|
+
|
46
|
+
it "returns height" do
|
47
|
+
expect(described_class.from_path(input).height).to eq 707
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#width" do
|
52
|
+
let(:input) { "spec/examples/ps2emf/img.ps" }
|
53
|
+
|
54
|
+
it "returns width" do
|
55
|
+
expect(described_class.from_path(input).width).to eq 649
|
56
|
+
end
|
57
|
+
end
|
33
58
|
end
|
data/spec/vectory/svg_spec.rb
CHANGED
@@ -38,4 +38,36 @@ RSpec.describe Vectory::Svg do
|
|
38
38
|
.to be_equivalent_eps_to File.read(reference)
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
describe "#mime" do
|
43
|
+
let(:input) { "spec/examples/svg2emf/img.svg" }
|
44
|
+
|
45
|
+
it "returns svg" do
|
46
|
+
expect(described_class.from_path(input).mime).to eq "image/svg+xml"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#height" do
|
51
|
+
let(:input) { "spec/examples/svg2emf/img.svg" }
|
52
|
+
|
53
|
+
it "returns height" do
|
54
|
+
expect(described_class.from_path(input).height).to eq 90
|
55
|
+
end
|
56
|
+
|
57
|
+
context "incorrect data" do
|
58
|
+
let(:command) { described_class.from_content("incorrect123svg") }
|
59
|
+
|
60
|
+
it "raises query error" do
|
61
|
+
expect { command.height }.to raise_error(Vectory::InkscapeQueryError)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#width" do
|
67
|
+
let(:input) { "spec/examples/svg2emf/img.svg" }
|
68
|
+
|
69
|
+
it "returns width" do
|
70
|
+
expect(described_class.from_path(input).width).to eq 90
|
71
|
+
end
|
72
|
+
end
|
41
73
|
end
|
data/spec/vectory/vector_spec.rb
CHANGED
@@ -56,5 +56,42 @@ RSpec.describe Vectory::Vector do
|
|
56
56
|
expect { image.path }.to raise_error(Vectory::NotWrittenToDiskError)
|
57
57
|
end
|
58
58
|
end
|
59
|
+
|
60
|
+
context "written to disk" do
|
61
|
+
before { image.write }
|
62
|
+
|
63
|
+
it "returns path on a disk" do
|
64
|
+
expect(image.path).to include(Dir.tmpdir)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#size" do
|
70
|
+
let(:image) { Vectory::Emf.from_path("spec/examples/emf2svg/img.emf") }
|
71
|
+
|
72
|
+
it "returns content size" do
|
73
|
+
expect(image.size).to eq 1060
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#file_size" do
|
78
|
+
let(:image) { Vectory::Eps.from_path("spec/examples/eps2emf/img.eps") }
|
79
|
+
|
80
|
+
context "not written to disk" do
|
81
|
+
it "raises not-written error" do
|
82
|
+
expect { image.file_size }
|
83
|
+
.to raise_error(Vectory::NotWrittenToDiskError)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "written to disk" do
|
88
|
+
before { image.write }
|
89
|
+
|
90
|
+
it "returns file size" do
|
91
|
+
expect(image.file_size).to satisfy("be either 2926 or 3125") do |v|
|
92
|
+
[2926, 3125].include?(v) # depends on file system
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
59
96
|
end
|
60
97
|
end
|
data/vectory.gemspec
CHANGED
@@ -24,10 +24,6 @@ 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_runtime_dependency "nokogiri", "~> 1.14"
|
27
28
|
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
29
|
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.
|
4
|
+
version: 0.4.1
|
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
|
+
date: 2023-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: emf2svg
|
@@ -25,75 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: nokogiri
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: '1.14'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: '1.14'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.2.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
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'
|
54
|
+
version: 1.2.1
|
97
55
|
description: |
|
98
56
|
Vectory performs pairwise vector image conversions for common
|
99
57
|
vector image formats, such as SVG, EMF, EPS and PS.
|
@@ -113,7 +71,7 @@ files:
|
|
113
71
|
- README.adoc
|
114
72
|
- Rakefile
|
115
73
|
- bin/vectory
|
116
|
-
-
|
74
|
+
- exe/vectory
|
117
75
|
- lib/vectory.rb
|
118
76
|
- lib/vectory/cli.rb
|
119
77
|
- lib/vectory/datauri.rb
|
data/emf.emf
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
AQAAAMgAAAAAAAAAAAAAAPsEAAD7BAAAAAAAAAAAAACLCgAAiwoAACBFTUYAAAEAJAQAACgAAAACAAAALgAAAGwAAAAAAAAA3ScAAH0zAADYAAAAFwEAAAAAAAAAAAAAAAAAAMBLAwDYQQQASQBuAGsAcwBjAGEAcABlACAAMQAuADAAIAAoADQAMAAzADUAYQA0AGYALAAgADIAMAAyADAALQAwADUALQAwADEAKQAgAAAAbwBkAGYALgBlAG0AZgAAAAAAAAARAAAADAAAAAEAAAAkAAAAJAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAIAAABGAAAALAAAACAAAABTY3JlZW49MTAyMDV4MTMxODFweCwgMjE2eDI3OW1tAEYAAAAwAAAAIwAAAERyYXdpbmc9MTAwLjB4MTAwLjBweCwgMjYuNXgyNi41bW0AABIAAAAMAAAAAQAAABMAAAAMAAAAAgAAABYAAAAMAAAAGAAAABgAAAAMAAAAAAAAABQAAAAMAAAADQAAACcAAAAYAAAAAQAAAAAAAAAAAJkABgAAACUAAAAMAAAAAQAAADsAAAAIAAAAGwAAABAAAACkBAAAcQIAAAUAAAA0AAAAAAAAAAAAAAD//////////wMAAACkBAAAqAMAAKgDAACkBAAAcQIAAKQEAAAFAAAANAAAAAAAAAAAAAAA//////////8DAAAAOgEAAKQEAAA/AAAAqAMAAD8AAABxAgAABQAAADQAAAAAAAAAAAAAAP//////////AwAAAD8AAAA6AQAAOgEAAD8AAABxAgAAPwAAAAUAAAA0AAAAAAAAAAAAAAD//////////wMAAACoAwAAPwAAAKQEAAA6AQAApAQAAHECAAA9AAAACAAAADwAAAAIAAAAPgAAABgAAAAAAAAAAAAAAP//////////JQAAAAwAAAAFAACAKAAAAAwAAAABAAAAJwAAABgAAAABAAAAAAAAAP///wAGAAAAJQAAAAwAAAABAAAAOwAAAAgAAAAbAAAAEAAAAJ0BAABFAQAANgAAABAAAADPAwAARQEAAAUAAAA0AAAAAAAAAAAAAAD//////////wMAAABfBAAA7QEAAGQEAADjAgAA2wMAAJEDAAAFAAAANAAAAAAAAAAAAAAA//////////8DAAAAUgMAAD4EAABhAgAAcwQAAJ0BAAAOBAAANgAAABAAAACdAQAAyQIAADYAAAAQAAAA4gIAAMkCAAA2AAAAEAAAAOICAAAaAgAANgAAABAAAACdAQAAGgIAAD0AAAAIAAAAPAAAAAgAAAA+AAAAGAAAAAAAAAAAAAAA//////////8lAAAADAAAAAUAAIAoAAAADAAAAAEAAAAOAAAAFAAAAAAAAAAAAAAAJAQAAA==
|