Fix Pico::parseFileMeta() for non-YAML 1-liners
\Symfony\Component\Yaml\Parser::parse() returns the unchanged value when a 1-liner string which is no valid YAML is passed. Assume this string to be the page title. Thus the following page will work now: ``` --- This is the title --- # Example page {{ meta.title }} is going to be "This is the title" - or "%meta.title%" == "This is the title". ```
This commit is contained in:
parent
bf1663cc1c
commit
fb4bdfe1fc
2 changed files with 9 additions and 1 deletions
|
@ -6,6 +6,7 @@ Released: -
|
|||
|
||||
```
|
||||
* [New] Add Pico's social icons to default theme
|
||||
* [Fixed] Fix handling of non-YAML 1-line front matters
|
||||
```
|
||||
|
||||
### Version 1.0.3
|
||||
|
|
|
@ -777,7 +777,14 @@ class Pico
|
|||
if (preg_match($pattern, $rawContent, $rawMetaMatches) && isset($rawMetaMatches[3])) {
|
||||
$yamlParser = new \Symfony\Component\Yaml\Parser();
|
||||
$meta = $yamlParser->parse($rawMetaMatches[3]);
|
||||
$meta = ($meta !== null) ? array_change_key_case($meta, CASE_LOWER) : array();
|
||||
|
||||
if ($meta !== null) {
|
||||
// the parser may return a string for non-YAML 1-liners
|
||||
// assume that this string is the page title
|
||||
$meta = is_array($meta) ? array_change_key_case($meta, CASE_LOWER) : array('title' => $meta);
|
||||
} else {
|
||||
$meta = array();
|
||||
}
|
||||
|
||||
foreach ($headers as $fieldId => $fieldName) {
|
||||
$fieldName = strtolower($fieldName);
|
||||
|
|
Loading…
Add table
Reference in a new issue