Class: Render::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/render/definition.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.instancesObject

Returns the value of attribute instances.



6
7
8
# File 'lib/render/definition.rb', line 6

def instances
  @instances
end

Class Method Details

.find(id, raise_error = true) ⇒ Object



21
22
23
24
25
# File 'lib/render/definition.rb', line 21

def find(id, raise_error = true)
  instances.fetch(id)
rescue KeyError => error
  raise Errors::Definition::NotFound.new(id) if raise_error
end

.load!(definition) ⇒ Object



17
18
19
# File 'lib/render/definition.rb', line 17

def load!(definition)
  self.instances.merge!({ parse_id!(definition) => definition })
end

.load_from_directory!(directory) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/render/definition.rb', line 8

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)
    parsed_definition = JSON.parse(definition_string, { symbolize_names: true })
    load!(parsed_definition)
  end
end

.parse_id(definition) ⇒ Object



31
32
33
# File 'lib/render/definition.rb', line 31

def parse_id(definition)
  definition[:id]
end

.parse_id!(definition) ⇒ Object



27
28
29
# File 'lib/render/definition.rb', line 27

def parse_id!(definition)
  parse_id(definition) || (raise Errors::Definition::NoId.new(definition))
end