Skip to content

Commit 5e64f90

Browse files
committed
Out: add types
1 parent c71d87d commit 5e64f90

File tree

3 files changed

+31
-50
lines changed

3 files changed

+31
-50
lines changed

src/PHPDraft/Out/BaseTemplateRenderer.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,47 +22,47 @@ abstract class BaseTemplateRenderer
2222
*
2323
* @var int
2424
*/
25-
public $sorting;
25+
public int $sorting;
2626
/**
2727
* CSS Files to load.
2828
*
2929
* @var string[]
3030
*/
31-
public $css = [];
31+
public array $css = [];
3232
/**
3333
* JS Files to load.
3434
*
3535
* @var string[]
3636
*/
37-
public $js = [];
37+
public array $js = [];
3838
/**
3939
* JSON object of the API blueprint.
4040
*
41-
* @var mixed
41+
* @var array<object>
4242
*/
43-
protected $categories = [];
43+
protected array $categories = [];
4444
/**
4545
* The template file to load.
4646
*
4747
* @var string
4848
*/
49-
protected $template;
49+
protected string $template;
5050
/**
5151
* The image to use as a logo.
5252
*
5353
* @var string|null
5454
*/
55-
protected $image = null;
55+
protected ?string $image = null;
5656
/**
5757
* The base data of the API.
5858
*
59-
* @var array<mixed>
59+
* @var array<string, mixed>
6060
*/
61-
protected $base_data;
61+
protected array $base_data;
6262
/**
6363
* Structures used in all data.
6464
*
6565
* @var ObjectStructureElement[]
6666
*/
67-
protected $base_structures = [];
67+
protected array $base_structures = [];
6868
}

src/PHPDraft/Out/TemplateRenderer.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function __construct(string $template, ?string $image)
4949
/**
5050
* Pre-parse objects needed and print HTML.
5151
*
52-
* @param mixed $object JSON to parse from
52+
* @param object $object JSON to parse from
5353
*
5454
* @return string
5555
*
@@ -59,7 +59,7 @@ public function __construct(string $template, ?string $image)
5959
* @throws \Twig\Error\RuntimeError
6060
* @throws \Twig\Error\SyntaxError
6161
*/
62-
public function get($object): string
62+
public function get(object $object): string
6363
{
6464
$include = $this->find_include_file($this->template, 'twig', false);
6565
if ($include === null) {
@@ -86,9 +86,11 @@ public function get($object): string
8686
$twig = TwigFactory::get($loader);
8787
$template = $twig->load('main.twig');
8888

89-
$extras = array_filter($this->base_data, function ($value) {
90-
return !in_array($value, ['HOST', 'TITLE', 'ALT_HOST', 'FORMAT', 'DESC', 'COLOR_1', 'COLOR_2']);
91-
}, ARRAY_FILTER_USE_KEY);
89+
$extras = array_filter(
90+
$this->base_data,
91+
fn($value) => !in_array($value, ['HOST', 'TITLE', 'ALT_HOST', 'FORMAT', 'DESC', 'COLOR_1', 'COLOR_2']),
92+
ARRAY_FILTER_USE_KEY
93+
);
9294
$extras['host'] = $this->base_data['HOST'] ?? null;
9395

9496
return $template->render([

src/PHPDraft/Out/TwigFactory.php

Lines changed: 14 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -25,55 +25,34 @@ public static function get(LoaderInterface $loader): Environment
2525
{
2626
$twig = new Environment($loader);
2727

28-
$twig->addFilter(new TwigFilter('minify_css', function ($string) {
28+
$twig->addFilter(new TwigFilter('method_icon', fn(string $string) => TemplateRenderer::get_method_icon($string)));
29+
$twig->addFilter(new TwigFilter('strip_link_spaces', fn(string $string) => TemplateRenderer::strip_link_spaces($string)));
30+
$twig->addFilter(new TwigFilter('response_status', fn(string $string) => TemplateRenderer::get_response_status((int) $string)));
31+
$twig->addFilter(new TwigFilter('status_reason', fn(string $string) => (new Httpstatus())->getReasonPhrase($string)));
32+
$twig->addFilter(new TwigFilter('minify_css', function (string $string) {
2933
$minify = new Css();
3034
$minify->add($string);
3135
return $minify->minify();
3236
}));
33-
$twig->addFilter(new TwigFilter('minify_js', function ($string) {
37+
$twig->addFilter(new TwigFilter('minify_js', function (string $string) {
3438
$minify = new JS();
3539
$minify->add($string);
3640
return $minify->minify();
3741
}));
38-
$twig->addFilter(new TwigFilter('method_icon', function ($string) {
39-
return TemplateRenderer::get_method_icon($string);
40-
}));
41-
$twig->addFilter(new TwigFilter('strip_link_spaces', function ($string) {
42-
return TemplateRenderer::strip_link_spaces($string);
43-
}));
44-
$twig->addFilter(new TwigFilter('response_status', function ($string) {
45-
return TemplateRenderer::get_response_status($string);
46-
}));
47-
$twig->addFilter(new TwigFilter('status_reason', function ($string) {
48-
return (new Httpstatus())->getReasonPhrase($string);
49-
;
50-
}));
51-
$twig->addTest(new TwigTest('enum_type', function ($object) {
52-
return $object instanceof EnumStructureElement;
53-
}));
54-
$twig->addTest(new TwigTest('object_type', function ($object) {
55-
return $object instanceof ObjectStructureElement;
56-
}));
57-
$twig->addTest(new TwigTest('array_type', function ($object) {
58-
return $object instanceof ArrayStructureElement;
59-
}));
60-
$twig->addTest(new TwigTest('bool', function ($object) {
61-
return is_bool($object);
62-
}));
63-
$twig->addTest(new TwigTest('string', function ($object) {
64-
return is_string($object);
65-
}));
6642

67-
$twig->addTest(new TwigTest('inheriting', function (BasicStructureElement $object) {
43+
$twig->addTest(new TwigTest('enum_type', fn(object $object) => $object instanceof EnumStructureElement));
44+
$twig->addTest(new TwigTest('object_type', fn(object $object) => $object instanceof ObjectStructureElement));
45+
$twig->addTest(new TwigTest('array_type', fn(object $object) => $object instanceof ArrayStructureElement));
46+
$twig->addTest(new TwigTest('bool', fn($object) => is_bool($object)));
47+
$twig->addTest(new TwigTest('string', fn($object) => is_string($object)));
48+
$twig->addTest(new TwigTest('variable_type', fn(BasicStructureElement $object) => $object->is_variable));
49+
$twig->addTest(new TwigTest('inheriting', function (BasicStructureElement $object): bool {
6850
$options = array_merge(StructureElement::DEFAULTS, ['member', 'select', 'option', 'ref', 'T', 'hrefVariables']);
6951
return !(is_null($object->element) || in_array($object->element, $options));
7052
}));
71-
$twig->addTest(new TwigTest('variable_type', function (BasicStructureElement $object) {
72-
return $object->is_variable;
73-
}));
7453

7554
$twig->addRuntimeLoader(new class implements RuntimeLoaderInterface {
76-
public function load(string $class)
55+
public function load(string $class): ?object
7756
{
7857
if (MarkdownRuntime::class === $class) {
7958
return new MarkdownRuntime(new DefaultMarkdown());

0 commit comments

Comments
 (0)