src/eMacros/Runtime/Environment/EnvironmentImport.php
public function apply(Scope $scope, GenericList $arguments) {
		if (!($scope instanceof Environment)) throw new \RuntimeException("EnvironmentImport: Cannot import package from outside of main context.");
		$nargs = count($arguments);
		if ($nargs == 0) throw new \BadFunctionCallException('EnvironmentImport: No package specified.');
		if (!($arguments[0] instanceof Symbol))
			throw new \InvalidArgumentException(sprintf("EnvironmentImport: Expected symbol as first argument but %s was found instead.", substr(strtolower(strstr(get_class($arguments[0]), '\\')), 1)));
		$package = $arguments[0]->symbol;
		
		if (!class_exists($package, true)) {
			//try finding a compatible package in eMacros\\Package namespace
			$xpackage = sprintf("eMacros\\Package\\%sPackage", $package);
			if (class_exists($xpackage, true)) $package = $xpackage;
			else throw new \InvalidArgumentException("EnvironmentImport: Package '$package' not found.");
		}
		
		$rc = new \ReflectionClass($package);
		
		if ($rc->isSubclassOf('eMacros\Package\Package')) {
			if ($nargs > 1) {
				if (!($arguments[1] instanceof Symbol))
					throw new \InvalidArgumentException(sprintf("EnvironmentImport: Expected symbol as second argument but %s was found instead.", substr(strtolower(strstr(get_class($arguments[1]), '\\')), 1)));
				$alias = $arguments[1]->symbol;
				//validate alias
				if (!preg_match(Symbol::PACKAGE_PREFIX, $alias . '::')) throw new \InvalidArgumentException("EnvironmentImport: Alias '$alias' is not a valid package alias.");
				return $scope->import($rc->newInstance(), $alias);
			}
			
			return $scope->import($rc->newInstance());
		}
		
		throw new \InvalidArgumentException("EnvironmentImport: '$package' is not a valid package class.");
	}
public function apply(Scope $scope, GenericList $arguments) {
		if (!($scope instanceof Environment)) throw new \RuntimeException("EnvironmentImport: Cannot import package from outside of main context.");
		$nargs = count($arguments);
		if ($nargs == 0) throw new \BadFunctionCallException('EnvironmentImport: No package specified.');
		if (!($arguments[0] instanceof Symbol))
			throw new \InvalidArgumentException(sprintf("EnvironmentImport: Expected symbol as first argument but %s was found instead.", substr(strtolower(strstr(get_class($arguments[0]), '\\')), 1)));
		$package = $arguments[0]->symbol;
		
		if (!class_exists($package, true)) {
			//try finding a compatible package in eMacros\\Package namespace
			$xpackage = sprintf("eMacros\\Package\\%sPackage", $package);
			if (class_exists($xpackage, true)) $package = $xpackage;
			else throw new \InvalidArgumentException("EnvironmentImport: Package '$package' not found.");
		}
		
		$rc = new \ReflectionClass($package);
		
		if ($rc->isSubclassOf('eMacros\Package\Package')) {
			if ($nargs > 1) {
				if (!($arguments[1] instanceof Symbol))
					throw new \InvalidArgumentException(sprintf("EnvironmentImport: Expected symbol as second argument but %s was found instead.", substr(strtolower(strstr(get_class($arguments[1]), '\\')), 1)));
				$alias = $arguments[1]->symbol;
				//validate alias
				if (!preg_match(Symbol::PACKAGE_PREFIX, $alias . '::')) throw new \InvalidArgumentException("EnvironmentImport: Alias '$alias' is not a valid package alias.");
				return $scope->import($rc->newInstance(), $alias);
			}
			
			return $scope->import($rc->newInstance());
		}
		
		throw new \InvalidArgumentException("EnvironmentImport: '$package' is not a valid package class.");
	}
Imports a package into current environment
Usage: (import eMacros\Package\MathPackage) (import eMacros\Package\PasswordPackage Pwd)
Returns: NULL
(non-PHPdoc)
@see \eMacros\Applicable::apply()