Fix for preserving whitespace in text containing <pre> (dart-lang/markdown#264)

Fix for preserving whitespace in text containing <pre>
diff --git a/pkgs/markdown/lib/src/html_renderer.dart b/pkgs/markdown/lib/src/html_renderer.dart
index 14dc958..25bcd09 100644
--- a/pkgs/markdown/lib/src/html_renderer.dart
+++ b/pkgs/markdown/lib/src/html_renderer.dart
@@ -77,8 +77,10 @@
   void visitText(Text text) {
     var content = text.text;
     if (const ['p', 'li'].contains(_lastVisitedTag)) {
-      content =
-          LineSplitter.split(content).map((line) => line.trimLeft()).join('\n');
+      var lines = LineSplitter.split(content);
+      content = (content.contains('<pre>'))
+          ? lines.join('\n')
+          : lines.map((line) => line.trimLeft()).join('\n');
       if (text.text.endsWith('\n')) {
         content = '$content\n';
       }
diff --git a/pkgs/markdown/test/document_test.dart b/pkgs/markdown/test/document_test.dart
index 0375f29..2dbcafc 100644
--- a/pkgs/markdown/test/document_test.dart
+++ b/pkgs/markdown/test/document_test.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'dart:convert';
+
 import 'package:markdown/markdown.dart';
 import 'package:test/test.dart';
 
@@ -42,6 +44,16 @@
         expect(codeBlock.textContent,
             equals("&lt;p&gt;Hello &lt;em&gt;Markdown&lt;/em&gt;&lt;/p&gt;\n"));
       });
+
+      test('encodeHtml spaces are preserved in text', () {
+        // Example to get a <p> tag rendered before a text node.
+        var contents = 'Sample\n\n<pre>\n A\n B\n</pre>';
+        var document = Document(encodeHtml: true);
+        var lines = LineSplitter.split(contents).toList();
+        var nodes = BlockParser(lines, document).parseLines();
+        var result = HtmlRenderer().render(nodes);
+        expect(result, '<p>\n</p><pre>\n A\n B\n</pre>');
+      });
     });
 
     group('with encodeHtml disabled', () {