module Build::Environment::System

def self.convert_to_shell(environment)

def self.convert_to_shell(environment)
	values = environment.values.select{|key, value| valid_for_export(value)}
	
	Hash[values.map{|key, value| [
		key.to_s.upcase,
		shell_escape(value)
	]}]
end

def self.shell_escape(value)

def self.shell_escape(value)
	case value
	when Array
		value.flatten.collect{|argument| shell_escape(argument)}.join(' ')
	else
		# Ensure that any whitespace has been escaped:
		value.to_s.gsub(/ /, '\ ')
	end
end

def self.valid_for_export(value)

def self.valid_for_export(value)
	case value
	when Array
		true
	when Symbol
		false
	when Proc
		false
	when Default
		false
	when Replace
		false
	when Define
		false
	else
		true
	end
end