Skip to content

Commit

Permalink
Convert "UnknownDataquery" to PHP
Browse files Browse the repository at this point in the history
  • Loading branch information
K-Phoen committed Oct 9, 2024
1 parent 873995c commit 667a1d2
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 0 deletions.
17 changes: 17 additions & 0 deletions internal/jennies/php/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ func (jenny Runtime) Generate(context languages.Context) (codejen.Files, error)
return nil, err
}

unknownDataqueryBuilder, err := jenny.unknownDataqueryBuilder()
if err != nil {
return nil, err
}

builderInterface, err := jenny.builderInterface()
if err != nil {
return nil, err
Expand All @@ -38,6 +43,7 @@ func (jenny Runtime) Generate(context languages.Context) (codejen.Files, error)
runtime,
builderInterface,
unknownDataquery,
unknownDataqueryBuilder,
}, nil
}

Expand Down Expand Up @@ -98,3 +104,14 @@ func (jenny Runtime) unknownDataquery() (codejen.File, error) {

return *codejen.NewFile("src/Cog/UnknownDataquery.php", rendered, jenny), nil
}

func (jenny Runtime) unknownDataqueryBuilder() (codejen.File, error) {
rendered, err := jenny.tmpl.RenderAsBytes("runtime/unknown_dataquery_builder.tmpl", map[string]any{
"NamespaceRoot": jenny.config.NamespaceRoot,
})
if err != nil {
return codejen.File{}, err
}

return *codejen.NewFile("src/Cog/UnknownDataqueryBuilder.php", rendered, jenny), nil
}
4 changes: 4 additions & 0 deletions internal/jennies/php/templates/runtime/runtime.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ final class Runtime

public function convertDataqueryToCode(Dataquery $dataquery): string
{
if ($dataquery instanceof UnknownDataquery) {
return '(new \{{ .NamespaceRoot }}\Cog\UnknownDataqueryBuilder(new \{{ .NamespaceRoot }}\Cog\UnknownDataquery('.var_export($dataquery->toArray(), true).')))';
}

if (!isset($this->dataqueryVariants[$dataquery->dataqueryType()])) {
return '/* could not convert dataquery to PHP */';
}
Expand Down
8 changes: 8 additions & 0 deletions internal/jennies/php/templates/runtime/unknown_dataquery.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ final class UnknownDataquery implements \ArrayAccess, \JsonSerializable, Dataque
$this->data = $data;
}

/**
* @return array<string, mixed>
*/
public function toArray(): array
{
return $this->data;
}

public function dataqueryType(): string
{
return 'unknown';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace {{ .NamespaceRoot }}\Cog;

/**
* @implements Builder<UnknownDataquery>
*/
final class UnknownDataqueryBuilder implements Builder
{
protected UnknownDataquery $internal;

public function __construct(?UnknownDataquery $object = null)
{
$this->internal = $object ?: new UnknownDataquery();
}

/**
* @return UnknownDataquery
*/
public function build()
{
return $this->internal;
}
}

0 comments on commit 667a1d2

Please sign in to comment.