From 5424b31848e85e40ea78afb4582e8f33845e1b01 Mon Sep 17 00:00:00 2001
From: Tristan Hume <tristan@thume.ca>
Date: Mon, 12 Aug 2013 14:53:00 -0400
Subject: [PATCH 1/2] Explain blocks better

---
 ruby.html.markdown | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/ruby.html.markdown b/ruby.html.markdown
index 861a94ad..52321ff6 100644
--- a/ruby.html.markdown
+++ b/ruby.html.markdown
@@ -5,6 +5,7 @@ contributors:
   - ["David Underwood", "http://theflyingdeveloper.com"]
   - ["Joel Walden", "http://joelwalden.net"]
   - ["Luke Holder", "http://twitter.com/lukeholder"]
+  - ["Tristan Hume", "http://thume.ca/"]
 ---
 
 ```ruby
@@ -158,11 +159,6 @@ hash['number'] #=> 5
 # Asking a hash for a key that doesn't exist returns nil:
 hash['nothing here'] #=> nil
 
-# Iterate over hashes with the #each method:
-hash.each do |k, v|
-  puts "#{k} is #{v}"
-end
-
 # Since Ruby 1.9, there's a special syntax when using symbols as keys:
 
 new_hash = { defcon: 3, action: true}
@@ -193,7 +189,12 @@ end
 
 # HOWEVER
 # No-one uses for loops
-# Use `each` instead, like this:
+# Under the hood for loops use the each method which takes a "block".
+# A block is a bunch of code that you can pass to a method like each.
+# It is analogous to lambdas, anonymous functions or closures in other programming languages.
+
+# The each method runs the block multiple times passing a counter.
+# You can iterate over a range like this:
 
 (1..5).each do |counter|
   puts "iteration #{counter}"
@@ -204,6 +205,17 @@ end
 #=> iteration 4
 #=> iteration 5
 
+# You can also surround blocks in curly brackets:
+(1..5).each {|counter| puts "iteration #{counter}"}
+
+# You can also iterate over the contents of data structures using each.
+array.each do |element|
+  puts "#{element} is part of the array"
+end
+hash.each do |key, value|
+  puts "#{key} is #{value}"
+end
+
 counter = 1
 while counter <= 5 do
   puts "iteration #{counter}"

From 5c5c8d3c4a0aea7c1c7a8150f428e354d0a12a6c Mon Sep 17 00:00:00 2001
From: Tristan Hume <tristan@thume.ca>
Date: Mon, 12 Aug 2013 15:05:00 -0400
Subject: [PATCH 2/2] Tidy up wording

---
 ruby.html.markdown | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/ruby.html.markdown b/ruby.html.markdown
index 52321ff6..68c5b524 100644
--- a/ruby.html.markdown
+++ b/ruby.html.markdown
@@ -187,14 +187,14 @@ end
 #=> iteration 4
 #=> iteration 5
 
-# HOWEVER
-# No-one uses for loops
-# Under the hood for loops use the each method which takes a "block".
-# A block is a bunch of code that you can pass to a method like each.
+# HOWEVER, No-one uses for loops.
+# Instead you should use the "each" method and pass it a block.
+# A block is a bunch of code that you can pass to a method like "each".
 # It is analogous to lambdas, anonymous functions or closures in other programming languages.
-
-# The each method runs the block multiple times passing a counter.
-# You can iterate over a range like this:
+#
+# The "each" method of a range runs the block once for each element of the range.
+# The block is passed a counter as a parameter.
+# Calling the "each" method with a block looks like this:
 
 (1..5).each do |counter|
   puts "iteration #{counter}"
@@ -208,7 +208,7 @@ end
 # You can also surround blocks in curly brackets:
 (1..5).each {|counter| puts "iteration #{counter}"}
 
-# You can also iterate over the contents of data structures using each.
+# The contents of data structures can also be iterated using each.
 array.each do |element|
   puts "#{element} is part of the array"
 end