Sha256: 2633db97ca84f23cbba5d102ea11d504cd7547bd830dc2e49ea6cdd7ad1d4ad5

Contents?: true

Size: 900 Bytes

Versions: 4

Compression:

Stored size: 900 Bytes

Contents

module Render
  class Definition
    @instances = {}

    class << self
      attr_accessor :instances

      def load_from_directory!(directory)
        Dir.glob("#{directory}/**/*.json").each do |definition_file|
          Render.logger.info("Reading #{definition_file} definition")
          definition_string = File.read(definition_file)
          json_definition = JSON.parse(definition_string)
          parsed_definition = Extensions::DottableHash.new(json_definition).recursively_symbolize_keys!
          load!(parsed_definition)
        end
      end

      def load!(definition)
        title = definition.fetch(:universal_title, definition.fetch(:title)).to_sym
        self.instances[title] = definition
      end

      def find(title)
        instances.fetch(title.to_sym)
      rescue KeyError => error
        raise Errors::DefinitionNotFound.new(title)
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
render-0.0.8 lib/render/definition.rb
render-0.0.7 lib/render/definition.rb
render-0.0.6 lib/render/definition.rb
render-0.0.5 lib/render/definition.rb