Uncaught exception 'RomaricDrigon\MetaYaml\Exception\NodeValidatorException' with message 'The node 'root.book.generator.name' is not an array'
Closed this issue · 1 comments
cordoval commented
# easybook_schema.yml
root:
_type: array
_children:
book:
_type: array
_children:
title:
_required: true
_type: text
author:
_type: text
edition:
_type: text
language:
_type: text
publication_date:
_type: text
generator:
_type: prototype
_prototype:
_type: array
_children:
name:
_type: text
version:
_type: text
contents:
_type: prototype
_prototype:
_type: array
_children:
name:
_type: text
version:
_type: text
editions:
_type: text
# config.yml
easybook:
parameters:
parser.options:
code_block_type: fenced
book:
title: easybook documentation
author: Javier Eguiluz
edition: First edition
language: en
publication_date: ~
generator: { name: easybook, version: 5.0 }
contents:
- { element: cover }
- { element: toc }
- { element: chapter, number: 1, content: 01-publishing-your-first-book.md }
- { element: chapter, number: 2, content: 02-book-contents-and-configuration.md }
- { element: chapter, number: 3, content: 03-editions.md }
- { element: chapter, number: 4, content: 04-themes.md }
- { element: chapter, number: 5, content: 05-publishing-html-books.md }
- { element: chapter, number: 6, content: 06-publishing-epub-books.md }
- { element: chapter, number: 7, content: 07-publishing-mobi-books.md }
- { element: chapter, number: 8, content: 08-publishing-pdf-books.md }
- { element: chapter, number: 9, content: 09-plugins.md }
- { element: chapter, number: 10, content: 10-hacking-easybook.md }
- { element: appendix, number: A, content: A-markdown-reference.md }
editions:
kindle:
extends: ebook
format: mobi
ebook:
format: epub
include_styles: true
highlight_cache: true
highlight_code: false
labels: ['appendix', 'chapter', 'figure']
theme: clean
toc:
deep: 1
elements: ["appendix", "chapter"]
print:
format: pdf
highlight_cache: true
highlight_code: true
isbn: ~
include_styles: true
labels: ['appendix', 'chapter', 'figure']
margin:
top: 25mm
bottom: 25mm
inner: 30mm
outter: 20mm
page_size: A4
theme: clean
toc:
deep: 2
elements: ["appendix", "chapter"]
two_sided: true
web:
format: html
include_styles: true
highlight_cache: true
highlight_code: true
labels: ['appendix', 'chapter', 'figure']
theme: clean
toc:
deep: 2
elements: ["appendix", "chapter"]
website:
extends: web
format: html_chunked
chunk_level: 1
images_base_dir: /img/doc-en/
easybook-project.org:
format: html_chunked
chunk_level: 2
images_base_dir: /images/doc-en/
include_styles: false
highlight_cache: false
highlight_code: true
labels: ['appendix', 'chapter', 'figure']
theme: clean
toc:
deep: 2
elements: ["appendix", "chapter"]
<?php
include __DIR__.'/vendor/autoload.php';
use RomaricDrigon\MetaYaml\MetaYaml;
use RomaricDrigon\MetaYaml\Loader\YamlLoader;
$loader = new YamlLoader(); // Yaml using Symfony Yaml component
// or you can load from a file
$schema = $loader->loadFromFile(__DIR__.'/easybook_schema.yml');
$data = $loader->loadFromFile(__DIR__.'/config.yml');
// create object, load schema from an array
$schemaEngine = new MetaYaml($schema);
$schemaEngine->validateSchema(); // return true or throw an exception
// finally, validate your data array according to the schema
$schemaEngine->validate($data); // return true or throw an exception
echo "Successful validation";
~ php run.php Luiss-MacBook-Pro-2 [3:30:28]
PHP Fatal error: Uncaught exception 'RomaricDrigon\MetaYaml\Exception\NodeValidatorException' with message 'The node 'root.book.generator.name' is not an array' in /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/ArrayNodeValidator.php:14
Stack trace:
#0 /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/SchemaValidator.php(48): RomaricDrigon\MetaYaml\NodeValidator\ArrayNodeValidator->validate('root.book.gener...', Array, 'easybook')
#1 /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/PrototypeNodeValidator.php(30): RomaricDrigon\MetaYaml\SchemaValidator->validateNode('root.book.gener...', 'array', Array, 'easybook')
#2 /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/SchemaValidator.php(48): RomaricDrigon\MetaYaml\NodeValidator\PrototypeNodeValidator->validate('root.book.gener...', Array, Array)
#3 /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/ArrayNodeValidator.php(24): RomaricDrigon\MetaYaml\SchemaVali in /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/ArrayNodeValidator.php on line 14
Fatal error: Uncaught exception 'RomaricDrigon\MetaYaml\Exception\NodeValidatorException' with message 'The node 'root.book.generator.name' is not an array' in /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/ArrayNodeValidator.php on line 14
RomaricDrigon\MetaYaml\Exception\NodeValidatorException: The node 'root.book.generator.name' is not an array in /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/ArrayNodeValidator.php on line 14
Call Stack:
0.0002 231216 1. {main}() /Users/cordoval/Sites/schema_generate/run.php:0
0.0467 887840 2. RomaricDrigon\MetaYaml\MetaYaml->validate() /Users/cordoval/Sites/schema_generate/run.php:19
0.0467 888072 3. RomaricDrigon\MetaYaml\SchemaValidator->validate() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/MetaYaml.php:61
0.0467 888120 4. RomaricDrigon\MetaYaml\SchemaValidator->validateNode() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/SchemaValidator.php:32
0.0467 888248 5. RomaricDrigon\MetaYaml\NodeValidator\ArrayNodeValidator->validate() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/SchemaValidator.php:48
0.0467 888408 6. RomaricDrigon\MetaYaml\SchemaValidator->validateNode() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/ArrayNodeValidator.php:24
0.0467 888536 7. RomaricDrigon\MetaYaml\NodeValidator\ArrayNodeValidator->validate() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/SchemaValidator.php:48
0.0468 889320 8. RomaricDrigon\MetaYaml\SchemaValidator->validateNode() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/ArrayNodeValidator.php:24
0.0468 889448 9. RomaricDrigon\MetaYaml\NodeValidator\PrototypeNodeValidator->validate() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/SchemaValidator.php:48
0.0468 890176 10. RomaricDrigon\MetaYaml\SchemaValidator->validateNode() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/NodeValidator/PrototypeNodeValidator.php:30
0.0468 890304 11. RomaricDrigon\MetaYaml\NodeValidator\ArrayNodeValidator->validate() /Users/cordoval/Sites/schema_generate/src/RomaricDrigon/MetaYaml/SchemaValidator.php:48
romaricdrigon commented
Hi Luis,
There's a small error in your schema: a prototype is already an array (a repetition of items).
So you can either keep your schema and do:
generator:
- { name: easybook, version: 5.0 }
- { name: anotherGenerator, version: 4.0 }
Or the other way, keep your data and modify your schema to:
generator:
_type: array
_children:
name:
_type: text
version:
_type: text
Please take a second look at the documentation, and tell me if things are not clear.
I'm not sure of what to do, but I'll try to enhance it.