pdf_info 0.4.0 → 0.5.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.
Potentially problematic release.
This version of pdf_info might be problematic. Click here for more details.
- checksums.yaml +15 -0
- data/.travis.yml +1 -6
- data/lib/pdf/info.rb +19 -2
- data/lib/pdf/info/version.rb +1 -1
- data/spec/pdf_info_spec.rb +52 -0
- metadata +5 -17
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OGYzNzE5ZTY5NDdmOWNkZmRkZTE5MTgyODk1YjM4ODFjZjY5M2E2Nw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NTFiYjlhNGUzYjM0OGM3YTNhZTdmNTg0N2I4N2VlYTMwMDNiZjM2Mg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YmEyMjM1NzFjYTRjNjQxNmUzYjk3OTQyYjZjMTc5MTI0ZDU0MmY1M2M1Yjhh
|
10
|
+
YzU3OWRiYzQ3MDIyMzdmMTI1YmNmNjE1MmFjNGMwMGU2NGYyZDFlNmVlN2Rk
|
11
|
+
Y2FiMGVjNWU3MTExYjczNmIyZTViMWUzNDUyYjc3ZmJkYmExMzk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NGI0ZGViZGFjNmM5NmEyMjYzZWQ4ZmVlNGQ2NjA4MjdkNzRlYzcwODVhMjFm
|
14
|
+
MTk0ZjQzNzAxMmE0N2U2NjQxZjU1MjFlNjE5M2QxNDY1ZDE4NWQ4MDkzYWVm
|
15
|
+
MDIyYjRjMjAwOTUyZjY4NjI2NzI4MGNkYzlkNGMzMGEwNjEzZGE=
|
data/.travis.yml
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- 1.8.7
|
4
|
-
- 1.9.2
|
5
4
|
- 1.9.3
|
5
|
+
- 2.0.0
|
6
6
|
- ruby-head
|
7
7
|
- jruby
|
8
|
-
- rbx
|
9
8
|
- ree
|
10
9
|
|
11
10
|
before_install:
|
12
11
|
- sudo apt-get update -qq
|
13
12
|
- sudo apt-get install -qq -y poppler-utils poppler-data
|
14
|
-
|
15
|
-
matrix:
|
16
|
-
allow_failures:
|
17
|
-
- rvm: ruby-head
|
data/lib/pdf/info.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'date' unless defined? DateTime
|
1
2
|
require 'pdf/info/exceptions'
|
2
3
|
|
3
4
|
module PDF
|
@@ -51,6 +52,8 @@ module PDF
|
|
51
52
|
metadata = {}
|
52
53
|
rows.each do |row|
|
53
54
|
pair = row.split(':', 2)
|
55
|
+
pair.map!(&:strip)
|
56
|
+
|
54
57
|
case pair.first
|
55
58
|
when "Pages"
|
56
59
|
metadata[:page_count] = pair.last.to_i
|
@@ -63,9 +66,11 @@ module PDF
|
|
63
66
|
when "PDF version"
|
64
67
|
metadata[:version] = pair.last.to_f
|
65
68
|
when "CreationDate"
|
66
|
-
|
69
|
+
creation_date = parse_datetime(pair.last)
|
70
|
+
metadata[:creation_date] = creation_date if creation_date
|
67
71
|
when "ModDate"
|
68
|
-
|
72
|
+
modification_date = parse_datetime(pair.last)
|
73
|
+
metadata[:modification_date] = modification_date if modification_date
|
69
74
|
when /^Page.*size$/
|
70
75
|
metadata[:pages] ||= []
|
71
76
|
metadata[:pages] << pair.last.scan(/[\d.]+/).map(&:to_f)
|
@@ -78,5 +83,17 @@ module PDF
|
|
78
83
|
metadata
|
79
84
|
end
|
80
85
|
|
86
|
+
private
|
87
|
+
|
88
|
+
def parse_datetime(value)
|
89
|
+
DateTime.parse(value)
|
90
|
+
rescue
|
91
|
+
begin
|
92
|
+
DateTime.strptime(value, '%m/%d/%Y %k:%M:%S')
|
93
|
+
rescue
|
94
|
+
nil
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
81
98
|
end
|
82
99
|
end
|
data/lib/pdf/info/version.rb
CHANGED
data/spec/pdf_info_spec.rb
CHANGED
@@ -87,6 +87,58 @@ describe PDF::Info do
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
+
describe ".process_output" do
|
91
|
+
subject do
|
92
|
+
PDF::Info.new('test.pdf')
|
93
|
+
end
|
94
|
+
|
95
|
+
it "symbolizes all keys" do
|
96
|
+
output = "a:foo\nb:bar\nc:baz"
|
97
|
+
[:a, :b, :c].each do |key|
|
98
|
+
expect(subject.process_output(output)).to have_key key
|
99
|
+
expect(subject.process_output(output)).to_not have_key key.to_s
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it "downcases key" do
|
104
|
+
output = "I AM ALL CAPITAL:I STAY ALL CAPITAL"
|
105
|
+
expected = {:'i_am_all_capital' => 'I STAY ALL CAPITAL'}
|
106
|
+
expect(subject.process_output(output)).to include expected
|
107
|
+
end
|
108
|
+
|
109
|
+
it "replaces whitespace in key with underscore" do
|
110
|
+
output = "key with space:value without underscore"
|
111
|
+
expected = {:'key_with_space' => 'value without underscore'}
|
112
|
+
expect(subject.process_output(output)).to include expected
|
113
|
+
end
|
114
|
+
|
115
|
+
it "strips whitespace from metadata pair" do
|
116
|
+
output = " key with space :value without space\nkey without space: value with space "
|
117
|
+
expected = {:'key_with_space' => 'value without space', :'key_without_space' => 'value with space'}
|
118
|
+
expect(subject.process_output(output)).to include expected
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe ".parse_datetime" do
|
123
|
+
subject do
|
124
|
+
pdf_info = PDF::Info.new('test.pdf')
|
125
|
+
pdf_info.stub!(:command).and_return(output('successful.txt'))
|
126
|
+
pdf_info
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'parse standard datetime format' do
|
130
|
+
expect(subject.send(:parse_datetime, '2001-02-03T04:05:06+07:00')).to be_kind_of DateTime
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'parse american datetime format' do
|
134
|
+
expect(subject.send(:parse_datetime, '4/23/2004 18:37:34')).to be_kind_of DateTime
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'return nil if string can not be parsed' do
|
138
|
+
expect(subject.send(:parse_datetime, 'asdf')).to be_nil
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
90
142
|
describe "running on sample.pdf" do
|
91
143
|
subject do
|
92
144
|
PDF::Info.command_path = "pdfinfo"
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdf_info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tom Taylor
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-05-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ! '>='
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -70,33 +65,26 @@ files:
|
|
70
65
|
homepage: https://github.com/newspaperclub/pdf_info
|
71
66
|
licenses:
|
72
67
|
- MIT
|
68
|
+
metadata: {}
|
73
69
|
post_install_message:
|
74
70
|
rdoc_options: []
|
75
71
|
require_paths:
|
76
72
|
- lib
|
77
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
-
none: false
|
79
74
|
requirements:
|
80
75
|
- - ! '>='
|
81
76
|
- !ruby/object:Gem::Version
|
82
77
|
version: '0'
|
83
|
-
segments:
|
84
|
-
- 0
|
85
|
-
hash: -1371290085031323010
|
86
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
79
|
requirements:
|
89
80
|
- - ! '>='
|
90
81
|
- !ruby/object:Gem::Version
|
91
82
|
version: '0'
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
hash: -1371290085031323010
|
95
83
|
requirements: []
|
96
84
|
rubyforge_project: pdf_info
|
97
|
-
rubygems_version:
|
85
|
+
rubygems_version: 2.0.3
|
98
86
|
signing_key:
|
99
|
-
specification_version:
|
87
|
+
specification_version: 4
|
100
88
|
summary: Wraps the pdfinfo command line tool to provide a hash of metadata
|
101
89
|
test_files:
|
102
90
|
- spec/assets/sample.pdf
|