mimemagic 0.3.7 → 0.3.10

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
  SHA256:
3
- metadata.gz: f6da483b1c1d4378db22986ec169a3ec569d138a8ab29f5daeb065af66d39fbd
4
- data.tar.gz: e987b92b51834ade1b3529b6cb7761d444d6e7089c070e2324ce97e9a22d135c
3
+ metadata.gz: bea73bdcae338c252c11c8277843f7eb8dc44973bd5914d7196dba814c0bb857
4
+ data.tar.gz: 6896a7a176e4adb7d4d27b8f99680176511d0c0db910fa339b20333adf394f78
5
5
  SHA512:
6
- metadata.gz: 250747be3d00f5deb7d0fef8cb6682b8f7589c26b640192aa4f53d6ee4025119063a59d64e2eea20aafb31e4abc231042ce3d1bca35555f8b6e94be220205aa8
7
- data.tar.gz: 24a9b36f0ff3c788ec4f62e97e9526ec93b4b71625e3f722bc0b1d234fa879ee4ce7287913618471d8c8dedf8693eebfa1081afbd3933233ff5a9a7214018dd7
6
+ metadata.gz: d1a8cad78a3938f61c11e9e8f8ab751db7e02f6f778f4128a215b186f71836ecf2169e81133f1cd5f6171214108ca46526ab161edc618127983fe92c51847546
7
+ data.tar.gz: 1e5bc77bb41ec5b3be0d19c7f1d8883e5e313df1b1035b6429c05eb7082f33323cdf48152be3f400853e3bbf0dc5b40c7ace4ffec50a39006d2494ea9835a10a
data/.gitignore CHANGED
@@ -2,5 +2,12 @@
2
2
  *.gem
3
3
  Gemfile.lock
4
4
  .bundle
5
+
6
+ # doc
5
7
  .yardoc
6
- vendor
8
+ doc/
9
+
10
+ vendor
11
+
12
+ # don't include generated files
13
+ lib/mimemagic/path.rb
data/.yardopts CHANGED
@@ -1,2 +1,6 @@
1
+ --markup-provider=redcarpet
2
+ --markup=markdown
1
3
  --no-private
2
- - README.md
4
+ - README.md
5
+ - LICENSE
6
+ - CHANGELOG.md
data/CHANGELOG.md CHANGED
@@ -18,6 +18,33 @@ None
18
18
 
19
19
  None
20
20
 
21
+ ## 0.3.10
22
+
23
+ * Improve the development/test experience (@coldnebo, @kachick)
24
+
25
+ * Ensure the gem works in environments with gem caching (@haines)
26
+
27
+ * Add support for MacPorts installed dependencies (@brlanier)
28
+
29
+ * Allow using a dummy XML file in cases where the gem is just a transient
30
+ dependency. (@Scharrels)
31
+
32
+ ## 0.3.9 (2021-03-25)
33
+
34
+ * Resolve issues parsing the version of freedesktop.org.xml shipped with
35
+ Ubuntu Trusty.
36
+
37
+ * Reintroduce overlays, since it seems at least some people were using
38
+ them.
39
+
40
+ * Make Rake a runtime dependency.
41
+
42
+ * Fix the test suite.
43
+ ## 0.3.8 (2021-03-25)
44
+
45
+ Relax the dependency on Nokogiri to something less specific in order
46
+ to avoid conflicting with other dependencies in people's applications.
47
+
21
48
  ## 0.3.7 (2021-03-25)
22
49
 
23
50
  Add a dependency on having a preinstalled version of the fd.o shared
data/Gemfile CHANGED
@@ -1,3 +1,6 @@
1
1
  source 'https://rubygems.org/'
2
2
  gemspec
3
3
 
4
+ gem 'yard'
5
+ gem 'redcarpet'
6
+ gem 'github-markup'
data/README.md CHANGED
@@ -46,10 +46,10 @@ http://www.rubydoc.info/github/mimemagicrb/mimemagic
46
46
  Tests
47
47
  =====
48
48
 
