Explorar o código

Fix parsing of AsciiDoc attribute values by converting to unicode.

Chuan Ji %!s(int64=9) %!d(string=hai) anos
pai
achega
1adddd4682

+ 2 - 1
asciidoc_reader/asciidoc_reader.py

@@ -10,6 +10,7 @@ File extension should be ``.asc``, ``.adoc``, or ``asciidoc``.
 from pelican.readers import BaseReader
 from pelican.utils import pelican_open
 from pelican import signals
+import six
 
 try:
     # asciidocapi won't import on Py3
@@ -51,7 +52,7 @@ class AsciiDocReader(BaseReader):
         metadata = {}
         for name, value in ad.asciidoc.document.attributes.items():
             name = name.lower()
-            metadata[name] = self.process_metadata(name, value)
+            metadata[name] = self.process_metadata(name, six.text_type(value))
         if 'doctitle' in metadata:
             metadata['title'] = metadata['doctitle']
         return content, metadata

+ 9 - 2
asciidoc_reader/test_asciidoc_reader.py

@@ -41,7 +41,10 @@ class AsciiDocReaderTest(unittest.TestCase):
         }
 
         for key, value in expected.items():
-            self.assertEqual(value, page.metadata[key], key)
+            self.assertEqual(value, page.metadata[key], (
+                'Metadata attribute \'%s\' does not match expected value.\n'
+                'Expected: %s\n'
+                'Actual: %s') % (key, value, page.metadata[key]))
 
     def test_article_with_asc_options(self):
         # test to ensure the ASCIIDOC_OPTIONS is being used
@@ -57,4 +60,8 @@ class AsciiDocReaderTest(unittest.TestCase):
                     '<p>The quick brown fox jumped over '
                     'the lazy dog&#8217;s back.</p>'
                     '</div>\n</div>\n</div>\n')
-        self.assertEqual(page.content, expected)
+        self.assertEqual(page.content, expected)
+
+
+if __name__ == '__main__':
+    unittest.main()