Sha256: b5cce6130e8a09562927aad1a3974861fca775c891ffc4cce8116cfc15d90dd5
Contents?: true
Size: 633 Bytes
Versions: 36
Compression:
Stored size: 633 Bytes
Contents
module React class Observable def initialize(value, on_change = nil, &block) @value = value @on_change = on_change || block end def method_missing(method_sym, *args, &block) @value.send(method_sym, *args, &block).tap { |result| @on_change.call @value } end def respond_to?(method, *args) if [:call, :to_proc].include? method true else @value.respond_to? method, *args end end def call(new_value) @on_change.call new_value @value = new_value end def to_proc lambda { |arg = @value| @on_change.call arg } end end end
Version data entries
36 entries across 36 versions & 4 rubygems