Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Correct tag balancing problem (closes #30).

Also: improve code style in apostrophes.py
  • Loading branch information...
commit 2f65cce169d0246f43f54a1102ab91f71b880474 1 parent e6cfef0
@peter17 peter17 authored
View
10 apostrophes.py
@@ -27,8 +27,8 @@
'italic_close': '</em>'}
-def _parseQuotes(text, tags=default_tags):
- arr = _quotePat.split(text)
+def parse_one_line(text, tags=default_tags):
+ arr = _quotePat.split(text.strip())
if len(arr) == 1:
return text
@@ -162,13 +162,13 @@ def _parseQuotes(text, tags=default_tags):
output.append(tags['italic_close'])
if state == 'bi':
output.append(tags['bold_close'])
- if state == 'both' and buffer is not []:
+ if state == 'both' and buffer != []:
output.append(tags['italic']+tags['bold'])
output.append(u''.join(buffer))
output.append(tags['bold_close']+tags['italic_close'])
return u''.join(output)
-def parseAllQuotes(text, tags=default_tags):
+def parse(text, tags=default_tags):
lines = text.split(u'\n')
- return u'\n'.join(_parseQuotes(line, tags) for line in lines)
+ return u'\n'.join(parse_one_line(line, tags) for line in lines)
View
12 article.htm
@@ -14,7 +14,7 @@
<th class="media audio" style="background-color:#ccf; line-height:3.1em"> Fichier audio</th>
</tr>
<tr>
- <td><span style="height:20px; width:100%; padding:4pt; padding-left:0.3em; line-height:2em;"><strong><a href="Media:Brahms_-_Schumann-Heink_-_Wiegenlied_(Berceuse)_(1915).ogg‎"><em>Wiegenlied</em> (Berceuse, op 49/4)</a></strong> <em>(<a href="Fichier:Brahms_-_Schumann-Heink_-_Wiegenlied_(Berceuse)_(1915).ogg‎">info</a>)</em><br /><small><em>Wiegenlied</em> interprété par <a href="Ernestine Schumann-Heink">Ernestine Schumann-Heink</a></small>
+<td><span style="height:20px; width:100%; padding:4pt; padding-left:0.3em; line-height:2em;"><strong><a href="Media:Brahms_-_Schumann-Heink_-_Wiegenlied_(Berceuse)_(1915).ogg‎"><em>Wiegenlied</em> (Berceuse, op 49/4)</a></strong> <em>(<a href="Fichier:Brahms_-_Schumann-Heink_-_Wiegenlied_(Berceuse)_(1915).ogg‎">info</a>)</em><br /><small><em>Wiegenlied</em> interprété par <a href="Ernestine Schumann-Heink">Ernestine Schumann-Heink</a></small>
<center><img src="Brahms_-_Schumann-Heink_-_Wiegenlied_(Berceuse)_(1915).ogg‎" style="" alt="" /></center></span><br /><span style="height:20px; width:100%; padding-left:0.3em;"><span><img src="Circle question mark.png" style="width:14px;" alt="" /> <em><a href="Aide:Écouter des sons ogg">Des problèmes pour écouter le fichier ?</a></em></span></span></td>
</tr>
</table>
@@ -82,17 +82,17 @@
<h2>Dans la musique populaire</h2>
<h3>Dans la chanson française</h3>
<ul>
- <li> <a href="Bénabar">Bénabar</a> : « La berceuse », de l'album <em><a href="Reprise des négociations">Reprise des négociations</a></em>, 2005</li>
- <li> <a href="Henri Salvador">Henri Salvador</a> : « Une chanson douce » (Le Loup, la Biche et le Chevalier), de l'album <em>Rigolo</em>, 1968</li>
+ <li><a href="Bénabar">Bénabar</a> : « La berceuse », de l'album <em><a href="Reprise des négociations">Reprise des négociations</a></em>, 2005</li>
+ <li><a href="Henri Salvador">Henri Salvador</a> : « Une chanson douce » (Le Loup, la Biche et le Chevalier), de l'album <em>Rigolo</em>, 1968</li>
</ul>
<h3>Dans la musique pop</h3>
<ul>
- <li> <a href="Beatles">Beatles</a> : « <a href="Good Night (chanson)">Good Night</a> », de l'<em><a href="The Beatles (album)">album blanc</a></em>, 1968</li>
+ <li><a href="Beatles">Beatles</a> : « <a href="Good Night (chanson)">Good Night</a> », de l'<em><a href="The Beatles (album)">album blanc</a></em>, 1968</li>
</ul>
<h3>Dans le jazz</h3>
<ul>
- <li> <a href="Baden Powell de Aquino">Baden Powell</a> : « Berceuse a Jussara », de l'album <em>Le Monde Musical</em>, 1964</li>
- <li> <a href="Henri Salvador">Henri Salvador</a> : « Une chanson douce » (Le Loup, la Biche et le Chevalier), de l'album <em>Rigolo</em>, 1968</li>
+ <li><a href="Baden Powell de Aquino">Baden Powell</a> : « Berceuse a Jussara », de l'album <em>Le Monde Musical</em>, 1964</li>
+ <li><a href="Henri Salvador">Henri Salvador</a> : « Une chanson douce » (Le Loup, la Biche et le Chevalier), de l'album <em>Rigolo</em>, 1968</li>
</ul>
<h2> Voir aussi </h2>
<ul>
View
6 html.py
@@ -2,6 +2,7 @@
from pijnu.library.node import Nil, Nodes
from mediawiki_parser import wikitextParser
from mutagen import Metadata
+import apostrophes
def toolset(allowed_tags, allowed_autoclose_tags, allowed_attributes, interwiki, namespaces):
tags_stack = []
@@ -52,7 +53,7 @@ def balance_tags(tag=None):
return result
def content(node):
- return '%s' % node.leaf() + balance_tags()
+ return apostrophes.parse('%s' % node.leaf() + balance_tags())
def render_title1(node):
node.value = '<h1>' + content(node) + '</h1>\n'
@@ -81,13 +82,12 @@ def render_paragraph(node):
node.value = '<p>' + value + '</p>\n'
def render_body(node):
- from apostrophes import parseAllQuotes
metadata = ''
if category_links != []:
metadata += '<p>Categories: ' + ', '.join(category_links) + '</p>\n'
if interwiki_links != []:
metadata += '<p>Interwiki: ' + ', '.join(interwiki_links) + '</p>\n'
- node.value = '<body>\n' + parseAllQuotes(content(node)) + metadata + '</body>'
+ node.value = '<body>\n' + content(node) + metadata + '</body>'
def render_entity(node):
value = '%s' % node.leaf()
View
12 tests/test_html_postprocessor.py
@@ -256,6 +256,14 @@ def test_bold_italic_case8(self):
result = "<body>\n<p><strong>Le gras :</strong></p>\n<p>et l'<em>italique</em>...</p>\n</body>"
self.parsed_equal_string(source, result, None, {}, 'html')
+ def test_bold_italic_case9(self):
+ source = """'''he
+
+lo'''
+"""
+ result = "<body>\n<p><strong>he</strong></p>\n<p>lo<strong></strong></p>\n</body>"
+ self.parsed_equal_string(source, result, None, {}, 'html')
+
def test_italic_template(self):
source = "Here, we have ''italic {{template}}!''.\n"
result = "<body>\n<p>Here, we have <em>italic text!</em>.</p>\n</body>"
@@ -388,10 +396,10 @@ def test_formatted_mixed_list(self):
\t<dd> item 1</dd>
</dl>
<dl>
-\t<dt> this is <em>italic</em></dt>
+\t<dt>this is <em>italic</em></dt>
</dl>
<ul>
-\t<li> and <strong>bold</strong> here</li>
+\t<li>and <strong>bold</strong> here</li>
</ul>
<ol>
\t<li> a <a href="link">link</a></li>
View
4 text.py
@@ -1,5 +1,6 @@
from constants import html_entities
from mediawiki_parser import wikitextParser
+import apostrophes
def toolset():
def render_tag_p(attributes):
@@ -36,10 +37,9 @@ def render_paragraph(node):
node.value = '%s\n' % node.leaf()
def render_body(node):
- from apostrophes import parseAllQuotes
tags = {'bold': '*', 'bold_close': '*', 'italic': '_', 'italic_close': '_'}
print node
- node.value = parseAllQuotes(node.leaf(), tags)
+ node.value = apostrophes.parse(node.leaf(), tags)
def render_entity(node):
value = '%s' % node.leaf()
Please sign in to comment.
Something went wrong with that request. Please try again.