aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2015-01-01 01:21:59 -0500
committerJack Nagel2015-01-03 22:39:07 -0500
commit6cfaaa2a3c98b179d62f7773f520ad5a3a6df036 (patch)
tree74d73de3463b4a762172ceeaa274ba11a877a33c
parentfec86ded115374f9ffd53186a57ce12ca1da6f70 (diff)
downloadhomebrew-6cfaaa2a3c98b179d62f7773f520ad5a3a6df036.tar.bz2
Load formulae into private namespace
-rw-r--r--Library/Homebrew/formulary.rb49
1 files changed, 32 insertions, 17 deletions
diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb
index 74b506d7d..3815105c2 100644
--- a/Library/Homebrew/formulary.rb
+++ b/Library/Homebrew/formulary.rb
@@ -2,22 +2,43 @@
# It is not meant to be used directy from formulae.
class Formulary
+ module Formulae
+ class << self
+ if instance_method(:const_defined?).arity == -1
+ def formula_const_defined?(name)
+ const_defined?(name, false)
+ end
- def self.unload_formula formula_name
- Object.send(:remove_const, class_s(formula_name))
- end
+ def formula_const_get(name)
+ const_get(name, false)
+ end
+ else
+ def formula_const_defined?(name)
+ const_defined?(name)
+ end
- def self.formula_class_defined? class_name
- Object.const_defined?(class_name)
+ def formula_const_get(name)
+ const_get(name)
+ end
+ end
+
+ def remove_formula_const(name)
+ remove_const(name)
+ end
+
+ def formula_const_set(name, value)
+ const_set(name, value)
+ end
+ end
end
- def self.get_formula_class class_name
- Object.const_get(class_name)
+ def self.unload_formula formula_name
+ Formulae.remove_formula_const(class_s(formula_name))
end
def self.restore_formula formula_name, value
old_verbose, $VERBOSE = $VERBOSE, nil
- Object.const_set(class_s(formula_name), value)
+ Formulae.formula_const_set(class_s(formula_name), value)
ensure
$VERBOSE = old_verbose
end
@@ -50,11 +71,9 @@ class Formulary
klass.new(name, path, spec)
end
- # Return the Class for this formula, `require`-ing it if
- # it has not been parsed before.
def klass
begin
- have_klass = Formulary.formula_class_defined? class_name
+ have_klass = Formulae.formula_const_defined?(class_name)
rescue NameError => e
raise unless e.name.to_s == class_name
raise FormulaUnavailableError, name, e.backtrace
@@ -62,11 +81,7 @@ class Formulary
load_file unless have_klass
- klass = Formulary.get_formula_class(class_name)
- if klass == Formula || !(klass < Formula)
- raise FormulaUnavailableError.new(name)
- end
- klass
+ Formulae.formula_const_get(class_name)
end
private
@@ -74,7 +89,7 @@ class Formulary
def load_file
STDERR.puts "#{$0} (#{self.class.name}): loading #{path}" if ARGV.debug?
raise FormulaUnavailableError.new(name) unless path.file?
- require(path)
+ Formulae.module_eval(path.read, path)
end
end