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
@ -6,6 +6,7 @@ Released: -
|
|||||||
|
|
||||||
```
|
```
|
||||||
* [New] Add Pico's social icons to default theme
|
* [New] Add Pico's social icons to default theme
|
||||||
|
* [Fixed] Fix handling of non-YAML 1-line front matters
|
||||||
```
|
```
|
||||||
|
|
||||||
### Version 1.0.3
|
### Version 1.0.3
|
||||||
|
@ -777,7 +777,14 @@ class Pico
|
|||||||
if (preg_match($pattern, $rawContent, $rawMetaMatches) && isset($rawMetaMatches[3])) {
|
if (preg_match($pattern, $rawContent, $rawMetaMatches) && isset($rawMetaMatches[3])) {
|
||||||
$yamlParser = new \Symfony\Component\Yaml\Parser();
|
$yamlParser = new \Symfony\Component\Yaml\Parser();
|
||||||
$meta = $yamlParser->parse($rawMetaMatches[3]);
|
$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) {
|
foreach ($headers as $fieldId => $fieldName) {
|
||||||
$fieldName = strtolower($fieldName);
|
$fieldName = strtolower($fieldName);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user