]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/gems/rspec-1.1.2/examples/stories/game-of-life/life/grid.rb
added RSpec and RSpec on Rails
[rails.git] / vendor / gems / rspec-1.1.2 / examples / stories / game-of-life / life / grid.rb
diff --git a/vendor/gems/rspec-1.1.2/examples/stories/game-of-life/life/grid.rb b/vendor/gems/rspec-1.1.2/examples/stories/game-of-life/life/grid.rb
new file mode 100644 (file)
index 0000000..aca2308
--- /dev/null
@@ -0,0 +1,43 @@
+class Grid
+  
+  attr_accessor :contents
+  
+  def initialize(rows, cols)
+    @contents = []
+    rows.times do @contents << [0] * cols end
+  end
+  
+  def rows
+    @contents.size
+  end
+  
+  def columns
+    @contents[0].size
+  end
+  
+  def ==(other)
+    self.contents == other.contents
+  end
+  
+  def create_at(row,col)
+    @contents[row][col] = 1
+  end
+  
+  def destroy_at(row,col)
+    @contents[row][col] = 0
+  end
+  
+  def self.from_string(str)
+    row_strings = str.split(' ')
+    grid = new(row_strings.size, row_strings[0].size)
+    
+    row_strings.each_with_index do |row, row_index|
+      row_chars = row.split(//)
+      row_chars.each_with_index do |col_char, col_index|
+        grid.create_at(row_index, col_index) if col_char == 'X'
+      end
+    end
+    return grid
+  end
+  
+end