pdfh 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 375df17076824594d8622b7dd9474ab53400297c5ff4598463b5dac3fea352d2
4
- data.tar.gz: 5174dd71598e65630e78b394f3aa46d2562e9de7d682dcb30cd5695af7a75012
3
+ metadata.gz: a3761420b1befc7788493ed341094bffcf3b6f86bc2f6685f7b4de0a8201752b
4
+ data.tar.gz: 9da09a68dff012c3e22e67581c73b1bf874ed3abd0f9d58be8c760fa37ca6561
5
5
  SHA512:
6
- metadata.gz: 68bed2cab1ef5346e7774d03d66538fcdbdd0ccbc72168359d4e3422a7d39c306de4483dd074483aec6f63d197d7275b072cce080178547b94c6adf2853e81e9
7
- data.tar.gz: 35087b577052e468a97183af2305e3cef5d03fa42d9942d4528701280894dbe290759bc01b124ce54ba5835e7af53a67cbff5438c568cc1d7e0ce4f50bcdaccd
6
+ metadata.gz: 5a9ba91f43fcb3e96469bf1d4499ab9e857211553bebe4732e0d3d287e4fe7946fe635b7f6e345576d69da6b07573acce2794619098d62ae40309c7f3d170f2d
7
+ data.tar.gz: 80a52f67d7c47159918b5cff641f5744022d1400bf71ac9fe6247814a0369e0a2ec8e2915b791a5e85e1107a28d9c64777471aa1ec448aa1ad093ecf83805287
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-3.0.1
1
+ ruby-3.1.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pdfh (0.2.0)
4
+ pdfh (0.2.1)
5
5
  colorize (~> 0.8.0)
6
6
 
7
7
  GEM
@@ -14,18 +14,18 @@ GEM
14
14
  rubocop (~> 1.0)
15
15
  coderay (1.1.3)
16
16
  colorize (0.8.1)
17
- diff-lcs (1.4.4)
17
+ diff-lcs (1.5.0)
18
18
  docile (1.4.0)
19
19
  method_source (1.0.0)
20
- parallel (1.20.1)
21
- parser (3.0.1.1)
20
+ parallel (1.21.0)
21
+ parser (3.1.0.0)
22
22
  ast (~> 2.4.1)
23
23
  pry (0.14.1)
24
24
  coderay (~> 1.1)
25
25
  method_source (~> 1.0)
26
26
  rainbow (3.0.0)
27
- rake (13.0.3)
28
- regexp_parser (2.1.1)
27
+ rake (13.0.6)
28
+ regexp_parser (2.2.0)
29
29
  rexml (3.2.5)
30
30
  rspec (3.10.0)
31
31
  rspec-core (~> 3.10.0)
@@ -39,28 +39,27 @@ GEM
39
39
  rspec-mocks (3.10.2)
40
40
  diff-lcs (>= 1.2.0, < 2.0)
41
41
  rspec-support (~> 3.10.0)
42
- rspec-support (3.10.2)
43
- rspec_junit_formatter (0.4.1)
42
+ rspec-support (3.10.3)
43
+ rspec_junit_formatter (0.5.1)
44
44
  rspec-core (>= 2, < 4, != 2.12.0)
45
- rubocop (1.14.0)
45
+ rubocop (1.24.1)
46
46
  parallel (~> 1.10)
47
47
  parser (>= 3.0.0.0)
48
48
  rainbow (>= 2.2.2, < 4.0)
49
49
  regexp_parser (>= 1.8, < 3.0)
50
50
  rexml
51
- rubocop-ast (>= 1.5.0, < 2.0)
51
+ rubocop-ast (>= 1.15.1, < 2.0)
52
52
  ruby-progressbar (~> 1.7)
53
53
  unicode-display_width (>= 1.4.0, < 3.0)
54
- rubocop-ast (1.5.0)
54
+ rubocop-ast (1.15.1)
55
55
  parser (>= 3.0.1.1)
56
- rubocop-performance (1.11.3)
56
+ rubocop-performance (1.13.1)
57
57
  rubocop (>= 1.7.0, < 2.0)
58
58
  rubocop-ast (>= 0.4.0)
59
- rubocop-rake (0.5.1)
60
- rubocop
61
- rubocop-rspec (2.3.0)
59
+ rubocop-rake (0.6.0)
62
60
  rubocop (~> 1.0)
63
- rubocop-ast (>= 1.1.0)
61
+ rubocop-rspec (2.7.0)
62
+ rubocop (~> 1.19)
64
63
  ruby-progressbar (1.11.0)
65
64
  simplecov (0.21.2)
66
65
  docile (~> 1.1)
@@ -72,9 +71,9 @@ GEM
72
71
  terminal-table
73
72
  simplecov-html (0.12.3)
74
73
  simplecov_json_formatter (0.1.3)
75
- terminal-table (3.0.1)
74
+ terminal-table (3.0.2)
76
75
  unicode-display_width (>= 1.1.1, < 3)
