Module: Render

Defined in:
lib/render.rb,
lib/render/graph.rb,
lib/render/errors.rb,
lib/render/schema.rb,
lib/render/version.rb,
lib/render/attribute.rb,
lib/render/generator.rb,
lib/render/dottable_hash.rb,
lib/render/hash_attribute.rb,
lib/render/array_attribute.rb

Defined Under Namespace

Modules: Errors Classes: ArrayAttribute, Attribute, DottableHash, Generator, Graph, HashAttribute, Schema

Constant Summary collapse

VERSION =
"0.0.3"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.definitionsObject

Returns the value of attribute definitions.



24
25
26
# File 'lib/render.rb', line 24

def definitions
  @definitions
end

.generatorsObject

Returns the value of attribute generators.



24
25
26
# File 'lib/render.rb', line 24

def generators
  @generators
end

.liveObject

Returns the value of attribute live.



24
25
26
# File 'lib/render.rb', line 24

def live
  @live
end

.loggerObject

Returns the value of attribute logger.



24
25
26
# File 'lib/render.rb', line 24

def logger
  @logger
end

.threadingObject

Returns the value of attribute threading.



24
25
26
# File 'lib/render.rb', line 24

def threading
  @threading
end

Class Method Details

.definition(title) ⇒ Object



48
49
50
51
52
# File 'lib/render.rb', line 48

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

.load_definition!(definition) ⇒ Object



43
44
45
46
# File 'lib/render.rb', line 43

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

.load_definitions!(directory) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/render.rb', line 34

def load_definitions!(directory)
  Dir.glob("#{directory}/**/*.json").each do |definition_file|
    logger.info("Reading #{definition_file} definition")
    definition_string = File.read(definition_file)
    parsed_definition = JSON.parse(definition_string).recursive_symbolize_keys!
    load_definition!(parsed_definition)
  end
end

.parse_type(type) ⇒ Object

TODO better type parsing



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/render.rb', line 55

def parse_type(type)
  return type unless type.is_a?(String)

  return UUID if type.match(/uuid/i)
  return Boolean if type.match(/boolean/i)
  return Float if type.match(/number/i)
  return Time if type.match(/date.*time/i)
  Object.const_get(type.capitalize)
rescue NameError => error
  raise Errors::InvalidType.new(type)
end

.threading?Boolean

Returns:



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

def threading?
  threading == true
end