Sha256: d2797cfdcf752f0927a4f2d433c3ee133a0037a9c4436eaa65a6ddb77759da61

Contents?: true

Size: 1.52 KB

Versions: 30

Compression:

Stored size: 1.52 KB

Contents

module Rubicure
  # Precure All Stars Movie
  #
  # this is record of "config/movies.yml"
  class Movie < Hash
    include Hashie::Extensions::MethodAccess

    class << self
      # @return [Array<Symbol>]
      def names
        config.keys
      end

      # @return [Array<Symbol>]
      def uniq_names
        uniq_names = []
        config.each do |name, series|
          uniq_names << name unless uniq_names.any? { |uniq_name| config[uniq_name][:title] == series[:title] }
        end
        uniq_names
      end

      # @return [Hash] content of config/movies.yml
      def config
        unless @config
          config_file = "#{File.dirname(__FILE__)}/../../config/movies.yml"
          @config = YAML.load_file(config_file).deep_symbolize_keys
        end
        @config
      end

      # @return [Hash] content of config/movies.yml
      def reload_config!
        @cache = {}
        @config = nil
        config
      end

      # @param [Symbol] series_name
      def valid?(series_name)
        names.include?(series_name)
      end

      # @param movie_name [Symbol]
      # @return [Rubicure::Movie]
      # @raise arg is invalid
      def find(movie_name)
        raise UnknownMovieError, "unknown movie: #{movie_name}" unless valid?(movie_name)

        @cache ||= {}
        unless @cache[movie_name]
          movie_config = config[movie_name] || {}
          movie_config.reject! { |_k, v| v.nil? }

          @cache[movie_name] = Rubicure::Movie[movie_config]
        end

        @cache[movie_name]
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
rubicure-1.1.2 lib/rubicure/movie.rb
rubicure-1.1.1 lib/rubicure/movie.rb
rubicure-1.1.0 lib/rubicure/movie.rb
rubicure-1.0.7 lib/rubicure/movie.rb
rubicure-1.0.6 lib/rubicure/movie.rb
rubicure-1.0.5 lib/rubicure/movie.rb
rubicure-1.0.4 lib/rubicure/movie.rb
rubicure-1.0.3 lib/rubicure/movie.rb
rubicure-1.0.2 lib/rubicure/movie.rb
rubicure-1.0.1 lib/rubicure/movie.rb
rubicure-1.0.0 lib/rubicure/movie.rb
rubicure-1.0.0.pre4 lib/rubicure/movie.rb
rubicure-0.4.13 lib/rubicure/movie.rb
rubicure-1.0.0.pre3 lib/rubicure/movie.rb
rubicure-1.0.0.pre2 lib/rubicure/movie.rb
rubicure-1.0.0.pre1 lib/rubicure/movie.rb
rubicure-0.4.12 lib/rubicure/movie.rb
rubicure-0.4.11 lib/rubicure/movie.rb
rubicure-0.4.10 lib/rubicure/movie.rb
rubicure-0.4.9 lib/rubicure/movie.rb