77
- unicode-display_width (2.0.0)
76
+ unicode-display_width (2.1.0)
78
77
  versionomy (0.5.0)
79
78
  blockenspiel (~> 0.5)
80
79
 
data/README.md CHANGED
@@ -41,6 +41,19 @@ document_types:
41
41
  month_offset: -1 # [OPTIONAL] Integer (signed) value to adjust month
42
42
  ```
43
43
 
44
+ Store Path supported placeholders:
45
+ * `{YEAR}` 2022
46
+
47
+ Name Template supported placeholders:
48
+
49
+ * `{original}` Original filename
50
+ * `{period}` 2022-01
51
+ * `{year}` 2022
52
+ * `{month}` 01
53
+ * `{type}` document_type.name
54
+ * `{subtype}` subtype.name if matched
55
+ * `{extra}` day if provided/matched
56
+
44
57
  ## Development
45
58
 
46
59
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -68,5 +81,5 @@ The gem is available as open source under the terms of the [MIT License](https:/
68
81
  Everyone interacting in the Pdfh project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/iax7/pdfh/blob/master/CODE_OF_CONDUCT.md).
69
82
 
70
83
  <!-- Links -->
71
- [ruby-badge]: https://img.shields.io/badge/ruby-3.0.1-blue?style=flat&logo=ruby&logoColor=CC342D&labelColor=white
84
+ [ruby-badge]: https://img.shields.io/badge/ruby-3.1.0-blue?style=flat&logo=ruby&logoColor=CC342D&labelColor=white
72
85
  [ruby-url]: https://www.ruby-lang.org/en/
data/lib/pdfh/document.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Pdfh
4
4
  # Handles the PDF detected by the rules
5
5
  class Document
6
- attr_reader :text, :type, :file, :extra, :pdf_doc
6
+ attr_reader :text, :type, :file, :extra, :pdf_doc, :period
7
7
 
8
8
  # @param file [String]
9
9
  # @param type [DocumentType]
@@ -13,7 +13,7 @@ module Pdfh
13
13
 
14
14
  @file = file
15
15
  @type = type
16
- Pdfh.verbose_print "=== Type: #{type.name} =============================="
16
+ Pdfh.verbose_print "=== Document Type: #{type.name} =============================="
17
17
  @pdf_doc = PdfHandler.new(file, type.pwd)
18
18
  @text = @pdf_doc.extract_text
19
19
  Pdfh.verbose_print "~~~~~~~~~~~~~~~~~~ Finding a subtype"
@@ -51,17 +51,14 @@ module Pdfh
51
51
  @sub_type&.name&.titleize || "N/A"
52
52
  end
53
53
 
54
- # @return [String]
55
- def period
56
- @period.to_s
57
- end
58
-
59
54
  # @return [String]
60
55
  def new_name
61
56
  template = @type.name_template
62
57
  new_name = template
63
58
  .sub("{original}", file_name_only)
64
- .sub("{period}", period)
59
+ .sub("{period}", period.to_s)
60
+ .sub("{year}", period.year.to_s)
61
+ .sub("{month}", period.month.to_s)
65
62
  .sub("{type}", type_name)
66
63
  .sub("{subtype}", sub_type)
67
64
  .sub("{extra}", extra || "")
@@ -70,7 +67,7 @@ module Pdfh
70
67
 
71
68
  # @return [String]
72
69
  def store_path
73
- @type.store_path.gsub("{YEAR}", @period.year.to_s)
70
+ @type.store_path.gsub("{YEAR}", period.year.to_s)
74
71
  end
75
72
 
76
73
  # @return [String]
@@ -103,7 +100,7 @@ module Pdfh
103
100
  # unnamed matches needs to be in order month, year
104
101
  # @return [Array] - format [month, year, day]
105
102
  def match_data
106
- Pdfh.verbose_print "~~~~~~~~~~~~~~~~~~ RegEx"
103
+ Pdfh.verbose_print "~~~~~~~~~~~~~~~~~~ Match Data RegEx"
107
104
  Pdfh.verbose_print " Using regex: #{@type.re_date}"
108
105
  Pdfh.verbose_print " named: #{@type.re_date.named_captures}"
109
106
  matched = @type.re_date.match(@text)
@@ -24,9 +24,14 @@ module Pdfh
24
24
  @year = (year.size == 2 ? "20#{year}" : year).to_i + year_offset
25
25
  end
26
26
 
27
- # @return [String]
27
+ # @return [String (frozen)]
28
28
  def to_s
29
29
  "#{year}-#{month.to_s.rjust(2, "0")}"
30
30
  end
31
+
32
+ # @return [String (frozen)]
33
+ def inspect
34
+ "<#{self.class} year=#{year} month=#{month}>"
35
+ end
31
36
  end
32
37
  end
@@ -11,7 +11,7 @@ module Pdfh
11
11
  Pdfh.verbose = options[:verbose]
12
12
  Pdfh.dry = options[:dry]
13
13
  Pdfh.verbose_print(options)
14
- @mode = options.key?(:type) ? :file : :directory
14
+ Pdfh.mode = options.key?(:type) ? :file : :directory
15
15
  end
16
16
 
17
17
  # @return [void]
@@ -19,7 +19,7 @@ module Pdfh
19
19
  @settings = Settings.new(Pdfh.search_config_file)
20
20
  puts "Destination path: #{@settings.base_path.colorize(:light_blue)}" if Pdfh.verbose?
21
21
 
22
- @mode == :file ? process_files : process_lookup_dirs
22
+ Pdfh.file_mode? ? process_files : process_lookup_dirs
23
23
  rescue SettingsIOError => e
24
24
  Pdfh.error_print(e.message, exit_app: false)
25
25
  Pdfh.create_settings_file
@@ -53,6 +53,7 @@ module Pdfh
53
53
  raise ArgumentError, "No files provided to process #{type_id.inspect} type." unless options[:files]
54
54
 
55
55
  type = doc_type_by_id(type_id)
56
+ Pdfh.error_print "Type #{type_id.inspect} was not found." if type.nil?
56
57
  puts
57
58
  options[:files].each do |file|
58
59
  unless File.exist?(file)
@@ -109,7 +110,7 @@ module Pdfh
109
110
  Pdfh.ident_print "Type", type.name, color: :light_blue, width: pad
110
111
  doc = Document.new(file, type)
111
112
  Pdfh.ident_print "Sub-Type", doc.sub_type, color: :light_blue, width: pad
112
- Pdfh.ident_print "Period", doc.period, color: :light_blue, width: pad
113
+ Pdfh.ident_print "Period", doc.period.to_s, color: :light_blue, width: pad
113
114
  Pdfh.ident_print "New Name", doc.new_name, color: :light_blue, width: pad
114
115
  Pdfh.ident_print "Store Path", doc.store_path, color: :light_blue, width: pad
115
116
  Pdfh.ident_print "Other files", doc.companion_files(join: true), color: :light_blue, width: pad
data/lib/pdfh/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pdfh
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
data/lib/pdfh.rb CHANGED
@@ -21,13 +21,13 @@ module Pdfh
21
21
 
22
22
  # Regular Date Error, when there is not match
23
23
  class ReDateError < StandardError
24
- def initialize(msg = "No data matched your date regular expression")
24
+ def initialize(msg = "Date regular expression did not find a match in document.")
25
25
  super
26
26
  end
27
27
  end
28
28
 
29
29
  class << self
30
- attr_writer :verbose, :dry
30
+ attr_writer :verbose, :dry, :mode
31
31
 
32
32
  # @return [Boolean]
33
33
  def verbose?
@@ -39,6 +39,11 @@ module Pdfh
39
39
  @dry
40
40
  end
41
41
 
42
+ # @return [Boolean]
43
+ def file_mode?
44
+ @mode == :file
45
+ end
46
+
42
47
  # Returns rows, cols
43
48
  # TODO: review https://gist.github.com/nixpulvis/6025433
44
49
  # @return [Array<Integer, Integer>]
@@ -108,9 +113,7 @@ module Pdfh
108
113
  full_path = File.join(File.expand_path("~"), "#{config_file_name}.yml")
109
114
  return if File.exist?(full_path) # double check
110
115
 
111
- File.open(full_path, "w") do |f|
112
- f.write Pdfh::SETTINGS_TEMPLATE.to_yaml
113
- end
116
+ File.write(full_path, Pdfh::SETTINGS_TEMPLATE.to_yaml)
114
117
  puts "Settings #{full_path.inspect.colorize(:green)} was created."
115
118
  end
116
119
 
@@ -128,7 +131,7 @@ module Pdfh
128
131
  end
129
132
 
130
133
  raise SettingsIOError, "no configuration file (#{names_to_look.join(" or ")}) was found\n"\
131
- " within paths: #{dir_order.join(", ")}"
134
+ " within paths: #{dir_order.join(", ")}"
132
135
  end
133
136
  end
134
137
  end
data/pdfh.gemspec CHANGED
@@ -36,4 +36,5 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  # For more information and examples about making a new gem, checkout our
38
38
  # guide at: https://bundler.io/guides/creating_gem.html
39
+ spec.metadata["rubygems_mfa_required"] = "true"
39
40
  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.2.0
4
+ version: 0.2.1
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: 2021-05-15 00:00:00.000000000 Z
11
+ date: 2022-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -70,6 +70,7 @@ metadata:
70
70
  homepage_uri: https://github.com/iax7/pdfh
71
71
  source_code_uri: https://github.com/iax7/pdfh
72
72
  changelog_uri: https://github.com/iax7/CHANGELOG.md
73
+ rubygems_mfa_required: 'true'
73
74
  post_install_message:
74
75
  rdoc_options: []
75
76
  require_paths:
@@ -85,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
86
  - !ruby/object:Gem::Version
86
87
  version: '0'
87
88
  requirements: []
88
- rubygems_version: 3.2.15
89
+ rubygems_version: 3.3.3
89
90
  signing_key:
90
91
  specification_version: 4
91
92
  summary: Organize PDF files