From 2d4add3fb769baf17a34c6a7e36dde68102a5a22 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 30 Dec 2017 11:49:48 +0100 Subject: mruby: add a basic ruby implementation of obsevables --- player/mruby/observable_test.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 player/mruby/observable_test.rb (limited to 'player/mruby/observable_test.rb') diff --git a/player/mruby/observable_test.rb b/player/mruby/observable_test.rb new file mode 100644 index 0000000000..1a5cfcac6b --- /dev/null +++ b/player/mruby/observable_test.rb @@ -0,0 +1,27 @@ +# require[_relative] doesn't like non .rb/.so/.a extensions in MRI +load File.expand_path('./observable.mrb', __dir__) + +empty = Observable.create { |observer| observer.complete } +value = -> (v) { Observable.create { |observer| observer.next(v) } } +failure = Observable.create { |observer| observer.error("some error") } + +subscriptions = { + next: -> (x) { puts "next: '#{x}'" }, + error: -> (x) { puts "error: '#{x}'" }, + complete: -> () { puts "complete" } +} + +empty.subscribe(subscriptions) +value.("hello world").subscribe(subscriptions) +value.("hello world").subscribe { |x| puts "block based subscription: '#{x}'" } +value.(2).map { |x| x + 1 } .subscribe(subscriptions) +failure.subscribe(subscriptions) +failure # prints nothing, observables are lazy! + +# output will be: + +# complete +# next: 'hello world' +# block based sub hello world +# next: '3' +# error: 'some error' -- cgit v1.2.3