ruby3mf 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 163777c2de18af302941ed630d19ec450185720f
4
- data.tar.gz: 778102b12805993985dc783bb280893d9afd7b5c
3
+ metadata.gz: 8735913c55551b73173f7f8d17b8ec85031c4cb4
4
+ data.tar.gz: f0d565d1debb5049533f1bcd04c6942798a7e458
5
5
  SHA512:
6
- metadata.gz: 7816012589525413ca61e18d4cfe134056772bb937262c09df16e5f441d025ad2fa3159acfdbef97f029e7bd6234ffb0b08d388322017b5f94f55de3d6dc1c2d
7
- data.tar.gz: 5bcab26932d35dab05d571491b6218a588715851e8f09a244207fa528a38813b43f6f456e3afd3b6d36d1e76971e8e00aa5587d6d3950cf234ba0aab1e2f6dc7
6
+ metadata.gz: bd4d6bfa3f8308522b458318fb42eb648d1936f4748bacc983f4207328a15d762f21afc500b1873eef55993cac98e9dca44afdcd2061eb3e3ecf77053e6bfd82
7
+ data.tar.gz: 08a66aac1559d688a642801fb8add46beedc3743304f48472169f21739f81f3cc81057ea6e77999f8db0767485c574cbe959db1a9556e699e9a2d8fe94b5bc9d
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
  /tmp/
10
10
  .idea
11
11
  /spec/ruby3mf-testfiles/
12
+ /profile-run/
13
+ .DS_Store
data/bin/cli.rb ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/ruby3mf'
4
+
5
+ doc = Document.read(ARGV.first)
@@ -14,8 +14,8 @@ class ContentTypes
14
14
  l.warning '[Content_Types].xml must contain root name Types' unless doc.children.first.name == "Types"
15
15
 
