Sha256: 6809728aff7d9b6e06caeb5bae1cb3dbba679bccea6d89204d1ef655ff50fdd3

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 "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

8 entries across 8 versions & 1 rubygems

Version Path
rubicure-0.3.1 lib/rubicure/movie.rb
rubicure-0.3.0 lib/rubicure/movie.rb
rubicure-0.2.9 lib/rubicure/movie.rb
rubicure-0.2.8.1 lib/rubicure/movie.rb
rubicure-0.2.8 lib/rubicure/movie.rb
rubicure-0.2.7 lib/rubicure/movie.rb
rubicure-0.2.6 lib/rubicure/movie.rb
rubicure-0.2.5 lib/rubicure/movie.rb