Skip to content
  • Hartley McGuire's avatar
    4756eaf5
    [ruby/rdoc] Fix ToMarkdown missing newlines for label-lists · 4756eaf5
    Hartley McGuire authored
    Previously, using ToMarkdown on a label-list would generate output that
    could not be reparsed by the RDoc::Markdown parser:
    
    ```
    md = <<~MD
    apple
    : a red fruit
    
    banana
    : a yellow fruit
    MD
    
    doc = RDoc::Markdown.parse(md)
    doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit"]], [item: ["banana"]; [para: "a yellow fruit"]]]]
    
    new_md = doc.accept(RDoc::Markup::ToMarkdown.new)
    new_md # => "apple\n:   a red fruit\nbanana\n:   a yellow fruit\n\n"
    
    new_doc = RDoc::Markdown.parse(new_md)
    new_doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit\nbanana\n: a yellow fruit"]]]]
    ```
    
    The issue is that the [PHP Markdown Extra spec][1] requires a newline
    after each definition list item, but ToMarkdown was not putting newlines
    between label-list items.
    
    This commit fixes the issue by properly appending a newline after each
    label-list item so that the output of ToMarkdown can be reparsed by
    RDoc::Markdown:
    
    ```
    md = <<~MD
    apple
    : a red fruit
    
    banana
    : a yellow fruit
    MD
    
    doc = RDoc::Markdown.parse(mdoc)
    doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit"]], [item: ["banana"]; [para: "a yellow fruit"]]]]
    
    new_md = doc.accept(RDoc::Markup::ToMarkdown.new)
    new_md # => "apple\n:   a red fruit\n\nbanana\n:   a yellow fruit\n\n"
    
    new_doc = RDoc::Markdown.parse(new_md)
    new_doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit"]], [item: ["banana"]; [para: "a yellow fruit"]]]]
    ```
    
    [1]: https://michelf.ca/projects/php-markdown/extra/#def-list
    
    https://github.com/ruby/rdoc/commit/c65266437c
    4756eaf5
    [ruby/rdoc] Fix ToMarkdown missing newlines for label-lists
    Hartley McGuire authored
    Previously, using ToMarkdown on a label-list would generate output that
    could not be reparsed by the RDoc::Markdown parser:
    
    ```
    md = <<~MD
    apple
    : a red fruit
    
    banana
    : a yellow fruit
    MD
    
    doc = RDoc::Markdown.parse(md)
    doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit"]], [item: ["banana"]; [para: "a yellow fruit"]]]]
    
    new_md = doc.accept(RDoc::Markup::ToMarkdown.new)
    new_md # => "apple\n:   a red fruit\nbanana\n:   a yellow fruit\n\n"
    
    new_doc = RDoc::Markdown.parse(new_md)
    new_doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit\nbanana\n: a yellow fruit"]]]]
    ```
    
    The issue is that the [PHP Markdown Extra spec][1] requires a newline
    after each definition list item, but ToMarkdown was not putting newlines
    between label-list items.
    
    This commit fixes the issue by properly appending a newline after each
    label-list item so that the output of ToMarkdown can be reparsed by
    RDoc::Markdown:
    
    ```
    md = <<~MD
    apple
    : a red fruit
    
    banana
    : a yellow fruit
    MD
    
    doc = RDoc::Markdown.parse(mdoc)
    doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit"]], [item: ["banana"]; [para: "a yellow fruit"]]]]
    
    new_md = doc.accept(RDoc::Markup::ToMarkdown.new)
    new_md # => "apple\n:   a red fruit\n\nbanana\n:   a yellow fruit\n\n"
    
    new_doc = RDoc::Markdown.parse(new_md)
    new_doc # => [doc: [list: NOTE [item: ["apple"]; [para: "a red fruit"]], [item: ["banana"]; [para: "a yellow fruit"]]]]
    ```
    
    [1]: https://michelf.ca/projects/php-markdown/extra/#def-list
    
    https://github.com/ruby/rdoc/commit/c65266437c
Loading