renamr 1.0.3 → 1.0.6

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: eb6265009239848244a1e2c0afb669182e1b191e85950c7ea72a00981a8d8025
4
- data.tar.gz: b07631f073ae76b937a53a8de4f5c48ac7f7fe23b99dccb58416d9b51ecf17f5
3
+ metadata.gz: a7d2f86576404f3c74e428b0a69264e22dbd67675e0255aaad242286919bc178
4
+ data.tar.gz: c530689b44dfd307776c98f2e4d7674f2d29ec454373e6886bc3863e47137f13
5
5
  SHA512:
6
- metadata.gz: 3579712ddb5dc5478741d87619d5d19123fdddca384b27cb0447795f9a22601a6ff8a8b6766459fc1be08c75fa700bf7363145ec5162d9ceea65ba7fecae5b7a
7
- data.tar.gz: '086c3f7f2bce22ffe8b6aface8863102f35485eb0f501eaa0578f5c75365207bdbaec8b0fa24967ff9e4c40c3467ff1c25bc5c645ca0bc4bf69cda3285de7e60'
6
+ metadata.gz: cac26d37fc0d75e4442495f9621c2ef177fdf818bdd9d763e3ff5c4db535d5da0e9b18a22a5cf1665e50dafafefa552b1e3e55d3dc9b58933d90db810362ffe8
7
+ data.tar.gz: 5ca1f6f01a3326a3641f9c56f71559432996473e440756d2316f97850e072b080c541d17cf6bfdee9057c3611b19a90b1d5f06e3740c06a714565e393e324ceb
data/Gemfile CHANGED
@@ -6,8 +6,10 @@
6
6
  source 'https://rubygems.org'
7
7
  ruby '~>2.6'
8
8
 
9
+ gem 'date', '2.0.0'
9
10
  gem 'fileutils', '1.4.1'
10
11
  gem 'i18n', '1.8.3'
12
+ gem 'minitest', '5.11.3'
11
13
  gem 'pidfile', '0.3.0'
12
14
  gem 'rake', '13.0.1'
13
15
  gem 'rubocop', '0.76.0'
