diff options
author | Jack Nagel | 2015-01-01 01:21:59 -0500 |
---|---|---|
committer | Jack Nagel | 2015-01-03 22:39:07 -0500 |
commit | 6cfaaa2a3c98b179d62f7773f520ad5a3a6df036 (patch) | |
tree | 74d73de3463b4a762172ceeaa274ba11a877a33c /Library/Homebrew | |
parent | fec86ded115374f9ffd53186a57ce12ca1da6f70 (diff) | |
download | homebrew-6cfaaa2a3c98b179d62f7773f520ad5a3a6df036.tar.bz2 |
Load formulae into private namespace
Diffstat (limited to 'Library/Homebrew')
-rw-r--r-- | Library/Homebrew/formulary.rb | 49 |
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 |