- A lot of bugfixes made for this release.
This commit is contained in:
1 parent
4e909b2840
commit
8df38b568c
13 files changed
+159
-71
No files matched your search
+25
-2
@@ -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 ) {
|
||||
|
||||
Reference in new issue
Block a user