pdfh 0.1.8 → 0.1.9
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 +4 -4
- data/.gitignore +37 -12
- data/.rubocop.yml +16 -2
- data/.rubocop_todo.yml +133 -3
- data/.ruby-version +1 -1
- data/CHANGELOG.md +3 -0
- data/Gemfile +14 -3
- data/Gemfile.lock +52 -36
- data/README.md +9 -0
- data/Rakefile +6 -6
- data/bin/console +6 -6
- data/exe/pdfh +18 -8
- data/lib/ext/string.rb +1 -1
- data/lib/pdfh.rb +17 -17
- data/lib/pdfh/document.rb +24 -24
- data/lib/pdfh/pdf_handler.rb +1 -1
- data/lib/pdfh/settings.rb +7 -7
- data/lib/pdfh/utils.rb +2 -2
- data/lib/pdfh/version.rb +1 -1
- data/pdfh.gemspec +22 -31
- metadata +3 -117
- data/.travis.yml +0 -7
- data/docs/legacy.md +0 -453
data/bin/console
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require "bundler/setup"
|
5
|
+
require "pdfh"
|
6
6
|
|
7
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
8
8
|
# with your gem easier. You can also use a different console, if you like.
|
9
9
|
|
10
10
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
-
|
12
|
-
|
11
|
+
require "pry"
|
12
|
+
Pry.start
|
13
13
|
|
14
|
-
require
|
15
|
-
IRB.start(__FILE__)
|
14
|
+
# require "irb"
|
15
|
+
# IRB.start(__FILE__)
|
data/exe/pdfh
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
4
|
+
require "optparse"
|
5
|
+
require "pdfh"
|
6
|
+
require "pdfh/version"
|
7
|
+
require "pdfh/utils"
|
8
8
|
|
9
9
|
options = {}
|
10
10
|
opt = OptionParser.new do |opts|
|
11
11
|
# Process ARGV
|
12
12
|
opts.banner = "Usage: #{opts.program_name} [options]"
|
13
|
-
opts.on(
|
14
|
-
opts.on(
|
15
|
-
opts.on_tail(
|
13
|
+
opts.on("-v", "--verbose", "Show more output, useful for debug") { |o| options[:verbose] = o }
|
14
|
+
opts.on("-d", "--dry", "Dry run, does not write new pdf") { |o| options[:dry] = o }
|
15
|
+
opts.on_tail("-V", "--version", "Show version") do
|
16
16
|
puts "#{opts.program_name} v#{Pdfh::VERSION}"
|
17
17
|
exit
|
18
18
|
end
|
19
|
-
opts.on_tail(
|
19
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
20
20
|
puts opts
|
21
21
|
exit
|
22
22
|
end
|
@@ -30,4 +30,14 @@ rescue OptionParser::InvalidOption => e
|
|
30
30
|
exit 1
|
31
31
|
end
|
32
32
|
|
33
|
+
def validate_installed(app)
|
34
|
+
require "open3"
|
35
|
+
_stdout, _stderr, status = Open3.capture3("command -v #{app}")
|
36
|
+
puts "Missing #{app} command." unless status.success?
|
37
|
+
|
38
|
+
status.success?
|
39
|
+
end
|
40
|
+
|
41
|
+
exit(1) unless validate_installed("qpdf") && validate_installed("pdftotext")
|
42
|
+
|
33
43
|
Pdfh.main(options)
|
data/lib/ext/string.rb
CHANGED
data/lib/pdfh.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require "pdfh/version"
|
4
|
+
require "pdfh/settings"
|
5
|
+
require "pdfh/document"
|
6
|
+
require "pdfh/utils"
|
7
7
|
|
8
8
|
##
|
9
9
|
# Gem entry point
|
@@ -24,7 +24,7 @@ module Pdfh
|
|
24
24
|
def self.search_config_file
|
25
25
|
name = File.basename($PROGRAM_NAME)
|
26
26
|
names_to_look = ["#{name}.yml", "#{name}.yaml"]
|
27
|
-
dir_order = [Dir.pwd, File.expand_path(
|
27
|
+
dir_order = [Dir.pwd, File.expand_path("~")]
|
28
28
|
|
29
29
|
dir_order.each do |dir|
|
30
30
|
names_to_look.each do |file|
|
@@ -33,8 +33,8 @@ module Pdfh
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
raise StandardError, "no configuraton file (#{names_to_look.join(
|
37
|
-
" within paths: #{dir_order.join(
|
36
|
+
raise StandardError, "no configuraton file (#{names_to_look.join(" or ")}) was found\n"\
|
37
|
+
" within paths: #{dir_order.join(", ")}"
|
38
38
|
end
|
39
39
|
|
40
40
|
##
|
@@ -63,14 +63,14 @@ module Pdfh
|
|
63
63
|
def self.process_document(file, type)
|
64
64
|
puts "Working on #{basename_without_ext(file).colorize(:light_green)}"
|
65
65
|
pad = 12
|
66
|
-
print_ident
|
66
|
+
print_ident "Type", type.name, :light_blue, width: pad
|
67
67
|
doc = Document.new(file, type)
|
68
|
-
print_ident
|
69
|
-
print_ident
|
70
|
-
print_ident
|
71
|
-
print_ident
|
72
|
-
print_ident
|
73
|
-
print_ident
|
68
|
+
print_ident "Sub-Type", doc.sub_type, :light_blue, width: pad
|
69
|
+
print_ident "Period", doc.period, :light_blue, width: pad
|
70
|
+
print_ident "New Name", doc.new_name, :light_blue, width: pad
|
71
|
+
print_ident "Store Path", doc.store_path, :light_blue, width: pad
|
72
|
+
print_ident "Other files", doc.companion_files(join: true), :light_blue, width: pad
|
73
|
+
print_ident "Print CMD", doc.print_cmd, :light_blue, width: pad
|
74
74
|
doc.write_pdf(@settings.base_path)
|
75
75
|
rescue StandardError => e
|
76
76
|
puts " Doc Error: #{e.message}".colorize(:red)
|
@@ -79,16 +79,16 @@ module Pdfh
|
|
79
79
|
|
80
80
|
def self.print_separator(title)
|
81
81
|
_rows, cols = `stty size`.split.map(&:to_i)
|
82
|
-
sep = "\n#{
|
82
|
+
sep = "\n#{"-" * 40} #{title} "
|
83
83
|
remaining_cols = cols - sep.size
|
84
|
-
sep +=
|
84
|
+
sep += "-" * remaining_cols if remaining_cols.positive?
|
85
85
|
puts sep.colorize(:light_yellow)
|
86
86
|
end
|
87
87
|
|
88
88
|
def self.print_ident(field, value, color = :green, width: 3)
|
89
89
|
field_str = field.to_s.rjust(width)
|
90
90
|
value_str = value.colorize(color)
|
91
|
-
puts "#{
|
91
|
+
puts "#{" " * 4}#{field_str}: #{value_str}"
|
92
92
|
end
|
93
93
|
|
94
94
|
def self.basename_without_ext(file)
|
data/lib/pdfh/document.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require "fileutils"
|
4
|
+
require "pdfh/month"
|
5
|
+
require "pdfh/pdf_handler"
|
6
|
+
require "ext/string"
|
7
7
|
|
8
8
|
##
|
9
9
|
# main module
|
@@ -13,7 +13,7 @@ module Pdfh
|
|
13
13
|
##
|
14
14
|
# Regular Date Error, when there is not match
|
15
15
|
class ReDateError < StandardError
|
16
|
-
def initialize(message =
|
16
|
+
def initialize(message = "No data matched your date regular expression")
|
17
17
|
super(message)
|
18
18
|
end
|
19
19
|
end
|
@@ -57,7 +57,7 @@ module Pdfh
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def period
|
60
|
-
formated_month = month.to_s.rjust(2,
|
60
|
+
formated_month = month.to_s.rjust(2, "0")
|
61
61
|
"#{year}-#{formated_month}"
|
62
62
|
end
|
63
63
|
|
@@ -93,21 +93,21 @@ module Pdfh
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def type_name
|
96
|
-
@type ? @type.name.titleize :
|
96
|
+
@type ? @type.name.titleize : "N/A"
|
97
97
|
end
|
98
98
|
|
99
99
|
def sub_type
|
100
|
-
@sub_type ? @sub_type.name.titleize :
|
100
|
+
@sub_type ? @sub_type.name.titleize : "N/A"
|
101
101
|
end
|
102
102
|
|
103
103
|
def new_name
|
104
|
-
template = @type.to_h.key?(:name_template) ? @type.name_template :
|
104
|
+
template = @type.to_h.key?(:name_template) ? @type.name_template : "{original}"
|
105
105
|
new_name = template
|
106
|
-
.sub(
|
107
|
-
.sub(
|
108
|
-
.sub(
|
109
|
-
.sub(
|
110
|
-
.sub(
|
106
|
+
.sub("{original}", file_name_only)
|
107
|
+
.sub("{period}", period)
|
108
|
+
.sub("{type}", type_name)
|
109
|
+
.sub("{subtype}", sub_type)
|
110
|
+
.sub("{extra}", extra || "")
|
111
111
|
"#{new_name}.pdf"
|
112
112
|
end
|
113
113
|
|
@@ -116,7 +116,7 @@ module Pdfh
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def print_cmd
|
119
|
-
return
|
119
|
+
return "N/A" if type.print_cmd.nil? || type.print_cmd.empty?
|
120
120
|
|
121
121
|
relative_path = File.join(store_path, new_name)
|
122
122
|
"#{type.print_cmd} #{relative_path}"
|
@@ -140,19 +140,19 @@ module Pdfh
|
|
140
140
|
def companion_files(join: false)
|
141
141
|
@companion unless join
|
142
142
|
|
143
|
-
@companion.empty? ?
|
143
|
+
@companion.empty? ? "N/A" : @companion.join(", ")
|
144
144
|
end
|
145
145
|
|
146
146
|
private
|
147
147
|
|
148
148
|
##
|
149
|
-
# @param [Array]
|
149
|
+
# @param sub_types [Array]
|
150
150
|
# @return [OpenStruct]
|
151
151
|
def extract_subtype(sub_types)
|
152
152
|
return nil if sub_types.nil? || sub_types.empty?
|
153
153
|
|
154
154
|
sub_types.each do |st|
|
155
|
-
is_matched = Regexp.new(st[
|
155
|
+
is_matched = Regexp.new(st["name"]).match?(@text)
|
156
156
|
next unless is_matched
|
157
157
|
|
158
158
|
sub = OpenStruct.new(st)
|
@@ -171,7 +171,7 @@ module Pdfh
|
|
171
171
|
# unamed matches needs to be in order month, year
|
172
172
|
# @return [Array] - format [month, year, day]
|
173
173
|
def match_data
|
174
|
-
Verbose.print
|
174
|
+
Verbose.print "~~~~~~~~~~~~~~~~~~ RegEx"
|
175
175
|
Verbose.print " Using regex: #{@type.re_date}"
|
176
176
|
Verbose.print " named: #{@type.re_date.named_captures}"
|
177
177
|
matched = @type.re_date.match(@text)
|
@@ -194,24 +194,24 @@ module Pdfh
|
|
194
194
|
end
|
195
195
|
|
196
196
|
def find_companion_files
|
197
|
-
Verbose.print
|
197
|
+
Verbose.print "~~~~~~~~~~~~~~~~~~ Searching Companion files"
|
198
198
|
Verbose.print " Working on dir: #{home_dir}"
|
199
199
|
Dir.chdir(home_dir) do
|
200
200
|
all_files = Dir["#{file_name_only}.*"]
|
201
|
-
companion = all_files.reject { |file| file.include?
|
202
|
-
Verbose.print " - #{companion.join(
|
201
|
+
companion = all_files.reject { |file| file.include? "pdf" }
|
202
|
+
Verbose.print " - #{companion.join(", ")}"
|
203
203
|
|
204
204
|
@companion = companion || []
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
208
208
|
def copy_companion_files(destination)
|
209
|
-
Verbose.print
|
209
|
+
Verbose.print "~~~~~~~~~~~~~~~~~~ Writing Companion files"
|
210
210
|
@companion.each do |file|
|
211
211
|
Verbose.print " Working on #{file}..."
|
212
212
|
src_name = File.join(home_dir, file)
|
213
213
|
src_ext = File.extname(file)
|
214
|
-
dest_name = File.basename(new_name,
|
214
|
+
dest_name = File.basename(new_name, ".pdf")
|
215
215
|
dest_full = File.join(destination, "#{dest_name}#{src_ext}")
|
216
216
|
Verbose.print " cp #{src_name} --> #{dest_full}"
|
217
217
|
FileUtils.cp(src_name, dest_full)
|
data/lib/pdfh/pdf_handler.rb
CHANGED
@@ -38,7 +38,7 @@ module Pdfh
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def write_pdf(dir_path, full_path)
|
41
|
-
Verbose.print
|
41
|
+
Verbose.print "~~~~~~~~~~~~~~~~~~ Writing PDFs"
|
42
42
|
raise IOError, "Path #{dir_path} not found." unless Dir.exist?(dir_path)
|
43
43
|
|
44
44
|
password_opt = "--password='#{@password}'" if @password
|
data/lib/pdfh/settings.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "yaml"
|
4
|
+
require "ostruct"
|
5
|
+
require "base64"
|
6
6
|
|
7
7
|
module Pdfh
|
8
8
|
##
|
@@ -14,11 +14,11 @@ module Pdfh
|
|
14
14
|
file_hash = YAML.load_file(file)
|
15
15
|
Verbose.print "Loaded configuration file: #{file}"
|
16
16
|
|
17
|
-
@scrape_dirs = process_scrape_dirs(file_hash[
|
18
|
-
@base_path = File.expand_path(file_hash[
|
19
|
-
@document_types = process_doc_types(file_hash[
|
17
|
+
@scrape_dirs = process_scrape_dirs(file_hash["scrape_dirs"])
|
18
|
+
@base_path = File.expand_path(file_hash["base_path"])
|
19
|
+
@document_types = process_doc_types(file_hash["document_types"])
|
20
20
|
|
21
|
-
Verbose.print
|
21
|
+
Verbose.print "Processing directories:"
|
22
22
|
scrape_dirs.each { |dir| Verbose.print " - #{dir}" }
|
23
23
|
Verbose.print
|
24
24
|
end
|
data/lib/pdfh/utils.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "colorize"
|
4
4
|
|
5
5
|
# Contains all generic short functionality
|
6
6
|
module Pdfh
|
@@ -15,7 +15,7 @@ module Pdfh
|
|
15
15
|
@active
|
16
16
|
end
|
17
17
|
|
18
|
-
def print(msg =
|
18
|
+
def print(msg = "")
|
19
19
|
puts msg.colorize(:cyan) if active?
|
20
20
|
end
|
21
21
|
end
|
data/lib/pdfh/version.rb
CHANGED
data/pdfh.gemspec
CHANGED
@@ -1,52 +1,43 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path(
|
4
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
|
3
|
+
# lib = File.expand_path("lib", __dir__)
|
4
|
+
# $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require_relative "lib/pdfh/version"
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
8
|
+
spec.name = "pdfh"
|
9
9
|
spec.version = Pdfh::VERSION
|
10
|
-
spec.authors = [
|
11
|
-
spec.email = [
|
10
|
+
spec.authors = ["Isaias Piña"]
|
11
|
+
spec.email = ["iax7@users.noreply.github.com"]
|
12
12
|
|
13
|
-
spec.summary =
|
14
|
-
spec.description =
|
15
|
-
|
16
|
-
spec.homepage =
|
17
|
-
spec.license =
|
18
|
-
spec.required_ruby_version =
|
13
|
+
spec.summary = "Organize PDF files"
|
14
|
+
spec.description = "Examine all PDF files in scrape directories, remove password (if has one), "\
|
15
|
+
"rename and copy to a new directory using regular expresions."
|
16
|
+
spec.homepage = "https://github.com/iax7/pdfh"
|
17
|
+
spec.license = "MIT"
|
18
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
19
19
|
|
20
20
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
21
21
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
22
22
|
if spec.respond_to?(:metadata)
|
23
|
-
spec.metadata[
|
23
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
24
24
|
|
25
|
-
spec.metadata[
|
26
|
-
spec.metadata[
|
27
|
-
spec.metadata[
|
25
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
26
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
27
|
+
spec.metadata["changelog_uri"] = "https://raw.githubusercontent.com/iax7/pdfh/master/CHANGELOG.md"
|
28
28
|
else
|
29
|
-
raise
|
30
|
-
|
29
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
30
|
+
"public gem pushes."
|
31
31
|
end
|
32
32
|
|
33
33
|
# Specify which files should be added to the gem when it is released.
|
34
34
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
35
35
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
36
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{
|
36
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:\.\w+|docs|test|spec|features)/}) }
|
37
37
|
end
|
38
|
-
spec.bindir =
|
38
|
+
spec.bindir = "exe"
|
39
39
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
40
|
-
spec.require_paths = [
|
40
|
+
spec.require_paths = ["lib"]
|
41
41
|
|
42
|
-
spec.add_dependency
|
43
|
-
|
44
|
-
spec.add_development_dependency 'bundler', '~> 2.0'
|
45
|
-
spec.add_development_dependency 'pry'
|
46
|
-
spec.add_development_dependency 'rake', '~> 13.0'
|
47
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
48
|
-
spec.add_development_dependency 'rubocop'
|
49
|
-
spec.add_development_dependency 'simplecov'
|
50
|
-
spec.add_development_dependency 'simplecov-console'
|
51
|
-
spec.add_development_dependency 'versionomy'
|
42
|
+
spec.add_dependency "colorize", "~> 0.8.0"
|
52
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdfh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Isaias Piña
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -24,118 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.8.0
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '2.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: pry
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '13.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '13.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '3.0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '3.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: simplecov
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: simplecov-console
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: versionomy
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
27
|
description: Examine all PDF files in scrape directories, remove password (if has
|
140
28
|
one), rename and copy to a new directory using regular expresions.
|
141
29
|
email:
|
@@ -150,7 +38,6 @@ files:
|
|
150
38
|
- ".rubocop.yml"
|
151
39
|
- ".rubocop_todo.yml"
|
152
40
|
- ".ruby-version"
|
153
|
-
- ".travis.yml"
|
154
41
|
- CHANGELOG.md
|
155
42
|
- CODE_OF_CONDUCT.md
|
156
43
|
- Gemfile
|
@@ -160,7 +47,6 @@ files:
|
|
160
47
|
- Rakefile
|
161
48
|
- bin/console
|
162
49
|
- bin/setup
|
163
|
-
- docs/legacy.md
|
164
50
|
- exe/pdfh
|
165
51
|
- lib/ext/string.rb
|
166
52
|
- lib/pdfh.rb
|
@@ -194,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
80
|
- !ruby/object:Gem::Version
|
195
81
|
version: '0'
|
196
82
|
requirements: []
|
197
|
-
rubygems_version: 3.
|
83
|
+
rubygems_version: 3.2.4
|
198
84
|
signing_key:
|
199
85
|
specification_version: 4
|
200
86
|
summary: Organize PDF files
|