renamr 1.0.3 → 1.0.6

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: 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