49
- ```
50
- bundle install
49
+ ```console
50
+ $ bundle install
51
51
 
52
- rake test
52
+ $ bundle exec rake test
53
53
  ```
54
54
 
55
55
  Authors
@@ -62,4 +62,4 @@ Authors
62
62
  LICENSE
63
63
  =======
64
64
 
65
- MIT
65
+ {file:LICENSE MIT}
data/Rakefile CHANGED
@@ -1,9 +1,15 @@
1
1
  require 'rake/testtask'
2
+ require 'rake/clean'
3
+
4
+ namespace :ext do
5
+ load 'ext/mimemagic/Rakefile'
6
+ end
7
+ CLOBBER.include("lib/mimemagic/path.rb")
2
8
 
3
9
  task :default => %w(test)
4
10
 
5
11
  desc 'Run tests with minitest'
6
- Rake::TestTask.new do |t|
12
+ Rake::TestTask.new("test" => "ext:default") do |t|
7
13
  t.libs << 'test'
8
14
  t.pattern = 'test/*_test.rb'
9
15
  end
@@ -6,28 +6,48 @@ def locate_mime_database
6
6
  (File.expand_path(ENV["FREEDESKTOP_MIME_TYPES_PATH"]) if ENV["FREEDESKTOP_MIME_TYPES_PATH"]),
7
7
  "/usr/local/share/mime/packages/freedesktop.org.xml",
8
8
  "/opt/homebrew/share/mime/packages/freedesktop.org.xml",
9
+ "/opt/local/share/mime/packages/freedesktop.org.xml",
9
10
  "/usr/share/mime/packages/freedesktop.org.xml"
10
11
  ].compact
11
12
  path = possible_paths.find { |candidate| File.exist?(candidate) }
12
-
13
+
13
14
  return path unless path.nil?
14
- raise(<<~ERROR)
15
+ raise(<<-ERROR.gsub(/^ {3}/, ""))
15
16
  Could not find MIME type database in the following locations: #{possible_paths}
16
-
17
- Ensure you have either installed the shared-mime-types package for your distribution, or
18
- obtain a version of freedesktop.org.xml and set FREEDESKTOP_MIME_TYPES_PATH to the location
17
+
18
+ Ensure you have either installed the shared-mime-info package for your distribution, or
19
+ obtain a version of freedesktop.org.xml and set FREEDESKTOP_MIME_TYPES_PATH to the location
19
20
  of that file.
21
+
22
+ This gem might be installed as a dependency of some bigger package, such as rails, activestorage,
23
+ axlsx or cucumber. While most of these packages use the functionality of this gem, some gems have
24
+ included this gem by accident. Set USE_FREEDESKTOP_PLACEHOLDER=true if you are certain that you
25
+ do not need this gem, and wish to skip the inclusion of freedesktop.org.xml.
26
+
27
+ The FREEDESKTOP_PLACEHOLDER option is meant as a transitional feature, and will be deprecated in
28
+ the next release.
20
29
  ERROR
21
30
  end
22
31
 
23
32
  desc "Build a file pointing at the database"
24
33
  task :default do
25
- mime_database_path = locate_mime_database
26
- open("../../lib/mimemagic/path.rb", "w") do |f|
27
- f.print(%Q{
34
+ mime_database_path = nil
35
+ if ENV["USE_FREEDESKTOP_PLACEHOLDER"] == "true"
36
+ File.write("../../dummy.xml", "")
37
+ mime_database_path = File.expand_path("../../dummy.xml")
38
+ else
39
+ mime_database_path = locate_mime_database
40
+ end
41
+
42
+ target_dir = "#{ENV.fetch("RUBYARCHDIR", "../lib")}/mimemagic"
43
+ mkdir_p target_dir
44
+
45
+ open("#{target_dir}/path.rb", "w") do |f|
46
+ f.print(<<~SOURCE
28
47
  class MimeMagic
29
48
  DATABASE_PATH="#{mime_database_path}"
30
49
  end
31
- })
50
+ SOURCE
51
+ )
32
52
  end
33
- end
53
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # Extra magic
3
+
4
+ [['application/vnd.openxmlformats-officedocument.presentationml.presentation', [[0, "PK\003\004", [[0..5000, '[Content_Types].xml', [[0..5000, 'ppt/']]]]]]],
5
+ ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', [[0, "PK\003\004", [[0..5000, '[Content_Types].xml', [[0..5000, 'xl/']]]]]]],
6
+ ['application/vnd.openxmlformats-officedocument.wordprocessingml.document', [[0, "PK\003\004", [[0..5000, '[Content_Types].xml', [[0..5000, 'word/']]]]]]]].each do |magic|
7
+ MimeMagic.add(magic[0], magic: magic[1])
8
+ end
@@ -26,7 +26,16 @@ class MimeMagic
26
26
  offset = offset.size == 2 ? offset[0]..offset[1] : offset[0]
27
27
  case type
28
28
  when 'string'
29
- value.gsub!(/\\(x[\dA-Fa-f]{1,2}|0\d{1,3}|\d{1,3}|.)/) { eval("\"\\#{$1}\"") }
29
+ # This *one* pattern match, in the entirety of fd.o's mime types blows up the parser
30
+ # because of the escape character \c, so right here we have a hideous hack to
31
+ # accommodate that.
32
+ if value == '\chapter'
33
+ '\chapter'
34
+ else
35
+ value.gsub!(/\\(x[\dA-Fa-f]{1,2}|0\d{1,3}|\d{1,3}|.)/) {
36
+ eval("\"\\#{$1}\"")
37
+ }
38
+ end
30
39
  when 'big16'
31
40
  value = str2int(value)
32
41
  value = ((value >> 8).chr + (value & 0xFF).chr)
@@ -1,5 +1,5 @@
1
1
  class MimeMagic
2
2
  # MimeMagic version string
3
3
  # @api public
4
- VERSION = '0.3.7'
4
+ VERSION = '0.3.10'
5
5
  end
data/mimemagic.gemspec CHANGED
@@ -15,14 +15,14 @@ Gem::Specification.new do |s|
15
15
  s.extensions = %w(ext/mimemagic/Rakefile)
16
16
 
17
17
  s.summary = 'Fast mime detection by extension or content'
18
- s.description = 'Fast mime detection by extension or content in pure ruby (Uses freedesktop.org.xml shared-mime-info database)'
18
+ s.description = 'Fast mime detection by extension or content (Uses freedesktop.org.xml shared-mime-info database)'
19
19
  s.homepage = 'https://github.com/mimemagicrb/mimemagic'
20
20
  s.license = 'MIT'
21
21
 
22
- s.add_dependency('nokogiri', '~> 1.11.2')
22
+ s.add_dependency('nokogiri', '~> 1')
23
+ s.add_dependency('rake')
23
24
 
24
25
  s.add_development_dependency('minitest', '~> 5.14')
25
- s.add_development_dependency('rake', '~> 13.0')
26
26
 
27
27
  if s.respond_to?(:metadata)
28
28
  s.metadata['changelog_uri'] = "https://github.com/mimemagicrb/mimemagic/blob/master/CHANGELOG.md"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mimemagic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Mendler
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-03-25 00:00:00.000000000 Z
12
+ date: 2021-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -17,43 +17,43 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.11.2
20
+ version: '1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 1.11.2
27
+ version: '1'
28
28
  - !ruby/object:Gem::Dependency
29
- name: minitest
29
+ name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '5.14'
35
- type: :development
34
+ version: '0'
35
+ type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '5.14'
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rake
43
+ name: minitest
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '13.0'
48
+ version: '5.14'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '13.0'
56
- description: Fast mime detection by extension or content in pure ruby (Uses freedesktop.org.xml
55
+ version: '5.14'
56
+ description: Fast mime detection by extension or content (Uses freedesktop.org.xml
57
57
  shared-mime-info database)
58
58
  email:
59
59
  - mail@daniel-mendler.de