diff options
Diffstat (limited to 'lib/method_source.rb')
-rw-r--r-- | lib/method_source.rb | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/lib/method_source.rb b/lib/method_source.rb index 93a1109..d6a6e29 100644 --- a/lib/method_source.rb +++ b/lib/method_source.rb @@ -27,19 +27,17 @@ module MethodSource return nil if !source_location.is_a?(Array) file_name, line = source_location - file = File.open(file_name) - (line - 1).times { file.readline } + File.open(file_name) do |file| + (line - 1).times { file.readline } - code = "" - loop do - val = file.readline - code << val - - return code if valid_expression?(code) - end - - ensure - file.close if file + code = "" + loop do + val = file.readline + code << val + + return code if valid_expression?(code) + end + end end # Helper method responsible for opening source file and buffering up @@ -51,22 +49,21 @@ module MethodSource return nil if !source_location.is_a?(Array) file_name, line = source_location - file = File.open(file_name) - buffer = "" - (line - 1).times do - line = file.readline - # Add any line that is a valid ruby comment, - # but clear as soon as we hit a non comment line. - if (line =~ /^\s*#/) || (line =~ /^\s*$/) - buffer << line.lstrip - else - buffer.clear + File.open(file_name) do |file| + buffer = "" + (line - 1).times do + line = file.readline + # Add any line that is a valid ruby comment, + # but clear as soon as we hit a non comment line. + if (line =~ /^\s*#/) || (line =~ /^\s*$/) + buffer << line.lstrip + else + buffer.clear + end end + + buffer end - - buffer - ensure - file.close if file end # This module is to be included by `Method` and `UnboundMethod` and |