Sha256: bf227124b6f9cb720b9f1fe2f5f2264f7c5975b1db2a282b0e888761642649c4

Contents?: true

Size: 1.5 KB

Versions: 8

Compression:

Stored size: 1.5 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.compact!

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

        @cache[movie_name]
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rubicure-2.1.5 lib/rubicure/movie.rb
rubicure-2.1.4 lib/rubicure/movie.rb
rubicure-2.1.3 lib/rubicure/movie.rb
rubicure-2.1.2 lib/rubicure/movie.rb
rubicure-2.1.1 lib/rubicure/movie.rb
rubicure-2.1.0 lib/rubicure/movie.rb
rubicure-2.0.1 lib/rubicure/movie.rb
rubicure-2.0.0 lib/rubicure/movie.rb