class IML::Patterns
Contains methods to build the regexp to match against the input filenames
Public Class Methods
config()
click to toggle source
@return [IML::Hash] pattern config singleton version
# File lib/iml/patterns.rb, line 11 def self.config new.config end
Public Instance Methods
config()
click to toggle source
@return [IML::Hash] pattern config
# File lib/iml/patterns.rb, line 6 def config IML::Hash.new ::YAML.load_file(pattern_file) end
method_missing(method_name)
click to toggle source
Mini format arrtibute DSL
Calls superclass method
# File lib/iml/patterns.rb, line 16 def method_missing(method_name) m = config[method_name] super unless m if m.is_a?(Hash) "(?<#{method_name}>(#{m.keys.join('|')}))" elsif m.is_a?(Array) "(?<#{method_name}>(#{m.join('|')}))" elsif m.is_a?(String) "(?<#{method_name}>#{m})" end end
movie()
click to toggle source
@return [Array<Regex>] Array of Regexp patterns to match filenames of Movies
# File lib/iml/patterns.rb, line 34 def movie [ /#{format_pattern('^%<title>s\.%<year>s\.?%<quality>s?\.%<source>s\.%<codec>s\.?%<audio>s?-?%<group>s\.%<extension>s$')}/i, /#{format_pattern('^%<title>s_\(%<year>s\)_\[%<quality>s,%<source>s,%<audio>s,%<codec>s\]_-_%<group>s.%<extension>s$')}/i ] end
respond_to_missing?(method_name, _include_private = false)
click to toggle source
@return <Boolean> true when method name is a config key
# File lib/iml/patterns.rb, line 29 def respond_to_missing?(method_name, _include_private = false) config.key?(method_name) || false end
tv()
click to toggle source
@return [Array<Regex>] Array of Regexp patterns to match filenames of TV Shows
# File lib/iml/patterns.rb, line 42 def tv [ /#{format_pattern('^%<title>s.S%<season>sE%<episode>s.?%<episode_title>s?.?%<quality>s?.%<source>s.%<audio>s?\.?%<codec>s-%<group>s.%<extension>s$')}/i ] end
Private Instance Methods
format_pattern(pattern)
click to toggle source
# File lib/iml/patterns.rb, line 61 def format_pattern(pattern) format(pattern, media_info) end
media_info()
click to toggle source
# File lib/iml/patterns.rb, line 54 def media_info { title: title, year: year, quality: quality, source: source, codec: codec, audio: audio, group: group, extension: extension, season: season, episode: episode, episode_title: episode_title } end
pattern_file()
click to toggle source
# File lib/iml/patterns.rb, line 50 def pattern_file Pathname(__dir__) + '..' + '..' + 'patterns.yml' end