vectory 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 865823bf5ac58c0780cdffc76abf7d396c2b481bcf292c807e419c0983f44646
4
- data.tar.gz: cd29b9a6f1c3a851e37fa207427474a60656ad8a1ba6f27d954d08d2ded47f5d
3
+ metadata.gz: c3691d655d3fd1a29fc05a8efc5862bf6c401b2ea2e46a6cf3b6870a0088042a
4
+ data.tar.gz: a400645b7d70451dd894f9b8e68a44adc69cbd268739c1bdcc1dc096cef568af
5
5
  SHA512:
6
- metadata.gz: 01ee6626bca7c7a61f14dffa639355171e052637f9b1c58d4dfb39721a7b7a815e6b11cd5c1deb76b4faecba37abf873e45661c16ebd2eaf7434cb9031a6deff
7
- data.tar.gz: 6706861380815c36d273445cc970db3b01693024208596c8072e9661ab301908db5c6c81e7d707826b501263aac8dbcc4b65f553fc62857a773cb45404d53de4
6
+ metadata.gz: 5e3b018076e90a60d9a04bf0aea7d7c839f69edd013f087f432302089cbae06439df73adf813bb62c8a88e2c62cbec7253c385024866f8e341269bdc7661ebdb
7
+ data.tar.gz: 27a3e056f5bbf9b96ba3dda57aa2e68c7b1981b44049916ae39bbaa2055541a00388e17e006f72f6baff58d7748e50b180a65d1cc4aae8aa05b637cf90ebdff5
data/Gemfile CHANGED
@@ -5,6 +5,8 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in vectory.gemspec
6
6
  gemspec
7
7
 
8
+ gem "equivalent-xml", "~> 0.6"
9
+
8
10
  gem "rake", "~> 13.0"
9
11
 
10
12
  gem "rspec", "~> 3.0"
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
@@ -5,10 +5,6 @@ require "rspec/core/rake_task"
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- task :inkscape_version do
9
- system('inkscape --version')
10
- end
11
-
12
8
  task default: :spec
13
9
 
14
10
  # require "rubocop/rake_task"
data/exe/vectory ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "vectory/cli"
4
+
5
+ Vectory.ui.level = Logger::INFO
6
+
7
+ status_code = Vectory::CLI.start(ARGV)
8
+ exit status_code.is_a?(Integer) ? status_code : Vectory::CLI::STATUS_UNKNOWN_ERROR
@@ -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(uri)
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(path)
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 #{path}. Aborting.")
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
@@ -33,7 +33,6 @@ module Vectory
33
33
  result = Utils.capture3_with_timeout(cmd,
34
34
  timeout: @timeout,
35
35
  kill_after: @timeout)
36
- Vectory.ui.error(result.inspect)
37
36
  @stdout = result[:stdout]
38
37
  @stderr = result[:stderr]
39
38
  @status = result[:status]
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vectory
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.1"
5
5
  end
data/lib/vectory.rb CHANGED
@@ -21,6 +21,8 @@ module Vectory
21
21
 
22
22
  class InkscapeNotFoundError < Error; end
23
23
 
24
+ class InkscapeQueryError < Error; end
25
+
24
26
  class NotImplementedError < Error; end
25
27
 
26
28
  class NotWrittenToDiskError < Error; end
@@ -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)
@@ -1,4 +1,3 @@
1
- require "htmlentities"
2
1
  require "nokogiri"
3
2
  require "tmpdir"
4
3
 
@@ -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 "be_equivalent_eps_to"
15
- when "svg" then "be_equivalent_svg_to"
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
@@ -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
@@ -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 "be_equivalent_eps_to"
8
- when "svg" then "be_equivalent_svg_to"
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
- to_format_method = "to_#{format}"
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
@@ -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
@@ -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
@@ -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.3.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-30 00:00:00.000000000 Z
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: thor
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2.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.2.1
40
+ version: '1.14'
41
41
  - !ruby/object:Gem::Dependency
42
- name: marcel
42
+ name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0
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.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'
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
- - emf.emf
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==