henkei 1.23.1 → 1.23.2

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: 7cecb124ea7a00d6a004491e8ab4a335ec5fbc465f5b55216b918257bd5f8759
4
- data.tar.gz: 80861060efee0b5cabb8523dd578be9c67e20a6b55c2d5cab88c63a423123226
3
+ metadata.gz: 97b9b37da4e96281569a16e469d23a00c41cd35bbd15e5a7c1d1025ea2862f46
4
+ data.tar.gz: 45a7c3ae645fc417ae6064a7237d87ae7e56c3c20392f83cad42f9fdafd569e8
5
5
  SHA512:
6
- metadata.gz: e6018c46475c3e5bef9f4c2482c05dffd6151d5fbb288f05d4bccd0a1503a26ffeba22784ebf5e731e23120da53f170edb37f310260e9d708bc2e70c79d438e1
7
- data.tar.gz: 7a8d21850552eda6b27f85dacdc9e360c0962ee08e8ed4bd45a704002f6837142953a47333642ec56ee842e0ee406b56d7f3f3b48dacbad4c4935455b1521bd8
6
+ metadata.gz: c323d5f5c2056bedce26e05b40d70eecd4f4fff6f8ae24362dfc80952e788f33454b8a7be6a375c54001694e6a2fbe2d7dfb60392dc7324b865d056e99637d78
7
+ data.tar.gz: fe9c6ee2a7033d55d8ccc36a3d3a1cc78fd459654314096fa087c8373544deaa291952b0303db11f362a7f758028acf11692f7b25ca132d7cb4c6603a10a5a9d
data/.rubocop.yml CHANGED
@@ -1,6 +1,27 @@
1
+ AllCops:
2
+ NewCops: enable
3
+
4
+ Layout/EmptyLinesAroundAttributeAccessor:
5
+ Enabled: true
6
+
1
7
  Layout/LineLength:
2
8
  Max: 120
3
9
 
10
+ Layout/SpaceAroundMethodCallOperator:
11
+ Enabled: true
12
+
13
+ Lint/DeprecatedOpenSSLConstant:
14
+ Enabled: true
15
+
16
+ Lint/MixedRegexpCaptureTypes:
17
+ Enabled: true
18
+
19
+ Lint/RaiseException:
20
+ Enabled: true
21
+
22
+ Lint/StructNewOverride:
23
+ Enabled: true
24
+
4
25
  Metrics/BlockLength:
5
26
  Exclude:
6
27
  - 'spec/**/*'
@@ -13,3 +34,24 @@ Style/ClassVars:
13
34
 
14
35
  Style/DoubleNegation:
15
36
  Enabled: false
37
+
38
+ Style/ExponentialNotation:
39
+ Enabled: true
40
+
41
+ Style/HashEachMethods:
42
+ Enabled: true
43
+
44
+ Style/HashTransformKeys:
45
+ Enabled: true
46
+
47
+ Style/HashTransformValues:
48
+ Enabled: true
49
+
50
+ Style/RedundantRegexpCharacterClass:
51
+ Enabled: true
52
+
53
+ Style/RedundantRegexpEscape:
54
+ Enabled: true
55
+
56
+ Style/SlicingWithRange:
57
+ Enabled: true
data/.travis.yml CHANGED
@@ -7,10 +7,11 @@ env:
7
7
 
8
8
  language: ruby
9
9
  rvm:
10
- - 2.3
11
10
  - 2.4
12
11
  - 2.5
13
12
  - 2.6
13
+ - 2.7
14
+ - 3.0
14
15
 
15
16
  before_install:
16
17
  - gem update bundler
@@ -25,7 +26,7 @@ before_script:
25
26
  - ./cc-test-reporter before-build
26
27
 
27
28
  script:
28
- - rubocop
29
+ - bundle exec rubocop
29
30
  - bundle exec rspec
30
31
 
31
32
  after_script:
data/henkei.gemspec CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |spec|
15
15
  '(.doc, .docx, .pages, .odt, .rtf, .pdf) using Apache Tika toolkit'
16
16
  spec.homepage = 'http://github.com/abrom/henkei'
17
17
  spec.license = 'MIT'
