From 40863922361e547170f7acd36eaeac3394499ffc Mon Sep 17 00:00:00 2001 From: Joe Cheng Date: Thu, 21 Jun 2012 14:03:59 -0700 Subject: [PATCH] Minor refactor --- react-test.rb | 25 +++++++------------------ react.rb | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/react-test.rb b/react-test.rb index 50c34672d..9735c41c5 100644 --- a/react-test.rb +++ b/react-test.rb @@ -1,26 +1,15 @@ require './react' -class Observer - def initialize(&proc) - @proc = proc - run - end +include React - def run - ctx = React::Context.new - ctx.on_invalidate do - run - end - ctx.run &@proc - end -end +sess = Session.new +sess.set('user', '') -sess = React::Session.new -user = React::ObservableValue.new { sess.get('user') } -upUser = React::ObservableValue.new { (user.get||'').upcase } +user = ObservableValue.new { sess.get('user') } +upUser = ObservableValue.new { user.get.upcase } Observer.new { puts upUser.get } sess.set('user', 'jcheng') -React::Context.flush +Context.flush sess.set('user', 'jjallaire') -React::Context.flush +Context.flush diff --git a/react.rb b/react.rb index 910d383df..355e623d4 100644 --- a/react.rb +++ b/react.rb @@ -114,6 +114,7 @@ module React end end + # Stores (and caches) a single dependent value in a context class ObservableValue def initialize(&valueProc) @valueProc = valueProc @@ -150,4 +151,20 @@ module React end end + # Runs the given proc whenever its dependencies change + class Observer + def initialize(&proc) + @proc = proc + run + end + + def run + ctx = React::Context.new + ctx.on_invalidate do + run + end + ctx.run &@proc + end + end + end \ No newline at end of file