Class: Fixnames::Option
- Inherits:
-
Object
- Object
- Fixnames::Option
- Defined in:
- lib/fixnames/option.rb
Constant Summary collapse
- MAX_FILTER_LOOPS =
the maximum number of times we will allow a filter to be applied before giving up and moving on to the next
6
- SETUP_FILTERS =
filters that MUST run early
[ :expunge, :brackets ]
- FLAG_FILTERS =
filters that only accept a simple boolean on/off
[ :hack_and, :and_to_dash, :checksums, :banners, :semicolon, :camelcase, :lowercase, :fix_dots, :fix_dashes, :fix_numsep ]
- CHAR_FILTERS =
filters that accept character ranges
[ :junkwords, :charstrip, :whitespace ]
- LATE_FILTERS =
filters that MUST run after everything else
[ :fix_numsep ]
- DEFAULT_FILTER_ORDER =
standard order to apply the filters
[ SETUP_FILTERS, FLAG_FILTERS, CHAR_FILTERS, LATE_FILTERS ].flatten
- DEFAULT_DIR_GLOB =
'*'
- DEFAULT_MENDSTR =
''
- DEFAULT_WHITESPACE =
" \t_"
- DEFAULT_BRACKET_CHARACTERS_OPEN =
'[({<'
- DEFAULT_BRACKET_CHARACTERS_CLOSE =
'])}>'
- DEFAULT_CHARSTRIP =
"[]{}'\",()+!~@#/\\<>"
- DEFAULT_JUNKWORDS =
[ 'x264', 'hdtv', '2hd', '720p', 'dvdrip']
- DEFAULT_BANNER_TYPES =
[ 'xxx', 'dvdrip', 'dual_audio', 'xvid', 'h264', 'divx' ]
Class Method Summary collapse
-
.mkopt(name, types, default_val) ⇒ Object
Creates an option.
Instance Method Summary collapse
- #all_flags=(val) ⇒ Object
-
#and_to_dash ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#banner_types ⇒ Array
The list of strings to find for removal in Filters#banners default: ‘DEFAULT_BANNER_TYPES`.
-
#banners ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#bracket_characters_close ⇒ String
What is considered a close bracket in things like #checksums or #brackets default: ‘DEFAULT_BRACKET_CHARACTERS_CLOSE`.
-
#bracket_characters_open ⇒ String
What is considered an open bracket in things like #checksums or #brackets default: ‘DEFAULT_BRACKET_CHARACTERS_OPEN`.
-
#brackets ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#camelcase ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#charstrip ⇒ String
default: ‘DEFAULT_CHARSTRIP`.
-
#charstrip_allow_brackets ⇒ [TrueClass, FalseClass]
Set to true to have Filters#charstrip ignore its default behavior and allow the brackets through.
-
#checksums ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#dir_glob ⇒ String
When #recursive is set, use this pattern to glob each directory for files.
-
#expunge ⇒ String
A generic pattern to remove from all filenames.
- #expunge_common_prefix! ⇒ Object
-
#filter_order ⇒ Array
The order we should apply the filter to the filename.
-
#fix_dashes ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#fix_dots ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#fix_numsep ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#hack_and ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#junkwords ⇒ Array
default: ‘DEFAULT_JUNKWORDS`.
-
#lowercase ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#max_filter_loops ⇒ Integer
default: ‘MAX_FILTER_LOOPS`.
-
#mendstr ⇒ String
After we #expunge a pattern, it is replaced with this string.
-
#nocolor ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#pretend ⇒ [TrueClass, FalseClass]
if set, we just pretend to work, and skip the final move command, so the filesystem is never altered default: ‘false`.
-
#recursive ⇒ [TrueClass, FalseClass]
Recursively descend into directories if true.
-
#semicolon ⇒ [TrueClass, FalseClass]
default: ‘false`.
-
#verbose ⇒ Integer
Verbosity levels.
-
#whitespace ⇒ String
default: ‘DEFAULT_WHITESPACE`.
Class Method Details
.mkopt(name, types, default_val) ⇒ Object
Creates an option
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/fixnames/option.rb', line 64 def self.mkopt(name, types, default_val) types = [types] unless types.is_a?(Array) var = "@#{name}" define_method "valid_for_#{name}?" do |value| value = nil if value == false return true if value.nil? return true if value == '' types.map do |type| value.is_a?(type) end.reduce(false) do |t,x| t || x end end define_method name do |*args| unless instance_variable_defined?(var) instance_variable_set(var, default_val) end if args.length == 1 unless send("valid_for_#{name}?", args[0]) raise ArgumentError, "bad type for option" end instance_variable_set(var, args[0]) end instance_variable_get(var) end define_method "#{name}=" do |value| unless send("valid_for_#{name}?", value) raise ArgumentError, "bad type for option" end instance_variable_set(var, value) end end |
Instance Method Details
#all_flags=(val) ⇒ Object
206 207 208 209 210 |
# File 'lib/fixnames/option.rb', line 206 def all_flags=(val) Fixnames::Option::FLAG_FILTERS.each do |f| send(f, val) end end |
#and_to_dash ⇒ [TrueClass, FalseClass] #and_to_dash(new_value) ⇒ [TrueClass, FalseClass] #and_to_dash=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#hack_and
default: ‘false`
140 |
# File 'lib/fixnames/option.rb', line 140 mkopt :and_to_dash, [TrueClass, FalseClass], false |
#banner_types ⇒ Array #banner_types(new_value) ⇒ Array #banner_types=(new_value) ⇒ Array
The list of strings to find for removal in Filters#banners default: ‘DEFAULT_BANNER_TYPES`
179 |
# File 'lib/fixnames/option.rb', line 179 mkopt :banner_types, Array, DEFAULT_BANNER_TYPES |
#banners ⇒ [TrueClass, FalseClass] #banners(new_value) ⇒ [TrueClass, FalseClass] #banners=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#banners
default: ‘false`
146 |
# File 'lib/fixnames/option.rb', line 146 mkopt :banners, [TrueClass, FalseClass], false |
#bracket_characters_close ⇒ String #bracket_characters_close(new_value) ⇒ String #bracket_characters_close=(new_value) ⇒ String
What is considered a close bracket in things like #checksums or #brackets default: ‘DEFAULT_BRACKET_CHARACTERS_CLOSE`
192 |
# File 'lib/fixnames/option.rb', line 192 mkopt :bracket_characters_close, String, DEFAULT_BRACKET_CHARACTERS_CLOSE |
#bracket_characters_open ⇒ String #bracket_characters_open(new_value) ⇒ String #bracket_characters_open=(new_value) ⇒ String
What is considered an open bracket in things like #checksums or #brackets default: ‘DEFAULT_BRACKET_CHARACTERS_OPEN`
188 |
# File 'lib/fixnames/option.rb', line 188 mkopt :bracket_characters_open, String, DEFAULT_BRACKET_CHARACTERS_OPEN |
#brackets ⇒ [TrueClass, FalseClass] #brackets(new_value) ⇒ [TrueClass, FalseClass] #brackets=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#brackets
default: ‘false`
149 |
# File 'lib/fixnames/option.rb', line 149 mkopt :brackets, [TrueClass, FalseClass], false |
#camelcase ⇒ [TrueClass, FalseClass] #camelcase(new_value) ⇒ [TrueClass, FalseClass] #camelcase=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#camelcase
default: ‘false`
164 |
# File 'lib/fixnames/option.rb', line 164 mkopt :camelcase, [TrueClass, FalseClass], false |
#charstrip ⇒ String #charstrip(new_value) ⇒ String #charstrip=(new_value) ⇒ String
Enables Filters#charstrip if non-nil
default: ‘DEFAULT_CHARSTRIP`
173 |
# File 'lib/fixnames/option.rb', line 173 mkopt :charstrip, String, DEFAULT_CHARSTRIP |
#charstrip_allow_brackets ⇒ [TrueClass, FalseClass] #charstrip_allow_brackets(new_value) ⇒ [TrueClass, FalseClass] #charstrip_allow_brackets=(new_value) ⇒ [TrueClass, FalseClass]
Set to true to have Filters#charstrip ignore its default behavior and allow the brackets through. This is potentially ignored if you change #charstrip. default: ‘false`
184 |
# File 'lib/fixnames/option.rb', line 184 mkopt :charstrip_allow_brackets, [TrueClass, FalseClass], false |
#checksums ⇒ [TrueClass, FalseClass] #checksums(new_value) ⇒ [TrueClass, FalseClass] #checksums=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#checksums
default: ‘false`
143 |
# File 'lib/fixnames/option.rb', line 143 mkopt :checksums, [TrueClass, FalseClass], false |
#dir_glob ⇒ String #dir_glob(new_value) ⇒ String #dir_glob=(new_value) ⇒ String
When #recursive is set, use this pattern to glob each directory for files. default: ‘DEFAULT_DIR_GLOB`
124 |
# File 'lib/fixnames/option.rb', line 124 mkopt :dir_glob, String, DEFAULT_DIR_GLOB |
#expunge ⇒ String #expunge(new_value) ⇒ String #expunge=(new_value) ⇒ String
Enables Filters#expunge
A generic pattern to remove from all filenames. default: ‘nil`
131 |
# File 'lib/fixnames/option.rb', line 131 mkopt :expunge, String, nil |
#expunge_common_prefix! ⇒ Object
212 213 214 215 216 217 218 219 220 |
# File 'lib/fixnames/option.rb', line 212 def expunge_common_prefix! pfx = Dir['*'].abbrev.keys.min_by{ |k| k.length }.chop if pfx && pfx.length > 0 re = "^#{Regexp.escape(pfx)}" STDERR.puts "DWIM-WARN: No REGEX was given to -x/--expunge" STDERR.puts "DWIM-WARN: Will expunge the common prefix: %r{#{re}}" self.expunge = re end end |
#filter_order ⇒ Array #filter_order(new_value) ⇒ Array #filter_order=(new_value) ⇒ Array
The order we should apply the filter to the filename. This order is significant, and can dramatically affect the output. default: ‘DEFAULT_FILTER_ORDER`
197 |
# File 'lib/fixnames/option.rb', line 197 mkopt :filter_order, Array, DEFAULT_FILTER_ORDER |
#fix_dashes ⇒ [TrueClass, FalseClass] #fix_dashes(new_value) ⇒ [TrueClass, FalseClass] #fix_dashes=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#fix_dashes
default: ‘false`
158 |
# File 'lib/fixnames/option.rb', line 158 mkopt :fix_dashes, [TrueClass, FalseClass], false |
#fix_dots ⇒ [TrueClass, FalseClass] #fix_dots(new_value) ⇒ [TrueClass, FalseClass] #fix_dots=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#fix_dots
default: ‘false`
155 |
# File 'lib/fixnames/option.rb', line 155 mkopt :fix_dots, [TrueClass, FalseClass], false |
#fix_numsep ⇒ [TrueClass, FalseClass] #fix_numsep(new_value) ⇒ [TrueClass, FalseClass] #fix_numsep=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#fix_dashes
default: ‘false`
161 |
# File 'lib/fixnames/option.rb', line 161 mkopt :fix_numsep, [TrueClass, FalseClass], false |
#hack_and ⇒ [TrueClass, FalseClass] #hack_and(new_value) ⇒ [TrueClass, FalseClass] #hack_and=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#hack_and
default: ‘false`
137 |
# File 'lib/fixnames/option.rb', line 137 mkopt :hack_and, [TrueClass, FalseClass], false |
#junkwords ⇒ Array #junkwords(new_value) ⇒ Array #junkwords=(new_value) ⇒ Array
Enables Filters#junkwords if non-nil
default: ‘DEFAULT_JUNKWORDS`
170 |
# File 'lib/fixnames/option.rb', line 170 mkopt :junkwords, Array, DEFAULT_JUNKWORDS |
#lowercase ⇒ [TrueClass, FalseClass] #lowercase(new_value) ⇒ [TrueClass, FalseClass] #lowercase=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#lowercase
default: ‘false`
167 |
# File 'lib/fixnames/option.rb', line 167 mkopt :lowercase, [TrueClass, FalseClass], false |
#max_filter_loops ⇒ Integer #max_filter_loops(new_value) ⇒ Integer #max_filter_loops=(new_value) ⇒ Integer
The maximum number of times a Fixname::Filters will be applied before giving and proceeding with the next filter (infinite-loop protextion)
default: ‘MAX_FILTER_LOOPS`
120 |
# File 'lib/fixnames/option.rb', line 120 mkopt :max_filter_loops, Integer, MAX_FILTER_LOOPS |
#mendstr ⇒ String #mendstr(new_value) ⇒ String #mendstr=(new_value) ⇒ String
After we #expunge a pattern, it is replaced with this string. default: ‘DEFAULT_MENDSTR`
134 |
# File 'lib/fixnames/option.rb', line 134 mkopt :mendstr, String, DEFAULT_MENDSTR |
#nocolor ⇒ [TrueClass, FalseClass] #nocolor(new_value) ⇒ [TrueClass, FalseClass] #nocolor=(new_value) ⇒ [TrueClass, FalseClass]
default: ‘false`
109 |
# File 'lib/fixnames/option.rb', line 109 mkopt :nocolor, [TrueClass, FalseClass], false |
#pretend ⇒ [TrueClass, FalseClass] #pretend(new_value) ⇒ [TrueClass, FalseClass] #pretend=(new_value) ⇒ [TrueClass, FalseClass]
if set, we just pretend to work, and skip the final move command, so the filesystem is never altered default: ‘false`
201 |
# File 'lib/fixnames/option.rb', line 201 mkopt :pretend, [TrueClass, FalseClass], false |
#recursive ⇒ [TrueClass, FalseClass] #recursive(new_value) ⇒ [TrueClass, FalseClass] #recursive=(new_value) ⇒ [TrueClass, FalseClass]
Recursively descend into directories if true. default: ‘false`
127 |
# File 'lib/fixnames/option.rb', line 127 mkopt :recursive, [TrueClass, FalseClass], false |
#semicolon ⇒ [TrueClass, FalseClass] #semicolon(new_value) ⇒ [TrueClass, FalseClass] #semicolon=(new_value) ⇒ [TrueClass, FalseClass]
Enables Filters#semicolon
default: ‘false`
152 |
# File 'lib/fixnames/option.rb', line 152 mkopt :semicolon, [TrueClass, FalseClass], false |
#verbose ⇒ Integer #verbose(new_value) ⇒ Integer #verbose=(new_value) ⇒ Integer
Verbosity levels
-
‘verbose=0` ; no output
-
‘verbose=1` ; only names that change are output
-
‘verbose=2` ; all names are output with their change-status
-
‘verbose=3` ; all filters are output as they run for debugging. Very noisy.
default: ‘0`
117 |
# File 'lib/fixnames/option.rb', line 117 mkopt :verbose, Integer, 0 |
#whitespace ⇒ String #whitespace(new_value) ⇒ String #whitespace=(new_value) ⇒ String
Enables Filters#whitespace if non-nil
default: ‘DEFAULT_WHITESPACE`
176 |
# File 'lib/fixnames/option.rb', line 176 mkopt :whitespace, String, DEFAULT_WHITESPACE |