[ 
https://issues.apache.org/jira/browse/DOXIA-690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17681789#comment-17681789
 ] 

ASF GitHub Bot commented on DOXIA-690:
--------------------------------------

michael-o commented on code in PR #141:
URL: https://github.com/apache/maven-doxia/pull/141#discussion_r1090038580


##########
doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java:
##########
@@ -156,6 +178,86 @@ public void parse(Reader source, Sink sink, String 
reference) throws ParseExcept
         }
     }
 
+    private boolean processMetadataForHtml(StringBuilder html, StringBuilder 
source) {
+        final Map<String, List<String>> metaData;
+        final int endOffset; // end of metadata within source
+        // support two types of metadata:
+        if (source.toString().startsWith("---")) {
+            // 1. YAML front matter 
(https://github.com/vsch/flexmark-java/wiki/Extensions#yaml-front-matter)
+            Node documentRoot = 
FLEXMARK_METADATA_PARSER.parse(source.toString());
+            YamlFrontMatterVisitor visitor = new YamlFrontMatterVisitor();
+            visitor.visit(documentRoot);
+            metaData = visitor.getData();
+            endOffset = visitor.getEndOffset();
+        } else {
+            // 2. Multimarkdown metadata 
(https://fletcher.github.io/MultiMarkdown-5/metadata.html), not yet supported
+            // by Flexmark (https://github.com/vsch/flexmark-java/issues/550)
+            metaData = new LinkedHashMap<>();
+            Matcher metadataMatcher = METADATA_SECTION_PATTERN.matcher(source);
+            if (metadataMatcher.find()) {
+                String entry = metadataMatcher.group(0) + '\n';

Review Comment:
   Line separator





> Markdown Parser: Multiline metadata incorrectly rendered
> --------------------------------------------------------
>
>                 Key: DOXIA-690
>                 URL: https://issues.apache.org/jira/browse/DOXIA-690
>             Project: Maven Doxia
>          Issue Type: Bug
>          Components: Module - Markdown
>            Reporter: Konrad Windszus
>            Assignee: Konrad Windszus
>            Priority: Major
>
> Markdown uses the following metadata format in its sink: 
> [http://fletcher.github.io/MultiMarkdown-5/metadata.html].
> In case a metadata key has multiple values on multiple lines it is emitted as 
> following from the {{MarkdownSink}}:
> {code:java}
> title: Guide to creating a site
> author: Brett Porter
> Jason van Zyl
> date: 2015-07-18 {code}
> That leads to incorrect XHTML output as the second line for {{author}} is not 
> detected correctly and instead of being emitted as metadata is emitted as 
> regular paragraph in the HTML body. This is due to 
> https://github.com/apache/maven-doxia/blob/7509feb03af4d4fb7d48b4f9ef38ff5c1a17a149/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java#L110
>  only detecting single line metadata values.
> Although this might be a glitch of the underlying Markdown Parser 
> implementation the metadata format explicitly recommends:
> {quote}
>  To keep multiline metadata values from being confused with additional 
> metadata, I recommend indenting each new line of metadata. If your metadata 
> value includes a colon, it must be indented to keep it from being treated as 
> a new key-value pair
> {quote}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to