ajuckel / data-cells

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Data Cells

Porting the idea of spreadsheet cells into an object oriented programing language.

I never used the original CLOS cells much, but it seems like a useful abstraction to bring into a Ruby class model. I'm still a bit hazy on how I'd like the syntax to play out, and this is obviously a very early cut. Almost no functionality is present yet. It'll happily fall into an infinite loop if you declare circular dependencies in your cells. Currently, Ruby 1.9 is required, though that may change in the future.

Here's an example of the API so far:

jruby-1.6.5 :001 > require 'data-cells'
 => true 
jruby-1.6.5 :002 > class Temperature
jruby-1.6.5 :003?>   include DataCells
jruby-1.6.5 :004?>   data_cells :f, :c
jruby-1.6.5 :005?>   end
 => [:f, :c] 
jruby-1.6.5 :006 > t = Temperature.new
 => #<Temperature:0xcf546f8> 
jruby-1.6.5 :007 > t.f = 32
 => 32 
jruby-1.6.5 :008 > t.c = lambda { |f| (f - 32)*5/9 }
 => #<Proc:0x654f5021@(irb):8 (lambda)> 
jruby-1.6.5 :009 > t.c
 => 0 
jruby-1.6.5 :010 > t.f = 40
 => 40 
jruby-1.6.5 :011 > t.c
 => 4 
jruby-1.6.5 :012 > t.f = 212
 => 212 
jruby-1.6.5 :013 > t.c
 => 100 
jruby-1.6.5 :014 > t.f = 100
 => 100 
jruby-1.6.5 :015 > t.c
 => 37 

About


Languages

Language:Ruby 100.0%