diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index 8b3939968dd50e0e0e94fea6a62f385b257b38ac..60fce7eb8960f75a4527d4b0d2d135595040f64a 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -35,7 +35,7 @@ def make url template=<<-EOS require 'brewkit' - class #{Formula.class $1} <Formula + class #{Formula.class_s $1} <Formula @url='#{url}' @homepage='' @md5='' diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 7faabbae6c4f39eafd511b58d0f3f7ac6a055fe6..e995f88d1da0755365034bd438ef7be5e49e68ac 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -151,14 +151,14 @@ class Formula "-DCMAKE_INSTALL_PREFIX='#{prefix}' -DCMAKE_BUILD_TYPE=None" end - def self.class name + def self.class_s name #remove invalid characters and camelcase name.capitalize.gsub(/[-_\s]([a-zA-Z0-9])/) { $1.upcase } end def self.factory name require self.path(name) - return eval(self.class(name)).new(name) + return eval(self.class_s(name)).new(name) rescue LoadError raise FormulaUnavailableError.new(name) end diff --git a/Library/Homebrew/unittest.rb b/Library/Homebrew/unittest.rb index 62cc356be252bb087707a39d296faa175e5e90bb..0ef29f4f21d20ce0a145a8ec11cbf8d9f38747c7 100755 --- a/Library/Homebrew/unittest.rb +++ b/Library/Homebrew/unittest.rb @@ -318,7 +318,7 @@ class BeerTasting <Test::Unit::TestCase FOOBAR='foo-bar' def test_formula_funcs - classname=Formula.class(FOOBAR) + classname=Formula.class_s(FOOBAR) path=Formula.path(FOOBAR) assert_equal "FooBar", classname @@ -471,4 +471,10 @@ class BeerTasting <Test::Unit::TestCase assert_raises(RuntimeError) {Pathname.getwd.install 'non_existant_file'} end + + def test_formula_class_func + assert_equal Formula.class_s('s-lang'), 'SLang' + assert_equal Formula.class_s('pkg-config'), 'PkgConfig' + assert_equal Formula.class_s('foo_bar'), 'FooBar' + end end