classDocumentReader
final class DocumentReader
Reads configuration and definition documents written in YAML or Markdown.
A file ending in .md or .markdown is read as Markdown cards; any other file as YAML. Every document is validated against its bundled schema and any local schema it declares.
Properties§
public MarkdownDocument $markdown = new \Requirements\Config\MarkdownDocument()Methods§
public function __construct(public MarkdownDocument $markdown = new \Requirements\Config\MarkdownDocument())Parameters
$markdown | MarkdownDocument | Reads Markdown definitions and remembers how they were written |
Calls 1
public function read(
string $path,
string $kind,
array<string, mixed> $markdown = [],
string|null $directory = null,
): stdClassReads and validates a document.
Parameters
$path | string | The document file |
$kind | string | "config" or "definition", naming the schema |
$markdown | array<string, mixed> | The markdown options |
$directory | string|null | The configuration directory; the file's directory when null |
Returns
stdClass The documentThrows
InvalidInputException When the document breaks its schema or is not a mappingJsonException When a schema cannot be decodedParseException When a YAML document is malformedTest cases 12
DocumentReaderTest::testReadDispatchesMarkdownFilescallsDocumentReaderTest::testReadParsesEmptyYamlMappingAsObjectcallsDocumentReaderTest::testReadParsesMarkdownDefinitionWithOptionscallsDocumentReaderTest::testReadParsesYamlConfigurationcallsDocumentReaderTest::testReadParsesYamlDefinitionAsObjectscallsDocumentReaderTest::testReadRejectsDocumentThatIsNotMappingcallsDocumentReaderTest::testReadRejectsMalformedYamlcallsDocumentReaderTest::testReadValidatesAgainstNamedSchemacallsDocumentReaderTest::testReadValidatesMarkdownAgainstDefinitionSchemacallsMarkdownDocumentTest::testReadRejectsAmbiguousOrMisleadingCardDatacallsMarkdownDocumentTest::testReadRejectsInvalidStructureAndFieldscallsMarkdownDocumentTest::testReadRequiresTheExperimentalOptIncalls
Called from 3
- method-call Requirements\Config\DefinitionReader::read() packages/requirements/src/Config/DefinitionReader.php:55
- method-call Requirements\Config\Loader::document() packages/requirements/src/Config/Loader.php:88
- method-call Requirements\Console\Formatter::format() packages/requirements/src/Console/Formatter.php:35
Calls 8
- static-call DocumentReader::isMarkdown() line 45
- method-call MarkdownDocument::read() line 46
- static-call
Yaml::parseFile()line 47 - class-const
Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE()line 47 - class-const
Yaml::PARSE_OBJECT_FOR_MAP()line 47 - method-call SchemaValidator::validate() line 48
- new SchemaValidator line 48
- new InvalidInputException line 50
public static function isMarkdown(string $path): boolTells whether a file is read as Markdown.
Parameters
$path | string | The file |
Returns
bool True for the .md and .markdown extensions, in any caseTest cases 1
Called from 3
- static-call Requirements\Config\DocumentReader::read() packages/requirements/src/Config/DocumentReader.php:45
- static-call Requirements\Config\SchemaValidator::validate() packages/requirements/src/Config/SchemaValidator.php:43
- static-call Requirements\Console\Formatter::format() packages/requirements/src/Console/Formatter.php:36
public static function mapping(stdClass $document, string $file): array<string, mixed>Converts a read document to a mapping.
Parameters
$document | stdClass | The document |
$file | string | The document file, used in the error message |
Returns
array<string, mixed> The document as nested arraysThrows
InvalidInputException When the document is not a mappingJsonException When the document cannot be convertedTest cases 5
Called from 2
Calls 3
- static-call Fields::mapping() line 80
- function-call
json_decodeline 80 - function-call
json_encodeline 80
public static function yaml(mixed $data): stringWrites data as a formatted YAML document.
Parameters
$data | mixed | The document |
Returns
string The YAML textTest cases 1
Called from 2
Test cases 34§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 17
DocumentReaderTest::testIsMarkdownRecognizesExtensionscallsDocumentReaderTest::testMappingAcceptsEmptyDocumentcallsDocumentReaderTest::testMappingConvertsNestedObjectsToArrayscallsDocumentReaderTest::testMappingRejectsDeepDocumentscallsDocumentReaderTest::testMappingRejectsNumericKeyscallsDocumentReaderTest::testMappingRejectsUnencodableValuescallsDocumentReaderTest::testMarkdownIsTheGivenDocumentcallsDocumentReaderTest::testReadDispatchesMarkdownFilescallsDocumentReaderTest::testReadParsesEmptyYamlMappingAsObjectcallsDocumentReaderTest::testReadParsesMarkdownDefinitionWithOptionscallsDocumentReaderTest::testReadParsesYamlConfigurationcallsDocumentReaderTest::testReadParsesYamlDefinitionAsObjectscallsDocumentReaderTest::testReadRejectsDocumentThatIsNotMappingcallsDocumentReaderTest::testReadRejectsMalformedYamlcallsDocumentReaderTest::testReadValidatesAgainstNamedSchemacallsDocumentReaderTest::testReadValidatesMarkdownAgainstDefinitionSchemacallsDocumentReaderTest::testYamlWritesFormattedDocumentcalls
Other tests reaching this symbol 17
DefinitionReaderTestcallsLoaderTestcallsReferenceTestcallsCardWriterTestcallsMarkdownDocumentTest::testReadRejectsAmbiguousOrMisleadingCardDatacallsMarkdownDocumentTest::testReadRejectsInvalidStructureAndFieldscallsMarkdownDocumentTest::testReadRequiresTheExperimentalOptIncallsSchemaValidatorTestcallsApplicationTestcallsCommandHandlerTestcallsCommandLineTestcallsExecutorTestcallsFormatterTestcallsAnalyzerTestcallsCoverageTestcallsSnapshotTestcallsVerifierTestcalls
Relations§
Instantiated in 3
Static calls 6
- static-call Requirements\Config\DefinitionReader::read() packages/requirements/src/Config/DefinitionReader.php:55
- static-call Requirements\Config\Loader::document() packages/requirements/src/Config/Loader.php:88
- static-call Requirements\Config\Markdown\Render\CardWriter::render() packages/requirements/src/Config/Markdown/Render/CardWriter.php:43
- static-call Requirements\Config\SchemaValidator::validate() packages/requirements/src/Config/SchemaValidator.php:43
- static-call Requirements\Console\Formatter::format() packages/requirements/src/Console/Formatter.php:36
- static-call Requirements\Console\Formatter::format() packages/requirements/src/Console/Formatter.php:36
Method calls 3
- method-call Requirements\Config\DefinitionReader::read() packages/requirements/src/Config/DefinitionReader.php:55
- method-call Requirements\Config\Loader::document() packages/requirements/src/Config/Loader.php:88
- method-call Requirements\Console\Formatter::format() packages/requirements/src/Console/Formatter.php:35