Class: Riddler::Element

Inherits:
Object
  • Object
show all
Includes:
Includeable
Defined in:
lib/riddler/element.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Includeable

#include?, #include_predicate

Constructor Details

#initialize(definition, context) ⇒ Element

Returns a new instance of Element.



24
25
26
27
# File 'lib/riddler/element.rb', line 24

def initialize definition, context
  @definition = definition
  @context = context
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



5
6
7
# File 'lib/riddler/element.rb', line 5

def context
  @context
end

#definitionObject (readonly)

Returns the value of attribute definition.



5
6
7
# File 'lib/riddler/element.rb', line 5

def definition
  @definition
end

Class Method Details

.for(definition, context) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/riddler/element.rb', line 15

def self.for definition, context
  element_type = definition["type"]

  # Maybe this should be a registry
  klass = subclasses.detect { |k| k.type == element_type }

  klass.new definition, context
end

.inherited(subclass) ⇒ Object



11
12
13
# File 'lib/riddler/element.rb', line 11

def self.inherited subclass
  self.subclasses << subclass
end

.subclassesObject



7
8
9
# File 'lib/riddler/element.rb', line 7

def self.subclasses
  @@subclasses ||= []
end

Instance Method Details

#to_hashObject



29
30
31
32
33
34
35
36
# File 'lib/riddler/element.rb', line 29

def to_hash
  {
    content_type: "element",
    type: self.class.type,
    id: definition["id"],
    name: definition["name"]
  }
end