Sha256: 6d1ed1a5dbacc9a6257d2496a5ef3473530d9ed3547554c6e5b1fe738319f833
Contents?: true
Size: 648 Bytes
Versions: 21
Compression:
Stored size: 648 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 result } 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
21 entries across 21 versions & 1 rubygems