class Gamerom::Repo
Repo
- Represents a game ROM repository
Attributes
name[R]
Public Class Methods
list()
click to toggle source
# File lib/gamerom/repo.rb, line 19 def self.list REPOSITORIES.map do |repo| new repo end end
new(name)
click to toggle source
# File lib/gamerom/repo.rb, line 25 def initialize(name) @name = name @repo = Gamerom::RepoAdapters.const_get(name.capitalize) end
Public Instance Methods
find(platform, game_identifier)
click to toggle source
# File lib/gamerom/repo.rb, line 34 def find(platform, game_identifier) games(platform).find do |game| if Integer(game_identifier, exception: false) game.id == game_identifier.to_i else game.name.downcase == game_identifier.downcase end end end
games(platform, options = {})
click to toggle source
# File lib/gamerom/repo.rb, line 44 def games(platform, options = {}) platform_database = "#{Gamerom::CACHE_DIR}/#{@name}/#{platform}.yml" update_database platform unless File.exist? platform_database games = YAML.load_file(platform_database).map do |game| Game.new(game.merge(platform: platform, repo: self)) end unless options[:region].nil? games.select! do |game| game.region == options[:region] end end unless options[:keyword].nil? games.select! do |game| game.name =~ /#{options[:keyword]}/i end end games end
install(game, &block)
click to toggle source
# File lib/gamerom/repo.rb, line 30 def install(game, &block) @repo.install game, &block end
platforms()
click to toggle source
# File lib/gamerom/repo.rb, line 66 def platforms @repo.platforms end
regions(platform)
click to toggle source
# File lib/gamerom/repo.rb, line 70 def regions(platform) games(platform).map(&:region).sort.uniq end
to_s()
click to toggle source
# File lib/gamerom/repo.rb, line 74 def to_s @name end
update_database(platform)
click to toggle source
# File lib/gamerom/repo.rb, line 78 def update_database(platform) games = @repo.games platform FileUtils.mkdir_p("#{Gamerom::CACHE_DIR}/#{@name}") File.write("#{Gamerom::CACHE_DIR}/#{@name}/#{platform}.yml", games.to_yaml) end