16
16
  required_content_types = ['application/vnd.openxmlformats-package.relationships+xml', 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml']
17
- optional_content_types = ['application/vnd.ms-printing.printticket+xml']
18
- all_types = required_content_types + optional_content_types
17
+ #optional_content_types = ['application/vnd.ms-printing.printticket+xml']
18
+ #all_types = required_content_types + optional_content_types
19
19
 
20
20
  types_node = doc.children.first
21
21
  types_node.children.each do |node|
@@ -35,8 +35,6 @@ class ContentTypes
35
35
  end
36
36
  rescue Nokogiri::XML::SyntaxError => e
37
37
  l.error "[Content_Types].xml file is not valid XML. #{e}", page: 15
38
- rescue Zip::Error
39
- l.error 'Problem extracting [Content_Types].xml from zip file'
40
38
  end
41
39
  end
42
40
 
@@ -4,6 +4,7 @@ class Document
4
4
  attr_accessor :thumbnails
5
5
  attr_accessor :textures
6
6
  attr_accessor :objects
7
+ attr_accessor :zip_filename
7
8
 
8
9
  # Relationship Type => Class validating relationship type
9
10
  RELATIONSHIP_TYPES = {
@@ -21,18 +22,15 @@ class Document
21
22
  end
22
23
 
23
24
  def self.read(input_file)
24
- m=self.new(input_file)
25
- m.zip_filename = input_file begin
26
- Log3mf.context "examining zip" do |l|
25
+
26
+ m = new(input_file)
27
+
28
+ begin
29
+ Log3mf.context "zip" do |l|
27
30
  begin
28
31
  Zip.warn_invalid_date = false
29
32
  Zip::File.open(input_file) do |zip_file|
30
33
 
31
- # puts "Zip contents:"
32
- # zip_file.each do |entry|
33
- # puts entry
34
- # end
35
-
36
34
  l.info "Zip file is valid"
37
35
 
38
36
  l.context "content types" do |l|
@@ -88,7 +86,6 @@ class Document
88
86
  return m
89
87
  rescue Zip::Error
90
88
  l.fatal_error 'File provided is not a valid ZIP archive', page: 9
91
- return nil
92
89
  end
93
90
  end
94
91
  rescue Log3mf::FatalError
@@ -98,32 +95,33 @@ class Document
98
95
  end
99
96
 
100
97
  def write(output_file = nil)
101
- output_file = @zip_filename if output_file.nil?
102
-
103
- input_zip_file = Zip::File.open(@zip_filename)
104
-
105
- buffer = Zip::OutputStream.write_buffer do |out|
106
- input_zip_file.entries.each do |e|
107
- if e.directory?
108
- out.copy_raw_entry(e)
109
- else
110
- out.put_next_entry(e.name)
111
- if objects[e.name]
112
- out.write objects[e.name]
98
+ output_file = zip_filename if output_file.nil?
99
+
100
+ Zip::File.open(zip_filename) do |input_zip_file|
101
+
102
+ buffer = Zip::OutputStream.write_buffer do |out|
103
+ input_zip_file.entries.each do |e|
104
+ if e.directory?
105
+ out.copy_raw_entry(e)
113
106
  else
114
- out.write e.get_input_stream.read
107
+ out.put_next_entry(e.name)
108
+ if objects[e.name]
109
+ out.write objects[e.name]
110
+ else
111
+ out.write e.get_input_stream.read
112
+ end
115
113
  end
116
114
  end
117
115
  end
118
- end
119
116
 
120
- input_zip_file.close
117
+ File.open(output_file, "wb") {|f| f.write(buffer.string) }
118
+
119
+ end
121
120
 
122
- File.open(output_file, "wb") {|f| f.write(buffer.string) }
123
121
  end
124
122
 
125
123
  def contents_for(path)
126
- Zip::File.open(@zip_filename) do |zip_file|
124
+ Zip::File.open(zip_filename) do |zip_file|
127
125
  zip_file.glob(path).first.get_input_stream.read
128
126
  end
129
127
  end
data/lib/ruby3mf/hash.rb CHANGED
@@ -55,4 +55,4 @@ class Hash
55
55
  end
56
56
  end
57
57
  end
58
- end
58
+ end
@@ -12,6 +12,7 @@ class Model3mf
12
12
  end
13
13
  end
14
14
 
15
+
15
16
  def self.parse(document, zip_entry, relationships)
16
17
  model_hash = {}
17
18
  Log3mf.context "parsing model" do |l|
@@ -25,7 +26,6 @@ class Model3mf
25
26
  model_hash = Hash.from_xml(doc)
26
27
  rescue Nokogiri::XML::SyntaxError => e
27
28
  l.fatal_error "Model file invalid XML. Exception #{e}"
28
- doc.errors.each { |error| l.error error }
29
29
  end
30
30
 
31
31
  l.context "verifying 3D payload required resources" do |l|
@@ -6,11 +6,12 @@ class Texture3mf
6
6
  end
7
7
 
8
8
  def self.parse(document, relationship_file, relationships)
9
- t = Texture3mf.new(document)
10
- t.name = relationship_file.name
11
9
 
12
- img_type = MimeMagic.by_magic(relationship_file.get_input_stream)
13
- @bytes = relationship_file.get_input_stream.read
10
+ t = new(document)
11
+ t.name = relationship_file.name
12
+ stream = relationship_file.get_input_stream
13
+ img_type = MimeMagic.by_magic(stream)
14
+ @bytes = stream.read
14
15
  Log3mf.context "Texture3mf" do |l|
15
16
  l.debug "texture is of type: #{img_type}"
16
17
  l.error "Expected a png or jpeg texture but the texture was of type #{img_type}", spec: :material, page: 16 unless ['image/png', 'image/jpeg'].include? img_type.type
@@ -1,3 +1,3 @@
1
1
  module Ruby3mf
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/lib/ruby3mf.rb CHANGED
@@ -1,12 +1,12 @@
1
- require "ruby3mf/version"
2
- require "ruby3mf/log3mf"
3
- require "ruby3mf/document"
4
- require "ruby3mf/content_types"
5
- require "ruby3mf/hash"
6
- require "ruby3mf/model3mf"
7
- require "ruby3mf/relationships"
8
- require "ruby3mf/thumbnail3mf"
9
- require "ruby3mf/texture3mf"
1
+ require_relative "ruby3mf/version"
2
+ require_relative "ruby3mf/log3mf"
3
+ require_relative "ruby3mf/document"
4
+ require_relative "ruby3mf/content_types"
5
+ require_relative "ruby3mf/hash"
6
+ require_relative "ruby3mf/model3mf"
7
+ require_relative "ruby3mf/relationships"
8
+ require_relative "ruby3mf/thumbnail3mf"
9
+ require_relative "ruby3mf/texture3mf"
10
10
 
11
11
  require 'zip'
12
12
  require 'nokogiri'
data/ruby3mf.gemspec CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "bundler", "~> 1.11"
31
31
  spec.add_development_dependency "rake", "~> 10.0"
32
32
  spec.add_development_dependency "rspec", "~> 3.0"
33
+ spec.add_development_dependency "simplecov"
33
34
 
34
35
  spec.add_runtime_dependency 'rubyzip'
35
36
  spec.add_runtime_dependency 'nokogiri', '~>1.6.8'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby3mf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Whitmarsh, Jeff Porter, and William Hertling
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rubyzip
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -113,6 +127,7 @@ files:
113
127
  - LICENSE.txt
114
128
  - README.md
115
129
  - Rakefile
130
+ - bin/cli.rb
116
131
  - bin/console
117
132
  - bin/setup
118
133
  - lib/ruby3mf.rb