Class: Xpose::Decorated

Inherits:
Object
  • Object
show all
Defined in:
lib/xpose/decorated.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Decorated

Returns a new instance of Decorated.



5
6
7
# File 'lib/xpose/decorated.rb', line 5

def initialize(**options)
  @conf = ::Xpose::Configuration.new(options.merge(permissive: true))
end

Instance Attribute Details

#confObject (readonly)

Returns the value of attribute conf.



3
4
5
# File 'lib/xpose/decorated.rb', line 3

def conf
  @conf
end

Instance Method Details

#value(instance, v) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/xpose/decorated.rb', line 9

def value(instance, v)
  return v unless shall_decorate?(instance, v)
  if conf.decorator == :infer
    infer(v)
  elsif Class === conf.decorator
    conf.decorator.new(v)
  elsif conf.decorator.respond_to?(:call)
    conf.decorator.call(v)
  elsif Symbol === conf.decorator && class_exists?(klass_from_symbol)
    klass_from_symbol.new(v)
  else
    raise UnknownDecoratorError.new(conf.decorator)
  end
end