From 2668e2aeffb6c77cf29cec01b5c02a3077133227 Mon Sep 17 00:00:00 2001
From: "Clinton R. Nixon" <crnixon@gmail.com>
Date: Tue, 22 Sep 2009 13:03:46 -0400
Subject: [PATCH] DRYed up "@foo=self.class.foo unless @foo" statements

Using the example from the existing code:

  CHECKSUM_TYPES.each do |type|
    if !instance_variable_defined?("@#{type}")
      class_value = self.class.send(type)
      instance_variable_set("@#{type}", class_value) if class_value
    end
  end

I extracted that block into a method 'set_instance_variable' which I
then used in all places where this behavior was being used.
---
 Library/Homebrew/formula.rb | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index 207cd615ff..099f2e6bbe 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -39,9 +39,9 @@ end
 class Formula
   # Homebrew determines the name
   def initialize name='__UNKNOWN__'
-    @url=self.class.url unless @url
+    set_instance_variable 'url'
+    set_instance_variable 'head'
 
-    @head=self.class.head unless @head
     if @head and (not @url or ARGV.flag? '--HEAD')
       @url=@head
       @version='HEAD'
@@ -50,15 +50,15 @@ class Formula
     raise if @url.nil?
     @name=name
     validate_variable :name
-    @version=self.class.version unless @version
-    @version=Pathname.new(@url).version unless @version
+
+    set_instance_variable 'version'
+    @version ||= Pathname.new(@url).version
     validate_variable :version if @version
-    @homepage=self.class.homepage unless @homepage
+    
+    set_instance_variable 'homepage'
+
     CHECKSUM_TYPES.each do |type|
-      if !instance_variable_defined?("@#{type}")
-        class_value = self.class.send(type)
-        instance_variable_set("@#{type}", class_value) if class_value
-      end
+      set_instance_variable type
     end
   end
 
@@ -324,6 +324,13 @@ private
     v=eval "@#{name}"
     raise "Invalid @#{name}" if v.to_s.empty? or v =~ /\s/
   end
+  
+  def set_instance_variable(type)
+    if !instance_variable_defined?("@#{type}")
+      class_value = self.class.send(type)
+      instance_variable_set("@#{type}", class_value) if class_value
+    end
+  end
 
   def method_added method
     raise 'You cannot override Formula.brew' if method == 'brew'
-- 
GitLab