Move Formula.class_s to Formulary

This commit is contained in:
Jack Nagel 2014-02-21 00:43:58 -05:00
parent fb350bad0f
commit 41a9ba8259
4 changed files with 19 additions and 15 deletions

View File

@ -121,7 +121,7 @@ class FormulaCreator
# #{HOMEBREW_CONTRIB}/example-formula.rb # #{HOMEBREW_CONTRIB}/example-formula.rb
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST! # PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
class #{Formula.class_s name} < Formula class #{Formulary.class_s name} < Formula
homepage "" homepage ""
url "#{url}" url "#{url}"
<% unless version.nil? or version.detected_from_url? %> <% unless version.nil? or version.detected_from_url? %>

View File

@ -348,11 +348,8 @@ class Formula
alias_method :python2, :python alias_method :python2, :python
alias_method :python3, :python alias_method :python3, :python
# Generates a formula's ruby class name from a formula's name
def self.class_s name def self.class_s name
# remove invalid characters and then camelcase it Formulary.class_s(name)
name.capitalize.gsub(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase } \
.gsub('+', 'x')
end end
# an array of all Formula names # an array of all Formula names

View File

@ -2,24 +2,31 @@
class Formulary class Formulary
def self.unload_formula formula_name def self.unload_formula formula_name
Object.send(:remove_const, Formula.class_s(formula_name)) Object.send(:remove_const, class_s(formula_name))
end end
def self.formula_class_defined? formula_name def self.formula_class_defined? formula_name
Object.const_defined?(Formula.class_s(formula_name)) Object.const_defined?(class_s(formula_name))
end end
def self.get_formula_class formula_name def self.get_formula_class formula_name
Object.const_get(Formula.class_s(formula_name)) Object.const_get(class_s(formula_name))
end end
def self.restore_formula formula_name, value def self.restore_formula formula_name, value
old_verbose, $VERBOSE = $VERBOSE, nil old_verbose, $VERBOSE = $VERBOSE, nil
Object.const_set(Formula.class_s(formula_name), value) Object.const_set(class_s(formula_name), value)
ensure ensure
$VERBOSE = old_verbose $VERBOSE = old_verbose
end end
def self.class_s name
name = name.capitalize
name.gsub!(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase }
name.gsub!('+', 'x')
name
end
# A FormulaLoader returns instances of formulae. # A FormulaLoader returns instances of formulae.
# Subclasses implement loaders for particular sources of formulae. # Subclasses implement loaders for particular sources of formulae.
class FormulaLoader class FormulaLoader

View File

@ -129,11 +129,11 @@ class FormulaTests < Test::Unit::TestCase
end end
def test_class_naming def test_class_naming
assert_equal 'ShellFm', Formula.class_s('shell.fm') assert_equal 'ShellFm', Formulary.class_s('shell.fm')
assert_equal 'Fooxx', Formula.class_s('foo++') assert_equal 'Fooxx', Formulary.class_s('foo++')
assert_equal 'SLang', Formula.class_s('s-lang') assert_equal 'SLang', Formulary.class_s('s-lang')
assert_equal 'PkgConfig', Formula.class_s('pkg-config') assert_equal 'PkgConfig', Formulary.class_s('pkg-config')
assert_equal 'FooBar', Formula.class_s('foo_bar') assert_equal 'FooBar', Formulary.class_s('foo_bar')
end end
def test_formula_spec_integration def test_formula_spec_integration
@ -180,7 +180,7 @@ class FormulaTests < Test::Unit::TestCase
File.open(path, 'w') do |f| File.open(path, 'w') do |f|
f << %{ f << %{
require 'formula' require 'formula'
class #{Formula.class_s(name)} < Formula class #{Formulary.class_s(name)} < Formula
url 'foo-1.0' url 'foo-1.0'
def initialize(*args) def initialize(*args)
@homepage = 'http://example.com/' @homepage = 'http://example.com/'