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