filter_rename 1.1.0 → 1.2.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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +5 -3
- data/.github/workflows/gem-push.yml +46 -0
- data/.github/workflows/main.yml +32 -0
- data/.rubocop.yml +84 -0
- data/Gemfile +15 -1
- data/README.md +83 -39
- data/Rakefile +7 -1
- data/exe/filter_rename +1 -1
- data/filter_rename.gemspec +23 -25
- data/lib/filter_rename/cli.rb +121 -61
- data/lib/filter_rename/config.rb +218 -49
- data/lib/filter_rename/filename.rb +50 -39
- data/lib/filter_rename/filename_factory.rb +22 -17
- data/lib/filter_rename/filetype/audio_filename.rb +86 -0
- data/lib/filter_rename/filetype/image_filename.rb +18 -12
- data/lib/filter_rename/filetype/mp3_filename.rb +18 -18
- data/lib/filter_rename/filetype/pdf_filename.rb +19 -12
- data/lib/filter_rename/filter_base.rb +89 -69
- data/lib/filter_rename/filter_pipe.rb +20 -15
- data/lib/filter_rename/filters.rb +570 -273
- data/lib/filter_rename/utils.rb +288 -117
- data/lib/filter_rename/version.rb +3 -1
- data/lib/filter_rename.rb +95 -32
- data/lib/filter_rename.yaml +20 -10
- metadata +28 -41
data/lib/filter_rename.rb
CHANGED
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
9
|
-
require
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "fileutils"
|
|
4
|
+
require "filter_rename/version"
|
|
5
|
+
require "filter_rename/config"
|
|
6
|
+
require "filter_rename/filter_base"
|
|
7
|
+
require "filter_rename/filters"
|
|
8
|
+
require "filter_rename/filter_pipe"
|
|
9
|
+
require "filter_rename/filename"
|
|
10
|
+
require "filter_rename/filename_factory"
|
|
11
|
+
require "filter_rename/utils"
|
|
10
12
|
|
|
11
13
|
module FilterRename
|
|
12
|
-
|
|
14
|
+
#
|
|
15
|
+
# Facade class for all the operations.
|
|
16
|
+
#
|
|
13
17
|
class Builder
|
|
14
|
-
|
|
15
18
|
def initialize(options)
|
|
16
19
|
@cfg = Config.new(options.global)
|
|
17
20
|
@filters = FilterList.new(options.filters)
|
|
18
21
|
@files = options.files
|
|
19
22
|
@show_macro = options.show_macro
|
|
23
|
+
@help_config = options.help_config
|
|
20
24
|
end
|
|
21
25
|
|
|
22
|
-
def
|
|
26
|
+
def diff
|
|
27
|
+
expand_files!
|
|
23
28
|
raise MissingFiles if @files.empty?
|
|
24
29
|
|
|
25
30
|
@filters.expand_macros!(@cfg.macro)
|
|
26
31
|
|
|
27
|
-
Messages.label "
|
|
32
|
+
Messages.label "Diff:"
|
|
28
33
|
|
|
29
34
|
@files.each do |src|
|
|
30
35
|
fp = FilterPipe.new(src, @filters, @cfg).apply
|
|
@@ -33,13 +38,16 @@ module FilterRename
|
|
|
33
38
|
end
|
|
34
39
|
|
|
35
40
|
def apply
|
|
41
|
+
expand_files!
|
|
36
42
|
raise MissingFiles if @files.empty?
|
|
37
43
|
|
|
38
44
|
@filters.expand_macros!(@cfg.macro)
|
|
45
|
+
renamed = 0
|
|
46
|
+
skipped = 0
|
|
47
|
+
errors = 0
|
|
39
48
|
|
|
40
49
|
Messages.label "Apply:"
|
|
41
50
|
@files.each do |src|
|
|
42
|
-
|
|
43
51
|
fp = FilterPipe.new(src, @filters, @cfg).apply
|
|
44
52
|
|
|
45
53
|
if fp.changed?
|
|
@@ -47,94 +55,149 @@ module FilterRename
|
|
|
47
55
|
|
|
48
56
|
if old_data[:full_filename]
|
|
49
57
|
Messages.renamed!(old_data, fp.dest)
|
|
50
|
-
Messages.changed_tags(fp, old_data, false) if fp.source.class.
|
|
51
|
-
|
|
58
|
+
Messages.changed_tags(fp, old_data, header: false) if fp.source.class.writable_tags?
|
|
59
|
+
renamed += 1
|
|
60
|
+
elsif fp.source.class.writable_tags?
|
|
52
61
|
Messages.changed_tags(fp, old_data)
|
|
62
|
+
renamed += 1
|
|
53
63
|
else
|
|
54
64
|
Messages.file_exists(fp)
|
|
55
65
|
Messages.file_hash(fp, @cfg.global.hash_type) if @cfg.global.hash_if_exists
|
|
66
|
+
errors += 1
|
|
56
67
|
end
|
|
57
|
-
|
|
58
68
|
else
|
|
59
69
|
Messages.skipping(fp)
|
|
70
|
+
skipped += 1
|
|
60
71
|
end
|
|
61
72
|
end
|
|
73
|
+
Messages.renaming_summary(renamed, skipped, errors)
|
|
62
74
|
end
|
|
63
75
|
|
|
64
76
|
def globals
|
|
65
|
-
Messages.label
|
|
77
|
+
Messages.label "Global configurations:"
|
|
66
78
|
Messages.config_list @cfg.global
|
|
67
79
|
end
|
|
68
80
|
|
|
69
81
|
def configs
|
|
70
|
-
Messages.label
|
|
82
|
+
Messages.label "Filter's configurations:"
|
|
71
83
|
Messages.config_list @cfg.filter
|
|
72
84
|
end
|
|
73
85
|
|
|
74
86
|
def words
|
|
75
|
-
Messages.label
|
|
87
|
+
Messages.label "Groups and subgroups of words available for translation:"
|
|
76
88
|
Messages.config_multilist @cfg.words
|
|
77
89
|
end
|
|
78
90
|
|
|
79
91
|
def dry_run
|
|
92
|
+
expand_files!
|
|
80
93
|
raise MissingFiles if @files.empty?
|
|
81
94
|
|
|
82
95
|
@filters.expand_macros!(@cfg.macro)
|
|
83
96
|
cache = {}
|
|
97
|
+
renamed = 0
|
|
98
|
+
skipped = 0
|
|
99
|
+
errors = 0
|
|
84
100
|
|
|
85
101
|
Messages.label "Dry Run:"
|
|
86
102
|
@files.each do |src|
|
|
87
|
-
|
|
88
103
|
fp = FilterPipe.new(src, @filters, @cfg).apply
|
|
89
104
|
|
|
90
105
|
if fp.unchanged?
|
|
91
106
|
Messages.skipping(fp)
|
|
92
|
-
|
|
107
|
+
skipped += 1
|
|
108
|
+
elsif cache.keys.include?(fp.dest.full_filename) || fp.dest.exists?
|
|
93
109
|
if fp.source.full_filename == fp.dest.full_filename
|
|
94
110
|
Messages.changed_tags(fp)
|
|
95
111
|
else
|
|
96
112
|
Messages.file_exists(fp)
|
|
97
113
|
Messages.file_hash(fp, @cfg.global.hash_type, cache[fp.dest.full_filename]) if @cfg.global.hash_if_exists
|
|
114
|
+
errors += 1
|
|
98
115
|
end
|
|
99
116
|
else
|
|
100
117
|
Messages.renamed(fp)
|
|
101
|
-
Messages.changed_tags(fp, {}, false) if fp.source.class.
|
|
118
|
+
Messages.changed_tags(fp, {}, header: false) if fp.source.class.writable_tags?
|
|
102
119
|
cache[fp.dest.full_filename] = fp.dest
|
|
120
|
+
renamed += 1
|
|
103
121
|
end
|
|
104
122
|
end
|
|
123
|
+
Messages.renaming_summary(renamed, skipped, errors)
|
|
105
124
|
end
|
|
106
125
|
|
|
107
126
|
def targets
|
|
127
|
+
expand_files!
|
|
108
128
|
raise MissingFiles if @files.empty?
|
|
109
129
|
|
|
110
|
-
|
|
130
|
+
view = @cfg.global.inline_targets ? :inline_targets : :column_targets
|
|
131
|
+
Messages.label "Targets:"
|
|
111
132
|
@files.each do |src|
|
|
133
|
+
fname = FilenameFactory.create(src, @cfg.global)
|
|
134
|
+
|
|
135
|
+
Messages.multi fname.full_filename
|
|
136
|
+
Messages.send(view, fname)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def values
|
|
141
|
+
expand_files!
|
|
142
|
+
raise MissingFiles if @files.empty?
|
|
112
143
|
|
|
144
|
+
view = @cfg.global.inline_targets ? :inline_target_values : :column_target_values
|
|
145
|
+
Messages.label "Target values:"
|
|
146
|
+
@files.each do |src|
|
|
113
147
|
fname = FilenameFactory.create(src, @cfg.global)
|
|
114
148
|
|
|
115
149
|
Messages.multi fname.full_filename
|
|
116
|
-
Messages.send(
|
|
150
|
+
Messages.send(view, fname)
|
|
117
151
|
end
|
|
118
152
|
end
|
|
119
153
|
|
|
120
154
|
def macros
|
|
121
|
-
Messages.label
|
|
122
|
-
Messages.list @cfg.macro.
|
|
155
|
+
Messages.label "Macros:"
|
|
156
|
+
Messages.list @cfg.macro.macros
|
|
123
157
|
end
|
|
124
158
|
|
|
125
159
|
def show_macro
|
|
126
160
|
Messages.label "Macro: #{@show_macro}"
|
|
127
161
|
macro = @cfg.macro.get_macro(@show_macro)
|
|
128
|
-
if macro.
|
|
162
|
+
if macro.instance_of?(Array)
|
|
129
163
|
macro.each do |k|
|
|
130
|
-
Messages.item k.keys.first
|
|
164
|
+
Messages.item "#{k.keys.first}: " + k.values.first.map { |x| "\"#{x.to_s.green}\"" }.join(",")
|
|
131
165
|
end
|
|
132
|
-
elsif macro.
|
|
166
|
+
elsif macro.instance_of?(Hash)
|
|
133
167
|
macro.each do |k, v|
|
|
134
|
-
Messages.item k
|
|
168
|
+
Messages.item "#{k}: " + v.map { |x| "\"#{x.to_s.green}\"" }.join(", ")
|
|
135
169
|
end
|
|
136
170
|
end
|
|
137
171
|
end
|
|
138
|
-
end
|
|
139
172
|
|
|
173
|
+
def help_config
|
|
174
|
+
name = @help_config.downcase.gsub("-", "_").gsub(/^--/, "")
|
|
175
|
+
|
|
176
|
+
if name =~ /^g_/
|
|
177
|
+
name = name.gsub(/^g_/, "")
|
|
178
|
+
@help_config = GlobalConfig::OPTIONS[name.to_sym]
|
|
179
|
+
elsif @help_config =~ /^f_/
|
|
180
|
+
name = name.gsub(/^f_/, "")
|
|
181
|
+
@help_config = FilterConfig::OPTIONS[name.to_sym]
|
|
182
|
+
elsif FilterConfig::OPTIONS.key?(name.to_sym)
|
|
183
|
+
@help_config = FilterConfig::OPTIONS[name.to_sym]
|
|
184
|
+
elsif GlobalConfig::OPTIONS.key?(name.to_sym)
|
|
185
|
+
@help_config = GlobalConfig::OPTIONS[name.to_sym]
|
|
186
|
+
else
|
|
187
|
+
raise InvalidOption, name
|
|
188
|
+
end
|
|
189
|
+
Messages.help_option name, @help_config
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
private
|
|
193
|
+
|
|
194
|
+
def expand_files!
|
|
195
|
+
@files = @files.map do |f|
|
|
196
|
+
f = File.expand_path(f.chomp)
|
|
197
|
+
raise FileNotFound, f if @cfg.global.check_source && !File.exist?(f)
|
|
198
|
+
|
|
199
|
+
f
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
140
203
|
end
|
data/lib/filter_rename.yaml
CHANGED
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
:date_format: '%Y-%m-%d'
|
|
7
7
|
:counter_length: 3
|
|
8
8
|
:counter_start: 0
|
|
9
|
-
:
|
|
10
|
-
:pdf_metadata:
|
|
11
|
-
:image_metadata:
|
|
9
|
+
:inline_targets: true
|
|
10
|
+
:pdf_metadata: true
|
|
11
|
+
:image_metadata: true
|
|
12
|
+
:audio_metadata: true
|
|
13
|
+
:mimemagic: true
|
|
14
|
+
:essential_tags: false
|
|
15
|
+
:check_source: true
|
|
12
16
|
:filter:
|
|
13
17
|
:lang: :en
|
|
14
18
|
:word_separator: " "
|
|
@@ -17,7 +21,7 @@
|
|
|
17
21
|
:target: :name
|
|
18
22
|
:ignore_case: true
|
|
19
23
|
:grep: '.*'
|
|
20
|
-
:
|
|
24
|
+
:grep_on_dest: false
|
|
21
25
|
:grep_exclude: false
|
|
22
26
|
# full_filename, :full_path, :filename, <target>
|
|
23
27
|
:grep_target: :full_filename
|
|
@@ -31,6 +35,12 @@
|
|
|
31
35
|
:fr: ['Salut']
|
|
32
36
|
:es: ['Hola']
|
|
33
37
|
:pt: ['Olá']
|
|
38
|
+
:months:
|
|
39
|
+
:short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
|
40
|
+
:long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
|
41
|
+
:days:
|
|
42
|
+
:short: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
|
43
|
+
:long: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
|
|
34
44
|
:short_months:
|
|
35
45
|
:en: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
|
36
46
|
:it: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
|
|
@@ -74,32 +84,32 @@
|
|
|
74
84
|
:squeeze:
|
|
75
85
|
- ' '
|
|
76
86
|
-
|
|
77
|
-
:
|
|
87
|
+
:translate:
|
|
78
88
|
- :long_months
|
|
79
89
|
- :it
|
|
80
90
|
- :en
|
|
81
91
|
-
|
|
82
|
-
:
|
|
92
|
+
:translate:
|
|
83
93
|
- :long_months
|
|
84
94
|
- :es
|
|
85
95
|
- :en
|
|
86
96
|
-
|
|
87
|
-
:
|
|
97
|
+
:translate:
|
|
88
98
|
- :long_months
|
|
89
99
|
- :fr
|
|
90
100
|
- :en
|
|
91
101
|
-
|
|
92
|
-
:
|
|
102
|
+
:translate:
|
|
93
103
|
- :long_months
|
|
94
104
|
- :de
|
|
95
105
|
- :en
|
|
96
106
|
-
|
|
97
|
-
:
|
|
107
|
+
:translate:
|
|
98
108
|
- :long_months
|
|
99
109
|
- :hr
|
|
100
110
|
- :en
|
|
101
111
|
-
|
|
102
|
-
:
|
|
112
|
+
:translate:
|
|
103
113
|
- :long_months
|
|
104
114
|
- :pt
|
|
105
115
|
- :en
|
metadata
CHANGED
|
@@ -1,59 +1,44 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: filter_rename
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fabio Mucciante
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '2.0'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '2.0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rake
|
|
13
|
+
name: differ
|
|
29
14
|
requirement: !ruby/object:Gem::Requirement
|
|
30
15
|
requirements:
|
|
31
|
-
- - "
|
|
16
|
+
- - ">="
|
|
32
17
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
34
|
-
type: :
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
35
20
|
prerelease: false
|
|
36
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
22
|
requirements:
|
|
38
|
-
- - "
|
|
23
|
+
- - ">="
|
|
39
24
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
25
|
+
version: '0'
|
|
41
26
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
27
|
+
name: exiv2
|
|
43
28
|
requirement: !ruby/object:Gem::Requirement
|
|
44
29
|
requirements:
|
|
45
|
-
- - "
|
|
30
|
+
- - ">="
|
|
46
31
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
48
|
-
type: :
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
49
34
|
prerelease: false
|
|
50
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
36
|
requirements:
|
|
52
|
-
- - "
|
|
37
|
+
- - ">="
|
|
53
38
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
39
|
+
version: '0'
|
|
55
40
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
41
|
+
name: fastimage
|
|
57
42
|
requirement: !ruby/object:Gem::Requirement
|
|
58
43
|
requirements:
|
|
59
44
|
- - ">="
|
|
@@ -67,7 +52,7 @@ dependencies:
|
|
|
67
52
|
- !ruby/object:Gem::Version
|
|
68
53
|
version: '0'
|
|
69
54
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
55
|
+
name: keisan
|
|
71
56
|
requirement: !ruby/object:Gem::Requirement
|
|
72
57
|
requirements:
|
|
73
58
|
- - ">="
|
|
@@ -81,7 +66,7 @@ dependencies:
|
|
|
81
66
|
- !ruby/object:Gem::Version
|
|
82
67
|
version: '0'
|
|
83
68
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
69
|
+
name: mimemagic
|
|
85
70
|
requirement: !ruby/object:Gem::Requirement
|
|
86
71
|
requirements:
|
|
87
72
|
- - ">="
|
|
@@ -95,7 +80,7 @@ dependencies:
|
|
|
95
80
|
- !ruby/object:Gem::Version
|
|
96
81
|
version: '0'
|
|
97
82
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
83
|
+
name: mp3info
|
|
99
84
|
requirement: !ruby/object:Gem::Requirement
|
|
100
85
|
requirements:
|
|
101
86
|
- - ">="
|
|
@@ -109,7 +94,7 @@ dependencies:
|
|
|
109
94
|
- !ruby/object:Gem::Version
|
|
110
95
|
version: '0'
|
|
111
96
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
97
|
+
name: pdf-reader
|
|
113
98
|
requirement: !ruby/object:Gem::Requirement
|
|
114
99
|
requirements:
|
|
115
100
|
- - ">="
|
|
@@ -123,7 +108,7 @@ dependencies:
|
|
|
123
108
|
- !ruby/object:Gem::Version
|
|
124
109
|
version: '0'
|
|
125
110
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
111
|
+
name: taglib-ruby
|
|
127
112
|
requirement: !ruby/object:Gem::Requirement
|
|
128
113
|
requirements:
|
|
129
114
|
- - ">="
|
|
@@ -147,8 +132,11 @@ extensions: []
|
|
|
147
132
|
extra_rdoc_files: []
|
|
148
133
|
files:
|
|
149
134
|
- ".github/FUNDING.yml"
|
|
135
|
+
- ".github/workflows/gem-push.yml"
|
|
136
|
+
- ".github/workflows/main.yml"
|
|
150
137
|
- ".gitignore"
|
|
151
138
|
- ".rspec"
|
|
139
|
+
- ".rubocop.yml"
|
|
152
140
|
- ".travis.yml"
|
|
153
141
|
- CODE_OF_CONDUCT.md
|
|
154
142
|
- Gemfile
|
|
@@ -165,6 +153,7 @@ files:
|
|
|
165
153
|
- lib/filter_rename/config.rb
|
|
166
154
|
- lib/filter_rename/filename.rb
|
|
167
155
|
- lib/filter_rename/filename_factory.rb
|
|
156
|
+
- lib/filter_rename/filetype/audio_filename.rb
|
|
168
157
|
- lib/filter_rename/filetype/image_filename.rb
|
|
169
158
|
- lib/filter_rename/filetype/mp3_filename.rb
|
|
170
159
|
- lib/filter_rename/filetype/pdf_filename.rb
|
|
@@ -178,12 +167,11 @@ licenses:
|
|
|
178
167
|
- GPL-3.0
|
|
179
168
|
metadata:
|
|
180
169
|
bug_tracker_uri: https://github.com/fabiomux/filter_rename/issues
|
|
181
|
-
changelog_uri: https://freeaptitude.altervista.org/projects/filter-rename.htm#changelog
|
|
182
|
-
documentation_uri: https://www.rubydoc.info/gems/filter_rename/1.1.0
|
|
183
170
|
homepage_uri: https://freeaptitude.altervista.org/projects/filter-rename.html
|
|
184
171
|
source_code_uri: https://github.com/fabiomux/filter_rename
|
|
172
|
+
changelog_uri: https://freeaptitude.altervista.org/projects/filter-rename.html#changelog
|
|
185
173
|
wiki_uri: https://github.com/fabiomux/filter_rename/wiki
|
|
186
|
-
|
|
174
|
+
rubygems_mfa_required: 'true'
|
|
187
175
|
rdoc_options: []
|
|
188
176
|
require_paths:
|
|
189
177
|
- lib
|
|
@@ -191,15 +179,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
191
179
|
requirements:
|
|
192
180
|
- - ">="
|
|
193
181
|
- !ruby/object:Gem::Version
|
|
194
|
-
version:
|
|
182
|
+
version: 2.5.0
|
|
195
183
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
184
|
requirements:
|
|
197
185
|
- - ">="
|
|
198
186
|
- !ruby/object:Gem::Version
|
|
199
187
|
version: '0'
|
|
200
188
|
requirements: []
|
|
201
|
-
rubygems_version: 3.
|
|
202
|
-
signing_key:
|
|
189
|
+
rubygems_version: 3.6.7
|
|
203
190
|
specification_version: 4
|
|
204
191
|
summary: File renaming tool which make use of a chain of actions called filters.
|
|
205
192
|
test_files: []
|