18
+ spec.required_ruby_version = ['>= 2.4.0', '< 3.1.0']
18
19
 
19
20
  spec.files = `git ls-files`.split("\n")
20
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -22,7 +23,7 @@ Gem::Specification.new do |spec|
22
23
  spec.require_paths = ['lib']
23
24
 
24
25
  spec.add_runtime_dependency 'json', '>= 1.8', '< 3'
25
- spec.add_runtime_dependency 'mime-types', '>= 1.23', '< 4'
26
+ spec.add_runtime_dependency 'mini_mime', '>= 0.1.1', '< 1'
26
27
 
27
28
  spec.add_development_dependency 'bundler', '~> 2.0'
28
29
  spec.add_development_dependency 'rails', '~> 5.0'
data/lib/henkei.rb CHANGED
@@ -2,9 +2,18 @@
2
2
 
3
3
  require 'henkei/version'
4
4
  require 'henkei/yomu'
5
+ require 'henkei/configuration'
5
6
 
6
7
  require 'net/http'
7
- require 'mime/types'
8
+ require 'mini_mime'
9
+
10
+ # require 'mime/types' if available
11
+ begin
12
+ require 'mime/types'
13
+ rescue LoadError
14
+ nil
15
+ end
16
+
8
17
  require 'time'
9
18
  require 'json'
10
19
 
@@ -23,6 +32,18 @@ class Henkei # rubocop:disable Metrics/ClassLength
23
32
  @@server_port = nil
24
33
  @@server_pid = nil
25
34
 
35
+ def self.mimetype(content_type)
36
+ if Henkei.configuration.mime_library == 'mime/types' && defined?(MIME::Types)
37
+ warn '[DEPRECATION] `mime/types` is deprecated. Please use `mini_mime` instead.'\
38
+ ' Use Henkei.configure and assign "mini_mime" to `mime_library`.'
39
+ MIME::Types[content_type].first
40
+ else
41
+ MiniMime.lookup_by_content_type(content_type).tap do |object|
42
+ object.define_singleton_method(:extensions) { [extension] }
43
+ end
44
+ end
45
+ end
46
+
26
47
  # Read text or metadata from a data buffer.
27
48
  #
28
49
  # data = File.read 'sample.pages'
@@ -36,7 +57,7 @@ class Henkei # rubocop:disable Metrics/ClassLength
36
57
  when :text then result
37
58
  when :html then result
38
59
  when :metadata then JSON.parse(result)
39
- when :mimetype then MIME::Types[JSON.parse(result)['Content-Type']].first
60
+ when :mimetype then Henkei.mimetype(JSON.parse(result)['Content-Type'])
40
61
  end
41
62
  end
42
63
 
@@ -112,9 +133,8 @@ class Henkei # rubocop:disable Metrics/ClassLength
112
133
  def mimetype
113
134
  return @mimetype if defined? @mimetype
114
135
 
115
- type = metadata['Content-Type'].is_a?(Array) ? metadata['Content-Type'].first : metadata['Content-Type']
116
-
117
- @mimetype = MIME::Types[type].first
136
+ content_type = metadata['Content-Type'].is_a?(Array) ? metadata['Content-Type'].first : metadata['Content-Type']
137
+ @mimetype = Henkei.mimetype(content_type)
118
138
  end
119
139
 
120
140
  # Returns +true+ if the Henkei document was specified using a file path.
@@ -186,7 +206,7 @@ class Henkei # rubocop:disable Metrics/ClassLength
186
206
  def self.server(type, custom_port = nil)
187
207
  @@server_port = custom_port || DEFAULT_SERVER_PORT
188
208
 
189
- @@server_pid = Process.spawn tika_command(type, true)
209
+ @@server_pid = Process.spawn(*tika_command(type, server: true))
190
210
  sleep(2) # Give the server 2 seconds to spin up.
191
211
  @@server_pid
192
212
  end
@@ -219,14 +239,14 @@ class Henkei # rubocop:disable Metrics/ClassLength
219
239
  # Provide the path to the Java binary
220
240
  #
221
241
  def self.java_path
222
- ENV['JAVA_HOME'] ? ENV['JAVA_HOME'] + '/bin/java' : 'java'
242
+ ENV['JAVA_HOME'] ? "#{ENV['JAVA_HOME']}/bin/java" : 'java'
223
243
  end
