Class: Scarpe::ShoesSpecProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/scarpe/shoes_spec.rb

Constant Summary collapse

JS_EVENTS =
[:click, :hover, :leave, :change]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(obj) ⇒ ShoesSpecProxy

Returns a new instance of ShoesSpecProxy.



64
65
66
67
68
69
70
71
72
# File 'lib/scarpe/shoes_spec.rb', line 64

def initialize(obj)
  @obj = obj
  @linkable_id = obj.linkable_id
  @display = ::Shoes::DisplayService.display_service.query_display_drawable_for(obj.linkable_id)

  unless @display
    raise "Can't find display widget for #{obj.inspect}!"
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method) ⇒ Object



74
75
76
77
78
79
80
81
82
83
# File 'lib/scarpe/shoes_spec.rb', line 74

def method_missing(method, ...)
  if @obj.respond_to?(method)
    self.singleton_class.define_method(method) do |*args, **kwargs, &block|
      @obj.send(method, *args, **kwargs, &block)
    end
    send(method, ...)
  else
    super # raise an exception
  end
end

Instance Attribute Details

#displayObject (readonly)

Returns the value of attribute display.



60
61
62
# File 'lib/scarpe/shoes_spec.rb', line 60

def display
  @display
end

#linkable_idObject (readonly)

Returns the value of attribute linkable_id.



59
60
61
# File 'lib/scarpe/shoes_spec.rb', line 59

def linkable_id
  @linkable_id
end

#objObject (readonly)

Returns the value of attribute obj.



58
59
60
# File 'lib/scarpe/shoes_spec.rb', line 58

def obj
  @obj
end

Instance Method Details

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/scarpe/shoes_spec.rb', line 96

def respond_to_missing?(method_name, include_private = false)
  @obj.respond_to_missing?(method_name, include_private)
end

#trigger(event_name, *args) ⇒ Object



85
86
87
88
# File 'lib/scarpe/shoes_spec.rb', line 85

def trigger(event_name, *args)
  name = "#{@linkable_id}-#{event_name}"
  Scarpe::Webview::DisplayService.instance.app.handle_callback(name, *args)
end