paperclip-document 0.0.2 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/paperclip/document.rb +9 -35
- data/lib/paperclip/document/attachment_extension.rb +17 -0
- data/lib/paperclip/document/processor.rb +25 -0
- data/lib/paperclip/document/processors.rb +11 -4
- data/lib/paperclip/document/processors/counter.rb +42 -38
- data/lib/paperclip/document/processors/freezer.rb +29 -31
- data/lib/paperclip/document/processors/reader.rb +50 -46
- data/lib/paperclip/document/processors/sketcher.rb +34 -30
- data/lib/paperclip/document/version.rb +1 -1
- metadata +47 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0eea80135b657f2b47ecc5948d4443be118cec19
|
4
|
+
data.tar.gz: f9b90dc80e759fb9809388ef49e1d0f1bfb30d3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ede250c619b01cfa830a5b99a48d7c6153173244134782a1b53902b1f3d8b9e6f00c0ab036d5ccc660db4b7d6a5e5ec025afb27f8c5e642bae44cfedd2e0118a
|
7
|
+
data.tar.gz: f0e8f980c2eca47d43d19334f2119a0f6c211ed4df1e550c43086a5540238a5adb106c9091f1fcf54aa3a4d7be2111c3e9e75653292a166e173cefc40951bd49
|
data/lib/paperclip/document.rb
CHANGED
@@ -1,46 +1,20 @@
|
|
1
1
|
require "paperclip/document/version"
|
2
|
+
require "paperclip/document/attachment_extension"
|
2
3
|
require "docsplit"
|
3
4
|
require "pathname"
|
4
5
|
|
5
6
|
module Paperclip
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
attr_reader :instance, :tmp_dir
|
10
|
-
|
11
|
-
def initialize(file, options = {}, attachment = nil)
|
12
|
-
super(file, options, attachment)
|
13
|
-
@instance = @attachment.instance
|
14
|
-
# @tmp_dir = Pathname.new(Dir.tmpdir).join("paperclip-document", instance.class.name, attachment.name.to_s, basename, Time.now.to_i.to_s(36) + "-" + rand(1_000_000).to_s(36))
|
15
|
-
# @tmp_dir = Rails.root.join("paperclip-document", instance.class.name, attachment.name.to_s, basename, Time.now.to_i.to_s(36) + "-" + rand(1_000_000).to_s(36))
|
16
|
-
@tmp_dir = Pathname.new(Dir.tmpdir).join("paperclip-document-" + rand(1_000_000_000).to_s(36) + "-" + rand(1_000_000).to_s(36) + "-" + Time.now.to_i.to_s(36) + "-" + rand(1_000_000).to_s(36))
|
17
|
-
end
|
18
|
-
|
19
|
-
def file_path
|
20
|
-
Pathname.new(@file.path)
|
21
|
-
end
|
22
|
-
|
23
|
-
def basename
|
24
|
-
file_path.basename.to_s.gsub(/\.[^\.]+/, '')
|
25
|
-
end
|
26
|
-
|
7
|
+
module Document
|
8
|
+
autoload :Processor, 'paperclip/document/processor'
|
9
|
+
autoload :Processors, 'paperclip/document/processors'
|
27
10
|
end
|
28
11
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
# Returns the pages_count of the file as originally computed, and lives in the <attachment>_pages_count attribute of the model.
|
37
|
-
def pages_count
|
38
|
-
instance_read(:pages_count)
|
39
|
-
end
|
40
|
-
|
12
|
+
configure do |c|
|
13
|
+
c.register_processor :sketcher, Document::Processors::Sketcher
|
14
|
+
c.register_processor :reader, Document::Processors::Reader
|
15
|
+
c.register_processor :freezer, Document::Processors::Freezer
|
16
|
+
c.register_processor :counter, Document::Processors::Counter
|
41
17
|
end
|
42
|
-
|
43
18
|
|
44
19
|
end
|
45
20
|
|
46
|
-
require "paperclip/document/processors"
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Paperclip
|
2
|
+
|
3
|
+
class Attachment
|
4
|
+
|
5
|
+
# Returns the content_text of the file as originally extracted, and lives in the <attachment>_content_text attribute of the model.
|
6
|
+
def content_text
|
7
|
+
instance_read(:content_text)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Returns the pages_count of the file as originally computed, and lives in the <attachment>_pages_count attribute of the model.
|
11
|
+
def pages_count
|
12
|
+
instance_read(:pages_count)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Paperclip
|
2
|
+
module Document
|
3
|
+
|
4
|
+
# Main processor
|
5
|
+
class Processor < Paperclip::Processor
|
6
|
+
|
7
|
+
attr_reader :instance, :tmp_dir
|
8
|
+
|
9
|
+
def initialize(file, options = {}, attachment = nil)
|
10
|
+
super(file, options, attachment)
|
11
|
+
@instance = @attachment.instance
|
12
|
+
@tmp_dir = Pathname.new(Dir.tmpdir).join("paperclip-document-" + Time.now.to_i.to_s(36) + rand(1_000_000_000).to_s(36))
|
13
|
+
end
|
14
|
+
|
15
|
+
def file_path
|
16
|
+
Pathname.new(@file.path)
|
17
|
+
end
|
18
|
+
|
19
|
+
def basename
|
20
|
+
file_path.basename.to_s.gsub(/\.[^\.]+/, '')
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,4 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
module Paperclip
|
2
|
+
module Document
|
3
|
+
module Processors
|
4
|
+
autoload :Sketcher, "paperclip/document/processors/sketcher"
|
5
|
+
autoload :Reader, "paperclip/document/processors/reader"
|
6
|
+
autoload :Freezer, "paperclip/document/processors/freezer"
|
7
|
+
autoload :Counter, "paperclip/document/processors/counter"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
@@ -1,45 +1,49 @@
|
|
1
1
|
module Paperclip
|
2
|
+
module Document
|
3
|
+
module Processors
|
4
|
+
|
5
|
+
# This processor extract the OCR text of the file
|
6
|
+
class Counter < Paperclip::Document::Processor
|
7
|
+
|
8
|
+
attr_accessor :pages_count_column
|
9
|
+
|
10
|
+
def initialize(file, options = {}, attachment = nil)
|
11
|
+
super(file, options, attachment)
|
12
|
+
if @options[:pages_count_column].nil? and pages_count_column?
|
13
|
+
@options[:pages_count_column] = default_pages_count_column
|
14
|
+
end
|
15
|
+
@pages_count_column = @options[:pages_count_column]
|
16
|
+
|
17
|
+
unless @pages_count_column
|
18
|
+
raise Paperclip::Error, "No pages count column given"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Extract the pages count of all the document
|
23
|
+
def make
|
24
|
+
count = Docsplit.extract_length(file_path.to_s)
|
25
|
+
|
26
|
+
instance[pages_count_column] = count
|
27
|
+
instance.run_callbacks(:save) { false }
|
28
|
+
|
29
|
+
return file
|
30
|
+
end
|
31
|
+
|
32
|
+
# Check if a pages count column is present
|
33
|
+
def pages_count_column?
|
34
|
+
expected_column = default_pages_count_column
|
35
|
+
return @attachment.instance.class.columns.detect do |column|
|
36
|
+
column.name.to_s == expected_column
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns the name of the default pages count column
|
41
|
+
def default_pages_count_column
|
42
|
+
@attachment.name.to_s + "_pages_count"
|
43
|
+
end
|
2
44
|
|
3
|
-
# This processor extract the OCR text of the file
|
4
|
-
class Counter < DocumentProcessor
|
5
|
-
|
6
|
-
attr_accessor :pages_count_column
|
7
|
-
|
8
|
-
def initialize(file, options = {}, attachment = nil)
|
9
|
-
super(file, options, attachment)
|
10
|
-
if @options[:pages_count_column].nil? and pages_count_column?
|
11
|
-
@options[:pages_count_column] = default_pages_count_column
|
12
|
-
end
|
13
|
-
@pages_count_column = @options[:pages_count_column]
|
14
|
-
|
15
|
-
unless @pages_count_column
|
16
|
-
raise Paperclip::Error, "No pages count column given"
|
17
45
|
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# Extract the pages count of all the document
|
21
|
-
def make
|
22
|
-
count = Docsplit.extract_length(file_path.to_s)
|
23
|
-
|
24
|
-
instance[pages_count_column] = count
|
25
|
-
instance.run_callbacks(:save) { false }
|
26
46
|
|
27
|
-
return file
|
28
47
|
end
|
29
|
-
|
30
|
-
# Check if a pages count column is present
|
31
|
-
def pages_count_column?
|
32
|
-
expected_column = default_pages_count_column
|
33
|
-
return @attachment.instance.class.columns.detect do |column|
|
34
|
-
column.name.to_s == expected_column
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# Returns the name of the default pages count column
|
39
|
-
def default_pages_count_column
|
40
|
-
@attachment.name.to_s + "_pages_count"
|
41
|
-
end
|
42
|
-
|
43
48
|
end
|
44
|
-
|
45
49
|
end
|
@@ -1,38 +1,36 @@
|
|
1
|
-
require 'filemagic'
|
2
|
-
|
3
1
|
module Paperclip
|
2
|
+
module Document
|
3
|
+
module Processors
|
4
|
+
|
5
|
+
# This processor converts document to PDF
|
6
|
+
class Freezer < Paperclip::Document::Processor
|
7
|
+
def initialize(file, options = {}, attachment = nil)
|
8
|
+
super
|
9
|
+
@format = options[:format]
|
10
|
+
unless @format == :pdf
|
11
|
+
raise Paperclip::Error, "Valid format (pdf) must be specified"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# Convert the document to pdf
|
16
|
+
def make
|
17
|
+
destination_path = tmp_dir.to_s
|
18
|
+
destination_file = File.join(destination_path, basename + ".#{@format}")
|
19
|
+
if pdf_format?
|
20
|
+
destination_file = file_path.to_s
|
21
|
+
else
|
22
|
+
Docsplit.extract_pdf(file_path.to_s, :output => destination_path)
|
23
|
+
end
|
24
|
+
return File.open(destination_file)
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def pdf_format?
|
29
|
+
File.open(file_path, "rb", &:readline) =~ /\A\%PDF-\d+(\.\d+)?$/
|
30
|
+
end
|
4
31
|
|
5
|
-
# This processor extract first page as thumbnail
|
6
|
-
class Freezer < DocumentProcessor
|
7
|
-
def initialize(file, options = {}, attachment = nil)
|
8
|
-
super
|
9
|
-
@format = options[:format]
|
10
|
-
unless @format == :pdf
|
11
|
-
raise Paperclip::Error, "Valid format (pdf) must be specified"
|
12
32
|
end
|
13
|
-
end
|
14
33
|
|
15
|
-
# Convert the document to pdf
|
16
|
-
def make
|
17
|
-
destination_path = tmp_dir.to_s
|
18
|
-
destination_file = File.join(destination_path, basename + ".#{@format}")
|
19
|
-
if pdf_format?
|
20
|
-
destination_file = file_path.to_s
|
21
|
-
else
|
22
|
-
Docsplit.extract_pdf(file_path.to_s, :output => destination_path)
|
23
|
-
end
|
24
|
-
return File.open(destination_file)
|
25
34
|
end
|
26
|
-
|
27
|
-
|
28
|
-
def pdf_format?
|
29
|
-
file_magic = FileMagic.new
|
30
|
-
type = file_magic.file(file_path.to_s)
|
31
|
-
file_magic.close
|
32
|
-
type =~ /pdf/i
|
33
|
-
end
|
34
|
-
|
35
35
|
end
|
36
|
-
|
37
|
-
|
38
36
|
end
|
@@ -1,53 +1,57 @@
|
|
1
1
|
module Paperclip
|
2
|
+
module Document
|
3
|
+
module Processors
|
4
|
+
|
5
|
+
# This processor extract the OCR text of the file
|
6
|
+
class Reader < Paperclip::Document::Processor
|
7
|
+
|
8
|
+
attr_accessor :clean, :text_column, :language
|
9
|
+
|
10
|
+
def initialize(file, options = {}, attachment = nil)
|
11
|
+
super(file, options, attachment)
|
12
|
+
if @options[:text_column].nil? and text_column?
|
13
|
+
@options[:text_column] = default_text_column
|
14
|
+
end
|
15
|
+
@language = @options[:language]
|
16
|
+
@text_column = @options[:text_column]
|
17
|
+
unless @text_column
|
18
|
+
raise Paperclip::Error, "No content text column given"
|
19
|
+
end
|
20
|
+
@clean = (RUBY_VERSION >= "2.0" ? false : options.has_key?(:clean) ? !!options[:clean] : true)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Extract the text of all the document
|
24
|
+
def make
|
25
|
+
destination_path = tmp_dir.to_s
|
26
|
+
options = {output: destination_path, clean: @clean}
|
27
|
+
options[:language] = (language.is_a?(Proc) ? language.call(attachment.instance) : language)
|
28
|
+
Docsplit.extract_text(file_path.to_s, options)
|
29
|
+
|
30
|
+
destination_file = File.join(destination_path, basename + ".txt")
|
31
|
+
instance = @attachment.instance
|
32
|
+
f = File.open(destination_file)
|
33
|
+
instance[text_column] = f.read
|
34
|
+
instance.run_callbacks(:save) { false }
|
35
|
+
f.close
|
36
|
+
|
37
|
+
return file
|
38
|
+
end
|
39
|
+
|
40
|
+
# Check if the default text column is present
|
41
|
+
def text_column?
|
42
|
+
expected_column = default_text_column
|
43
|
+
return instance.class.columns.detect do |column|
|
44
|
+
column.name.to_s == expected_column
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Returns the name of the default text column
|
49
|
+
def default_text_column
|
50
|
+
@attachment.name.to_s + "_content_text"
|
51
|
+
end
|
2
52
|
|
3
|
-
# This processor extract the OCR text of the file
|
4
|
-
class Reader < DocumentProcessor
|
5
|
-
|
6
|
-
attr_accessor :clean, :text_column, :language
|
7
|
-
|
8
|
-
def initialize(file, options = {}, attachment = nil)
|
9
|
-
super(file, options, attachment)
|
10
|
-
if @options[:text_column].nil? and text_column?
|
11
|
-
@options[:text_column] = default_text_column
|
12
|
-
end
|
13
|
-
@language = @options[:language]
|
14
|
-
@text_column = @options[:text_column]
|
15
|
-
unless @text_column
|
16
|
-
raise Paperclip::Error, "No content text column given"
|
17
|
-
end
|
18
|
-
@clean = (RUBY_VERSION >= "2.0" ? false : options.has_key?(:clean) ? !!options[:clean] : true)
|
19
|
-
end
|
20
|
-
|
21
|
-
# Extract the text of all the document
|
22
|
-
def make
|
23
|
-
destination_path = tmp_dir.to_s
|
24
|
-
options = {output: destination_path, clean: @clean}
|
25
|
-
options[:language] = (language.is_a?(Proc) ? language.call(attachment.instance) : language)
|
26
|
-
Docsplit.extract_text(file_path.to_s, options)
|
27
|
-
|
28
|
-
destination_file = File.join(destination_path, basename + ".txt")
|
29
|
-
instance = @attachment.instance
|
30
|
-
f = File.open(destination_file)
|
31
|
-
instance[text_column] = f.read
|
32
|
-
instance.run_callbacks(:save) { false }
|
33
|
-
f.close
|
34
|
-
|
35
|
-
return file
|
36
|
-
end
|
37
|
-
|
38
|
-
# Check if the default text column is present
|
39
|
-
def text_column?
|
40
|
-
expected_column = default_text_column
|
41
|
-
return instance.class.columns.detect do |column|
|
42
|
-
column.name.to_s == expected_column
|
43
53
|
end
|
44
|
-
end
|
45
54
|
|
46
|
-
# Returns the name of the default text column
|
47
|
-
def default_text_column
|
48
|
-
@attachment.name.to_s + "_content_text"
|
49
55
|
end
|
50
|
-
|
51
56
|
end
|
52
|
-
|
53
57
|
end
|
@@ -1,39 +1,43 @@
|
|
1
1
|
module Paperclip
|
2
|
+
module Document
|
3
|
+
module Processors
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
+
# This processor extract first page as thumbnail
|
6
|
+
class Sketcher < Paperclip::Document::Processor
|
5
7
|
|
6
|
-
|
8
|
+
attr_accessor :format, :density, :format
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
def initialize(file, options = {}, attachment = nil)
|
11
|
+
super(file, options, attachment)
|
12
|
+
@format = (options[:format] || :jpg).to_sym
|
13
|
+
unless [:jpg, :png].include?(@format)
|
14
|
+
raise Paperclip::Error, "Valid format must be specified"
|
15
|
+
end
|
16
|
+
unless @size = options[:size]
|
17
|
+
@density = (options[:density] || 150).to_f
|
18
|
+
end
|
19
|
+
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
21
|
+
# Extract the page
|
22
|
+
def make
|
23
|
+
destination_path = tmp_dir.to_s
|
24
|
+
options = {:output => destination_path, :pages => [1], :format => [@format]}
|
25
|
+
if @size
|
26
|
+
options[:size] = @size
|
27
|
+
elsif @density
|
28
|
+
options[:density] = @density
|
29
|
+
end
|
30
|
+
Docsplit.extract_images(file_path.to_s, options)
|
31
|
+
begin
|
32
|
+
rescue
|
33
|
+
raise Paperclip::Error, "There was an error extracting the first thumbnail from #{basename}"
|
34
|
+
end
|
35
|
+
return File.open(File.join(destination_path, basename + "_1.#{@format}"))
|
36
|
+
end
|
35
37
|
|
36
|
-
|
38
|
+
end
|
37
39
|
|
38
40
|
|
41
|
+
end
|
42
|
+
end
|
39
43
|
end
|
metadata
CHANGED
@@ -1,73 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paperclip-document
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brice Texier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: paperclip
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.1'
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.1'
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: docsplit
|
34
|
+
name: burisu-docsplit
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- -
|
37
|
+
- - '>='
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.7.
|
39
|
+
version: 0.7.6
|
34
40
|
type: :runtime
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
|
-
- -
|
44
|
+
- - '>='
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.7.
|
46
|
+
version: 0.7.6
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: bundler
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
53
|
+
version: '1.3'
|
54
|
+
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - ~>
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
60
|
+
version: '1.3'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: rake
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
|
-
- -
|
65
|
+
- - '>='
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '0'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
|
-
- -
|
72
|
+
- - '>='
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
74
|
+
version: '0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
76
|
+
name: rails
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.2'
|
82
|
+
- - <
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '5'
|
85
|
+
type: :development
|
86
|
+
prerelease: false
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '3.2'
|
92
|
+
- - <
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '5'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: coveralls
|
71
97
|
requirement: !ruby/object:Gem::Requirement
|
72
98
|
requirements:
|
73
99
|
- - '>='
|
@@ -118,6 +144,8 @@ files:
|
|
118
144
|
- LICENSE.txt
|
119
145
|
- README.md
|
120
146
|
- lib/paperclip/document.rb
|
147
|
+
- lib/paperclip/document/attachment_extension.rb
|
148
|
+
- lib/paperclip/document/processor.rb
|
121
149
|
- lib/paperclip/document/processors.rb
|
122
150
|
- lib/paperclip/document/processors/counter.rb
|
123
151
|
- lib/paperclip/document/processors/freezer.rb
|