]> BookStack Code Mirror - bookstack/commitdiff
Fixed conctenation of direct book pages within markdown export
authorDan Brown <redacted>
Wed, 23 Mar 2022 14:31:42 +0000 (14:31 +0000)
committerDan Brown <redacted>
Wed, 23 Mar 2022 14:31:42 +0000 (14:31 +0000)
- Updated to ensure seperation with newlines.
- Added test to cover.

For #3341

app/Entities/Tools/ExportFormatter.php
tests/Entity/ExportTest.php

index 9029d7270dc64d8767afdeb6f8755a6888d1ea4e..99aa4536f52bef1ec985c2b46aace5ed5c0f2669 100644 (file)
@@ -326,7 +326,7 @@ class ExportFormatter
             $text .= $this->pageToMarkdown($page) . "\n\n";
         }
 
-        return $text;
+        return trim($text);
     }
 
     /**
@@ -338,12 +338,12 @@ class ExportFormatter
         $text = '# ' . $book->name . "\n\n";
         foreach ($bookTree as $bookChild) {
             if ($bookChild instanceof Chapter) {
-                $text .= $this->chapterToMarkdown($bookChild);
+                $text .= $this->chapterToMarkdown($bookChild) . "\n\n";
             } else {
-                $text .= $this->pageToMarkdown($bookChild);
+                $text .= $this->pageToMarkdown($bookChild) . "\n\n";
             }
         }
 
-        return $text;
+        return trim($text);
     }
 }
index 2841175ad19d4f349a5d94f64ba5ee60eb0bc2e3..f96ff97faddd6c7822a492ea41eaecbef9d9e9eb 100644 (file)
@@ -420,6 +420,25 @@ class ExportTest extends TestCase
         $resp->assertSee('# ' . $page->name);
     }
 
+    public function test_book_markdown_export_concats_immediate_pages_with_newlines()
+    {
+        /** @var Book $book */
+        $book = Book::query()->whereHas('pages')->first();
+
+        $this->asEditor()->get($book->getUrl('/create-page'));
+        $this->get($book->getUrl('/create-page'));
+
+        [$pageA, $pageB] = $book->pages()->where('chapter_id', '=', 0)->get();
+        $pageA->html = '<p>hello tester</p>';
+        $pageA->save();
+        $pageB->name = 'The second page in this test';
+        $pageB->save();
+
+        $resp = $this->get($book->getUrl('/export/markdown'));
+        $resp->assertDontSee("hello tester# The second page in this test");
+        $resp->assertSee("hello tester\n\n# The second page in this test");
+    }
+
     public function test_export_option_only_visible_and_accessible_with_permission()
     {
         $book = Book::query()->whereHas('pages')->whereHas('chapters')->first();