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 | |
| parent | fec86ded115374f9ffd53186a57ce12ca1da6f70 (diff) | |
| download | homebrew-6cfaaa2a3c98b179d62f7773f520ad5a3a6df036.tar.bz2 | |
Load formulae into private namespace
| -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 | 
