From 44a3d59630fddaa45767174c35ed410984eeb60b Mon Sep 17 00:00:00 2001
From: "Clinton R. Nixon" <crnixon@gmail.com>
Date: Tue, 22 Sep 2009 12:31:53 -0400
Subject: [PATCH] Added small DSL for formulas

You can now use "url", "version", "homepage", and any checksums as
class methods, like so:

    class Dos2unix <Formula
      url 'http://www.sfr-fresh.com/linux/misc/old/dos2unix-3.1.tar.gz'
      md5 '25ff56bab202de63ea6f6c211c416e96'
      homepage 'http://www.sfr-fresh.com/linux/misc/'
    end

The previous usage ("@url = 'http://example.com/tarball.tgz'") still
works, maintaining compatibility with previous formulas.

"dos2unix.rb" is translated into the new format as an example.
---
 Library/Homebrew/formula.rb  | 15 ++++++++++++---
 Library/Homebrew/unittest.rb |  4 ++--
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index 1c08714329..207cd615ff 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -330,9 +330,18 @@ private
   end
 
   class <<self
-    attr_reader :url, :version, :homepage, :head, :deps
-    attr_reader *CHECKSUM_TYPES
-
+    def self.attr_rw(*attrs)
+      attrs.each do |attr|
+        class_eval %Q{
+          def #{attr}(val=nil)
+            val.nil? ? @#{attr} : @#{attr} = val
+          end
+        }
+      end
+    end
+    
+    attr_rw :url, :version, :homepage, :head, :deps, *CHECKSUM_TYPES
+    
     def depends_on name, *args
       @deps ||= []
 
diff --git a/Library/Homebrew/unittest.rb b/Library/Homebrew/unittest.rb
index 15336ebdeb..41ebfb173c 100755
--- a/Library/Homebrew/unittest.rb
+++ b/Library/Homebrew/unittest.rb
@@ -75,8 +75,8 @@ class TestBallOverrideBrew <Formula
 end
 
 class TestScriptFileFormula <ScriptFileFormula
-  @url="file:///#{Pathname.new(ABS__FILE__).realpath}"
-  @version="1"
+  url "file:///#{Pathname.new(ABS__FILE__).realpath}"
+  version "1"
   
   def initialize
     super
-- 
GitLab