Class: Fixnames::Option

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Class Method Details

.mkopt(name, types, default_val) ⇒ Object

Creates an option

Parameters:

  • name (String)

    the name of the option to create

  • types (Array)

    a list of classes that are valid

  • default_val (Object)

    the value to set initially



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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


140
# File 'lib/fixnames/option.rb', line 140

mkopt :and_to_dash,  [TrueClass, FalseClass], false

The list of strings to find for removal in Filters#banners default: ‘DEFAULT_BANNER_TYPES`

Parameters:

  • new_value (Array)

Returns:

  • (Array)


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]

Note:

Enables Filters#banners

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


146
# File 'lib/fixnames/option.rb', line 146

mkopt :banners,   [TrueClass, FalseClass], false

#bracket_characters_closeString #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`

Parameters:

  • new_value (String)

Returns:

  • (String)


192
# File 'lib/fixnames/option.rb', line 192

mkopt :bracket_characters_close, String, DEFAULT_BRACKET_CHARACTERS_CLOSE

#bracket_characters_openString #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`

Parameters:

  • new_value (String)

Returns:

  • (String)


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


164
# File 'lib/fixnames/option.rb', line 164

mkopt :camelcase, [TrueClass, FalseClass], false

#charstripString #charstrip(new_value) ⇒ String #charstrip=(new_value) ⇒ String

Note:

Enables Filters#charstrip if non-nil

default: ‘DEFAULT_CHARSTRIP`

Parameters:

  • new_value (String)

Returns:

  • (String)


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`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


143
# File 'lib/fixnames/option.rb', line 143

mkopt :checksums, [TrueClass, FalseClass], false

#dir_globString #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`

Parameters:

  • new_value (String)

Returns:

  • (String)


124
# File 'lib/fixnames/option.rb', line 124

mkopt :dir_glob, String, DEFAULT_DIR_GLOB

#expungeString #expunge(new_value) ⇒ String #expunge=(new_value) ⇒ String

Note:

Enables Filters#expunge

A generic pattern to remove from all filenames. default: ‘nil`

Parameters:

  • new_value (String)

Returns:

  • (String)


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_orderArray #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`

Parameters:

  • new_value (Array)

Returns:

  • (Array)


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


137
# File 'lib/fixnames/option.rb', line 137

mkopt :hack_and,  [TrueClass, FalseClass], false

#junkwordsArray #junkwords(new_value) ⇒ Array #junkwords=(new_value) ⇒ Array

Note:

Enables Filters#junkwords if non-nil

default: ‘DEFAULT_JUNKWORDS`

Parameters:

  • new_value (Array)

Returns:

  • (Array)


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


167
# File 'lib/fixnames/option.rb', line 167

mkopt :lowercase, [TrueClass, FalseClass], false

#max_filter_loopsInteger #max_filter_loops(new_value) ⇒ Integer #max_filter_loops=(new_value) ⇒ Integer

Note:

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`

Parameters:

  • new_value (Integer)

Returns:

  • (Integer)


120
# File 'lib/fixnames/option.rb', line 120

mkopt :max_filter_loops, Integer, MAX_FILTER_LOOPS

#mendstrString #mendstr(new_value) ⇒ String #mendstr=(new_value) ⇒ String

After we #expunge a pattern, it is replaced with this string. default: ‘DEFAULT_MENDSTR`

Parameters:

  • new_value (String)

Returns:

  • (String)


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`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


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]

Note:

default: ‘false`

Parameters:

  • new_value ([TrueClass, FalseClass])

Returns:

  • ([TrueClass, FalseClass])


152
# File 'lib/fixnames/option.rb', line 152

mkopt :semicolon, [TrueClass, FalseClass], false

#verboseInteger #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`

Parameters:

  • new_value (Integer)

Returns:

  • (Integer)


117
# File 'lib/fixnames/option.rb', line 117

mkopt :verbose, Integer, 0

#whitespaceString #whitespace(new_value) ⇒ String #whitespace=(new_value) ⇒ String

Note:

Enables Filters#whitespace if non-nil

default: ‘DEFAULT_WHITESPACE`

Parameters:

  • new_value (String)

Returns:

  • (String)


176
# File 'lib/fixnames/option.rb', line 176

mkopt :whitespace, String, DEFAULT_WHITESPACE