224
244
  private_class_method :java_path
225
245
 
226
246
  # Internal helper for calling to Tika library directly
227
247
  #
228
248
  def self.client_read(type, data)
229
- Open3.capture2(tika_command(type), stdin_data: data, binmode: true).first
249
+ Open3.capture2(*tika_command(type), stdin_data: data, binmode: true).first
230
250
  end
231
251
  private_class_method :client_read
232
252
 
@@ -259,23 +279,22 @@ class Henkei # rubocop:disable Metrics/ClassLength
259
279
 
260
280
  # Internal helper for building the Java command to call Tika
261
281
  #
262
- def self.tika_command(type, server = false)
263
- command = ["#{java_path} -Djava.awt.headless=true -jar #{Henkei::JAR_PATH} --config=#{Henkei::CONFIG_PATH}"]
264
- command << "--server --port #{@@server_port}" if server
265
- command << switch_for_type(type)
266
- command.join ' '
282
+ def self.tika_command(type, server: false)
283
+ command = [java_path, '-Djava.awt.headless=true', '-jar', Henkei::JAR_PATH, "--config=#{Henkei::CONFIG_PATH}"]
284
+ command += ['--server', '--port', @@server_port.to_s] if server
285
+ command + switch_for_type(type)
267
286
  end
268
287
  private_class_method :tika_command
269
288
 
270
289
  # Internal helper for building the Java command to call Tika
271
290
  #
272
291
  def self.switch_for_type(type)
273
- case type
274
- when :text then '-t'
275
- when :html then '-h'
276
- when :metadata then '-m -j'
277
- when :mimetype then '-m -j'
278
- end
292
+ {
293
+ text: ['-t'],
294
+ html: ['-h'],
295
+ metadata: %w[-m -j],
296
+ mimetype: %w[-m -j]
297
+ }[type]
279
298
  end
280
299
  private_class_method :switch_for_type
281
300
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Henkei monkey patch for configuration support
4
+ class Henkei
5
+ def self.configuration
6
+ @configuration ||= Configuration.new
7
+ end
8
+
9
+ def self.configure
10
+ yield(configuration)
11
+ end
12
+
13
+ # Handle Henkei configuration
14
+ class Configuration
15
+ attr_accessor :mime_library
16
+
17
+ def initialize
18
+ @mime_library = 'mime/types'
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Henkei
4
- VERSION = '1.23.1'
4
+ VERSION = '1.23.2'
5
5
  end
data/spec/henkei_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'helper.rb'
3
+ require 'helper'
4
4
  require 'henkei'
5
5
 
6
6
  # Some of the tests have been known to fail in weird and wonderful ways when `rails` is included
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: henkei
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.23.1
4
+ version: 1.23.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erol Fornoles
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-25 00:00:00.000000000 Z
12
+ date: 2021-02-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -32,25 +32,25 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3'
34
34
  - !ruby/object:Gem::Dependency
35
- name: mime-types
35
+ name: mini_mime
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.23'
40
+ version: 0.1.1
41
41
  - - "<"
42
42
  - !ruby/object:Gem::Version
43
- version: '4'
43
+ version: '1'
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: '1.23'
50
+ version: 0.1.1
51
51
  - - "<"
52
52
  - !ruby/object:Gem::Version
53
- version: '4'
53
+ version: '1'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: bundler
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +158,7 @@ files:
158
158
  - jar/tika-app-1.23.jar
159
159
  - jar/tika-config.xml
160
160
  - lib/henkei.rb
161
+ - lib/henkei/configuration.rb
161
162
  - lib/henkei/version.rb
162
163
  - lib/henkei/yomu.rb
163
164
  - spec/helper.rb
@@ -179,7 +180,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
180
  requirements:
180
181
  - - ">="
181
182
  - !ruby/object:Gem::Version
182
- version: '0'
183
+ version: 2.4.0
184
+ - - "<"
185
+ - !ruby/object:Gem::Version
186
+ version: 3.1.0
183
187
  required_rubygems_version: !ruby/object:Gem::Requirement
184
188
  requirements:
185
189
  - - ">="