- A lot of bugfixes made for this release.

This commit is contained in:
mcndave committed 2021-02-16 03:17:32 +00:00
1 parent 4e909b2840
commit 8df38b568c
13 files changed
+159 -71

No files matched your search

+25 -2
View File
@@ -2,6 +2,7 @@
namespace Picea;
use Picea\Extension\FunctionExtension;
use Picea\Language\LanguageRegistration;
class Compiler
@@ -94,13 +95,35 @@ class Compiler
public function registerExtension(Extension\Extension $extension) : self
{
foreach($extension->tokens ?? (array) ( $extension->token ?? [] ) as $token) {
$tokens = $extension->tokens ?? (array) ( $extension->token ?? [] );
foreach($tokens as $token) {
$this->extensionList[$token] = $extension;
}
if (! $tokens ) {
$this->extensionList[] = $extension;
}
return $this;
}
public function registerExtensionsFunctions(Compiler\Context $context) : void
{
foreach($this->extensionList as $ext) {
if ($ext instanceof FunctionExtension) {
foreach ($ext->exportFunctions() as $name => $value) {
if ( is_string($value) ) {
$callable = fn(...$args) => call_user_func_array([ $ext, $value ], $args);
}
$context->pushFunction(is_numeric($name) ? $value : $name, $callable ?? $value);
}
}
}
}
public function getExtensionFromToken(string $name) : Extension\Extension
{
if ( false === $this->extensionList[$name] ?? false ) {