module Miyuki::Parser

Public Class Methods

filter_episodes!(torrents, from_episode, keep = true) click to toggle source
# File lib/miyuki/parser.rb, line 28
def filter_episodes!(torrents, from_episode, keep = true)
  range = from_episode..1.0/0

  if range
    torrents.select! do |torrent|
      return keep unless torrent.title

      episode = torrent.title.scan(/- [0-9]*\.?[0-9]+/).last
      episode = episode.scan(/[0-9]*\.?[0-9]+/).last if episode
      episode = episode[1..-1] if episode && episode[0] == '0'

      if episode
        is_integer?(episode) ? range.include?(episode.to_i) : keep
      else
        keep
      end
    end
  end
end
parse(series) click to toggle source
# File lib/miyuki/parser.rb, line 18
def parse(series)
  pattern = series.fetch('pattern', '[$fansub] $name')

  pattern.scan(/\$[a-zA-Z_]*/).each do |var|
    pattern.gsub!(var, series[var[1..-1]]) if series.has_key?(var[1..-1])
  end

  pattern
end

Private Class Methods

is_integer?(string) click to toggle source
# File lib/miyuki/parser.rb, line 50
def is_integer?(string)
  string.to_i.to_s == string
end