vectory 0.4.2 → 0.6.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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +7 -1
  3. data/lib/vectory/capture.rb +115 -0
  4. data/lib/vectory/datauri.rb +1 -1
  5. data/lib/vectory/emf.rb +15 -0
  6. data/lib/vectory/eps.rb +9 -0
  7. data/lib/vectory/ps.rb +9 -0
  8. data/lib/vectory/svg.rb +11 -0
  9. data/lib/vectory/svg_mapping.rb +14 -7
  10. data/lib/vectory/system_call.rb +4 -3
  11. data/lib/vectory/utils.rb +80 -98
  12. data/lib/vectory/vector.rb +4 -0
  13. data/lib/vectory/version.rb +1 -1
  14. data/vectory.gemspec +5 -1
  15. metadata +17 -54
  16. data/bin/vectory +0 -9
  17. data/spec/examples/emf2eps/img.emf +0 -0
  18. data/spec/examples/emf2eps/img.emf.datauri +0 -1
  19. data/spec/examples/emf2eps/ref.eps +0 -88
  20. data/spec/examples/emf2ps/img.emf +0 -0
  21. data/spec/examples/emf2ps/ref.ps +0 -125
  22. data/spec/examples/emf2svg/img.emf +0 -0
  23. data/spec/examples/emf2svg/ref.svg +0 -9
  24. data/spec/examples/eps2emf/img.eps +0 -199
  25. data/spec/examples/eps2emf/img.eps.datauri +0 -1
  26. data/spec/examples/eps2emf/ref.emf +0 -0
  27. data/spec/examples/eps2ps/img.eps +0 -199
  28. data/spec/examples/eps2ps/ref.ps +0 -549
  29. data/spec/examples/eps2svg/img.eps +0 -199
  30. data/spec/examples/eps2svg/ref.svg +0 -173
  31. data/spec/examples/eps_but_svg_extension.svg +0 -199
  32. data/spec/examples/img.jpg +0 -0
  33. data/spec/examples/ps2emf/img.ps +0 -549
  34. data/spec/examples/ps2emf/img.ps.datauri +0 -1
  35. data/spec/examples/ps2emf/ref.emf +0 -0
  36. data/spec/examples/ps2eps/img.ps +0 -549
  37. data/spec/examples/ps2eps/ref.eps +0 -844
  38. data/spec/examples/ps2svg/img.ps +0 -549
  39. data/spec/examples/ps2svg/ref.svg +0 -476
  40. data/spec/examples/svg/action_schemaexpg1.svg +0 -124
  41. data/spec/examples/svg/action_schemaexpg2.svg +0 -124
  42. data/spec/examples/svg/doc-ref.xml +0 -109
  43. data/spec/examples/svg/doc.xml +0 -51
  44. data/spec/examples/svg/doc2-ref.xml +0 -59
  45. data/spec/examples/svg/doc2.xml +0 -28
  46. data/spec/examples/svg2emf/img.svg +0 -1
  47. data/spec/examples/svg2emf/img.svg.datauri +0 -1
  48. data/spec/examples/svg2emf/ref.emf +0 -0
  49. data/spec/examples/svg2eps/img.svg +0 -1
  50. data/spec/examples/svg2eps/ref.eps +0 -88
  51. data/spec/examples/svg2ps/img.svg +0 -1
  52. data/spec/examples/svg2ps/ref.ps +0 -125
  53. data/spec/spec_helper.rb +0 -22
  54. data/spec/support/matchers.rb +0 -51
  55. data/spec/support/text_matcher.rb +0 -63
  56. data/spec/support/vectory_helper.rb +0 -30
  57. data/spec/vectory/cli_spec.rb +0 -215
  58. data/spec/vectory/datauri_spec.rb +0 -181
  59. data/spec/vectory/emf_spec.rb +0 -62
  60. data/spec/vectory/eps_spec.rb +0 -67
  61. data/spec/vectory/file_magic_spec.rb +0 -24
  62. data/spec/vectory/inkscape_converter_spec.rb +0 -43
  63. data/spec/vectory/ps_spec.rb +0 -58
  64. data/spec/vectory/svg_mapping_spec.rb +0 -42
  65. data/spec/vectory/svg_spec.rb +0 -73
  66. data/spec/vectory/vector_spec.rb +0 -97
  67. data/spec/vectory_spec.rb +0 -7
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- require_relative "../../lib/vectory/file_magic"
4
-
5
- RSpec.describe Vectory::FileMagic do
6
- describe "#detect" do
7
- references = {
8
- "spec/examples/eps2svg/img.eps" => :eps,
9
- "spec/examples/eps2emf/img.eps" => :eps,
10
- "spec/examples/eps2svg/ref.svg" => :svg,
11
- "spec/examples/svg2emf/img.svg" => :svg,
12
- "spec/examples/eps2emf/ref.emf" => :emf,
13
- "spec/examples/svg2emf/ref.emf" => :emf,
14
- }
15
-
16
- references.each do |file, format|
17
- context file do
18
- it "returns #{format} format" do
19
- expect(described_class.detect(file)).to eq format
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,43 +0,0 @@
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
- it "raises error" do
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
20
- end
21
- end
22
-
23
- context "inkscape is not installed" do
24
- let(:input) { "spec/examples/eps2svg/img.eps" }
25
-
26
- it "raises error" do
27
- with_tmp_dir do |dir|
28
- tmp_input_path = File.join(dir, "image.eps")
29
- FileUtils.cp(input, tmp_input_path)
30
-
31
- expect(Vectory::InkscapeConverter.instance)
32
- .to receive(:inkscape_path).and_return(nil)
33
-
34
- expect do
35
- Vectory::InkscapeConverter.convert(tmp_input_path,
36
- "svg",
37
- "--export-type=svg")
38
- end.to raise_error(Vectory::InkscapeNotFoundError)
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,58 +0,0 @@
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/ref.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/ref.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/ref.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
-
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
58
- end
@@ -1,42 +0,0 @@
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
@@ -1,73 +0,0 @@
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
-
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
73
- end
@@ -1,97 +0,0 @@
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
-
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
96
- end
97
- end
data/spec/vectory_spec.rb DELETED
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Vectory do
4
- it "has a version number" do
5
- expect(Vectory::VERSION).not_to be nil
6
- end
7
- end