Skip to content

Commit c6097a4

Browse files
committed
Fix enums and add debug methods
1 parent 5d8b3af commit c6097a4

File tree

7 files changed

+27
-25
lines changed

7 files changed

+27
-25
lines changed

phpdraft

+19-15
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,17 @@ try
3131
->opt('header_image:i', 'Specifies an image to display in the header.', false, 'string')
3232
->opt('css:c', 'Specifies a CSS file to include (value is put in a link element without checking).', false, 'string')
3333
->opt('javascript:j', 'Specifies a JS file to include (value is put in a script element without checking).', false, 'string')
34-
->opt('version:v', 'Print the version for PHPDraft.', false);
34+
->opt('version:v', 'Print the version for PHPDraft.', false)
35+
->opt('debug-json-file', 'Input a rendered JSON file for debugging.', false, 'string')
36+
->opt('debug-json', 'Input a rendered JSON text for debugging.', false, 'string');
3537

3638
// Parse and return cli args.
3739
$args = $cli->parse($argv, FALSE);
3840
if (isset($args['version'])) {
3941
Version::version();
4042
throw new ExecutionException('', 0);
4143
}
42-
if (!isset($args['file'])) {
44+
if (!(isset($args['file']) || isset($args['debug-json-file']) || isset($args['debug-json']))) {
4345
throw new ExecutionException('Missing required option: file', 1);
4446
}
4547

@@ -48,20 +50,22 @@ try
4850
define('DRAFTER_ONLINE_MODE', 1);
4951
}
5052

51-
$apib = new ApibFileParser($args->getOpt('file'));
52-
$apib = $apib->parse();
53-
$offline = FALSE;
54-
$online = FALSE;
53+
if (!isset($args['debug-json-file']) && !isset($args['debug-json'])) {
54+
$apib = new ApibFileParser($args->getOpt('file'));
55+
$apib = $apib->parse();
56+
$offline = FALSE;
57+
$online = FALSE;
5558

56-
try
57-
{
58-
$parser = ParserFactory::getDrafter();
59-
$parser = $parser->init($apib);
60-
$data = $parser->parseToJson();
61-
}
62-
catch (ResourceException $exception)
63-
{
64-
throw new ExecutionException('No drafter available', 255);
59+
try {
60+
$parser = ParserFactory::getDrafter();
61+
$parser = $parser->init($apib);
62+
$data = $parser->parseToJson();
63+
} catch (ResourceException $exception) {
64+
throw new ExecutionException('No drafter available', 255);
65+
}
66+
} else {
67+
$json_string = $args['debug-json'] ?? file_get_contents($args['debug-json-file']);
68+
$data = json_decode($json_string);
6569
}
6670

6771
$html = ParserFactory::getJson()->init($data);

src/PHPDraft/Model/Elements/EnumStructureElement.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ public function parse(object $object, array &$dependencies): StructureElement
2626

2727
$this->parse_common($object, $dependencies);
2828

29-
$this->key = is_null($this->key) ? $object->content : $this->key;
30-
$this->type = is_null($this->type) ? $object->element : $this->type;
29+
$this->key = $this->key ?? $object->content ?? 'UNKNOWN';
30+
$this->type = $this->type ?? $object->element;
3131

3232
if (!isset($object->content->value->content)) {
3333
$this->value = $this->key;
@@ -41,7 +41,7 @@ public function parse(object $object, array &$dependencies): StructureElement
4141
$dependencies[] = $sub_item->element;
4242
}
4343

44-
$this->value[$sub_item->content] = (isset($sub_item->element)) ? $sub_item->element : '';
44+
$this->value[$sub_item->content] = $sub_item->element ?? '';
4545
}
4646

4747
$this->deps = $dependencies;

src/PHPDraft/Model/Elements/ObjectStructureElement.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class ObjectStructureElement extends BasicStructureElement
2121
* Parse a JSON object to a data structure.
2222
*
2323
* @param mixed|null $object An object to parse
24-
* @param array $dependencies Dependencies of this object
24+
* @param array $dependencies Dependencies of this object
2525
*
2626
* @return ObjectStructureElement self reference
2727
*/

src/PHPDraft/Model/Elements/StructureElement.php

-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
namespace PHPDraft\Model\Elements;
1212

13-
use stdClass;
14-
1513
interface StructureElement
1614
{
1715
/**

src/PHPDraft/Parse/BaseHtmlGenerator.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ abstract class BaseHtmlGenerator
3232
/**
3333
* JsonToHTML constructor.
3434
*
35-
* @param stdClass $json JSON representation of an API Blueprint
35+
* @param object $json JSON representation of an API Blueprint
3636
*/
37-
public function init(stdClass $json): self
37+
public function init(object $json): self
3838
{
3939
$this->object = $json;
4040

src/PHPDraft/Parse/Tests/JsonToHTMLTest.php renamed to src/PHPDraft/Parse/Tests/LegacyHtmlGeneratorTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* Class JsonToHTMLTest
1818
* @covers \PHPDraft\Parse\LegacyHtmlGenerator
1919
*/
20-
class JsonToHTMLTest extends LunrBaseTest
20+
class LegacyHtmlGeneratorTest extends LunrBaseTest
2121
{
2222
/**
2323
* Test Class

tests/phpunit.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<file>../src/PHPDraft/Parse/Tests/DrafterTest.php</file>
1616
<file>../src/PHPDraft/Parse/Tests/LegacyDrafterTest.php</file>
1717
<file>../src/PHPDraft/Parse/Tests/DrafterAPITest.php</file>
18-
<file>../src/PHPDraft/Parse/Tests/JsonToHTMLTest.php</file>
18+
<file>../src/PHPDraft/Parse/Tests/LegacyHtmlGeneratorTest.php</file>
1919
</testsuite>
2020
<testsuite name="Model">
2121
<file>../src/PHPDraft/Model/Tests/CategoryTest.php</file>

0 commit comments

Comments
 (0)