Do not escape single quote(apostrophe) inside code (dart-lang/markdown#498)

diff --git a/pkgs/markdown/lib/src/block_syntaxes/code_block_syntax.dart b/pkgs/markdown/lib/src/block_syntaxes/code_block_syntax.dart
index f9e88d2..fdcb5f1 100644
--- a/pkgs/markdown/lib/src/block_syntaxes/code_block_syntax.dart
+++ b/pkgs/markdown/lib/src/block_syntaxes/code_block_syntax.dart
@@ -51,7 +51,7 @@
 
     var content = childLines.map((e) => e.content).join('\n');
     if (parser.document.encodeHtml) {
-      content = escapeHtml(content);
+      content = escapeHtml(content, escapeApos: false);
     }
 
     return Element('pre', [Element.text('code', content)]);
diff --git a/pkgs/markdown/lib/src/block_syntaxes/fenced_code_block_syntax.dart b/pkgs/markdown/lib/src/block_syntaxes/fenced_code_block_syntax.dart
index 3677ca5..e4086d6 100644
--- a/pkgs/markdown/lib/src/block_syntaxes/fenced_code_block_syntax.dart
+++ b/pkgs/markdown/lib/src/block_syntaxes/fenced_code_block_syntax.dart
@@ -31,7 +31,7 @@
     ).map((e) => e.content).join('\n');
 
     if (parser.document.encodeHtml) {
-      text = escapeHtml(text);
+      text = escapeHtml(text, escapeApos: false);
     }
     if (text.isNotEmpty) {
       text = '$text\n';
diff --git a/pkgs/markdown/lib/src/inline_syntaxes/code_syntax.dart b/pkgs/markdown/lib/src/inline_syntaxes/code_syntax.dart
index 6eb22a8..35783d3 100644
--- a/pkgs/markdown/lib/src/inline_syntaxes/code_syntax.dart
+++ b/pkgs/markdown/lib/src/inline_syntaxes/code_syntax.dart
@@ -58,7 +58,7 @@
     code = code.replaceAll('\n', ' ');
 
     if (parser.encodeHtml) {
-      code = escapeHtml(code);
+      code = escapeHtml(code, escapeApos: false);
     }
 
     parser.addNode(Element.text('code', code));
diff --git a/pkgs/markdown/lib/src/util.dart b/pkgs/markdown/lib/src/util.dart
index e83e519..22ca19c 100644
--- a/pkgs/markdown/lib/src/util.dart
+++ b/pkgs/markdown/lib/src/util.dart
@@ -13,9 +13,11 @@
 /// One or more whitespace, for compressing.
 final _oneOrMoreWhitespacePattern = RegExp('[ \n\r\t]+');
 
-/// Escapes (`'`), (`"`), (`<`), (`>`) and (`&`) characters.
-String escapeHtml(String html) => const HtmlEscape(HtmlEscapeMode(
-      escapeApos: true,
+/// Escapes (`"`), (`<`), (`>`) and (`&`) characters.
+/// Escapes (`'`) if [escapeApos] is `true`.
+String escapeHtml(String html, {bool escapeApos = true}) =>
+    HtmlEscape(HtmlEscapeMode(
+      escapeApos: escapeApos,
       escapeLtGt: true,
       escapeQuot: true,
     )).convert(html);
diff --git a/pkgs/markdown/test/original/code_blocks.unit b/pkgs/markdown/test/original/code_blocks.unit
index 02e6746..330a90f 100644
--- a/pkgs/markdown/test/original/code_blocks.unit
+++ b/pkgs/markdown/test/original/code_blocks.unit
@@ -58,3 +58,8 @@
 <<<
 <pre><code>&lt;&amp;&gt;
 </code></pre>
+>>> issue #497
+    'foo'
+<<<
+<pre><code>'foo'
+</code></pre>
diff --git a/pkgs/markdown/test/original/fenced_code_block.unit b/pkgs/markdown/test/original/fenced_code_block.unit
new file mode 100644
index 0000000..779e747
--- /dev/null
+++ b/pkgs/markdown/test/original/fenced_code_block.unit
@@ -0,0 +1,7 @@
+>>> issue #497
+```
+'foo'
+```
+<<<
+<pre><code>'foo'
+</code></pre>
diff --git a/pkgs/markdown/test/original/inline_code.unit b/pkgs/markdown/test/original/inline_code.unit
index 53b0165..7315931 100644
--- a/pkgs/markdown/test/original/inline_code.unit
+++ b/pkgs/markdown/test/original/inline_code.unit
@@ -81,3 +81,7 @@
 
 <<<
 <p>before `` tick ``` after</p>
+>>> issue #497
+`'foo'`
+<<<
+<p><code>'foo'</code></p>