data/README.md CHANGED
@@ -19,12 +19,12 @@ Version](https://badge.fury.io/rb/renamr.svg)](https://badge.fury.io/rb/renamr)
19
19
  * [License](#license)
20
20
 
21
21
  ## About
22
- Hi, I'm [David Rabkin](https://www.rabkin.co.il). I created this tool to
22
+ Hi, I'm [David Rabkin](http://davi.drabk.in). I created this tool to
23
23
  orginize multiple files.
24
24
 
25
25
  ## Installation
26
26
  The tool is designed to work on macOS, GNU/Linux, Windows, Unix-like OS. It is
27
- packaged as a Gem and require Ruby version 2.4 or later. See «[Installing
27
+ packaged as a Gem and require Ruby version 2.6 or later. See «[Installing
28
28
  Ruby](https://www.ruby-lang.org/en/documentation/installation/)» if you don't
29
29
  have the proper version on your platform.
30
30
 
@@ -61,5 +61,5 @@ It renames all files in `source` by default pattern: 26 English letters,
61
61
  10 numbers, minus for spaces and other symbols.
62
62
 
63
63
  ## License
64
- Renamr is copyright [David Rabkin](http://www.rabkin.co.il/) and
64
+ Renamr is copyright [David Rabkin](http://davi.drabk.in) and
65
65
  available under a [2-Claus BSD license](https://github.com/rdavid/renamr/blob/master/LICENSE).
data/Rakefile CHANGED
@@ -6,5 +6,7 @@
6
6
  task default: %w[test]
7
7
 
8
8
  task :test do
9
- # ruby 'test/unittest.rb'
9
+ ruby 'test/test_char.rb'
10
+ ruby 'test/test_date.rb'
11
+ ruby 'test/test_trim.rb'
10
12
  end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # vi:ts=2 sw=2 tw=79 et lbr wrap
4
+ # Copyright 2020-present David Rabkin
5
+
6
+ require 'date'
7
+ require_relative 'action'
8
+
9
+ module Renamr
10
+ # Replaces any valid date, e.g. 2020-11-02 or 02-11-2020 with 20201102.
11
+ class DateAction < Action
12
+ REG = /(\d+)-(\d+)-(\d+)/.freeze
13
+ PAT = ['%m-%d-%Y', '%d-%m-%Y', '%Y-%m-%d', '%Y-%d-%m'].freeze
14
+
15
+ def validate(dat)
16
+ return nil if dat < Date.new(1900, 1, 1)
17
+
18
+ return nil if dat > Date.new(2099, 1, 1)
19
+
20
+ dat
21
+ end
22
+
23
+ def date(sub)
24
+ PAT.each do |pat|
25
+ begin
26
+ return Date.strptime(sub, pat)
27
+ rescue ArgumentError
28
+ # Nothing to do.
29
+ end
30
+ end
31
+ end
32
+
33
+ def do(src)
34
+ sub = src[REG]
35
+ return src if sub.nil?
36
+
37
+ dat = date(sub)
38
+ return src if dat.nil?
39
+
40
+ dat = validate(dat)
41
+ return src if dat.nil?
42
+
43
+ src.sub!(REG, dat.strftime('%Y%m%d'))
44
+ end
45
+ end
46
+ end
@@ -6,6 +6,7 @@
6
6
  require_relative 'ascii_validator'
7
7
  require_relative 'auto_localization'
8
8
  require_relative 'char'
9
+ require_relative 'date'
9
10
  require_relative 'downcase'
10
11
  require_relative 'existence'
11
12
  require_relative 'manual_localization'
@@ -28,7 +29,7 @@ module Renamr
28
29
  @cfg = cfg
29
30
  end
30
31
 
31
- def produce(dir) # rubocop:disable MethodLength, AbcSize
32
+ def produce(dir) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
32
33
  if @cfg.lim?
33
34
  [
34
35
  OmitAction.new(LIMIT),
@@ -49,7 +50,8 @@ module Renamr
49
50
  ASCIIValidatorAction.new,
50
51
  TrimAction.new,
51
52
  TruncateAction.new(LIMIT),
52
- ExistenceAction.new(dir, LIMIT)
53
+ DateAction.new,
54
+ ExistenceAction.new(dir, LIMIT) # Should be the last.
53
55
  ].compact
54
56
  end
55
57
  end
@@ -4,5 +4,5 @@
4
4
  # Copyright 2018-present David Rabkin
5
5
 
6
6
  module Renamr
7
- VERSION = '1.0.3'
7
+ VERSION = '1.0.6'
8
8
  end
@@ -20,10 +20,12 @@ Gem::Specification.new do |s|
20
20
  s.executables = ['renamr']
21
21
  s.extra_rdoc_files = ['LICENSE.txt', 'README.md']
22
22
  s.require_paths = ['lib']
23
+ s.add_runtime_dependency 'date', '2.0.0'
23
24
  s.add_runtime_dependency 'fileutils', '1.4.1'
24
25
  s.add_runtime_dependency 'i18n', '1.8.3'
25
26
  s.add_runtime_dependency 'pidfile', '0.3.0'
26
27
  s.add_runtime_dependency 'terminal-table', '1.8.0'
28
+ s.add_development_dependency 'minitest', '6.11.3'
27
29
  s.add_development_dependency 'rake', '13.0.1'
28
30
  s.add_development_dependency 'rubocop', '0.85.1'
29
31
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renamr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rabkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-10 00:00:00.000000000 Z
11
+ date: 2020-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: date
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: fileutils
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - '='
67
81
  - !ruby/object:Gem::Version
68
82
  version: 1.8.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 6.11.3
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 6.11.3
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: rake
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -104,7 +132,6 @@ extra_rdoc_files:
104
132
  - README.md
105
133
  files:
106
134
  - Gemfile
107
- - Gemfile.lock
108
135
  - LICENSE.txt
109
136
  - README.md
110
137
  - Rakefile
@@ -116,6 +143,7 @@ files:
116
143
  - lib/renamr/auto_localization.rb
117
144
  - lib/renamr/char.rb
118
145
  - lib/renamr/configurator.rb
146
+ - lib/renamr/date.rb
119
147
  - lib/renamr/downcase.rb
120
148
  - lib/renamr/existence.rb
121
149
  - lib/renamr/factory.rb
@@ -1,43 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- ast (2.4.0)
5
- concurrent-ruby (1.1.6)
6
- fileutils (1.4.1)
7
- i18n (1.8.3)
8
- concurrent-ruby (~> 1.0)
9
- jaro_winkler (1.5.4)
10
- parallel (1.19.1)
11
- parser (2.7.1.3)
12
- ast (~> 2.4.0)
13
- pidfile (0.3.0)
14
- rainbow (3.0.0)
15
- rake (13.0.1)
16
- rubocop (0.76.0)
17
- jaro_winkler (~> 1.5.1)
18
- parallel (~> 1.10)
19
- parser (>= 2.6)
20
- rainbow (>= 2.2.2, < 4.0)
21
- ruby-progressbar (~> 1.7)
22
- unicode-display_width (>= 1.4.0, < 1.7)
23
- ruby-progressbar (1.10.1)
24
- terminal-table (1.8.0)
25
- unicode-display_width (~> 1.1, >= 1.1.1)
26
- unicode-display_width (1.6.1)
27
-
28
- PLATFORMS
29
- ruby
30
-
31
- DEPENDENCIES
32
- fileutils (= 1.4.1)
33
- i18n (= 1.8.3)
34
- pidfile (= 0.3.0)
35
- rake (= 13.0.1)
36
- rubocop (= 0.76.0)
37
- terminal-table (= 1.8.0)
38
-
39
- RUBY VERSION
40
- ruby 2.6.3p62
41
-
42
- BUNDLED WITH
43
- 2.1.4