[cpif] r426 - branches/alvaro/frontend-web
svn at argo.es
svn at argo.es
Thu Oct 25 17:43:28 CEST 2007
Author: alvaro
Date: Thu Oct 25 17:43:26 2007
New Revision: 426
Log:
No necesitamos las unittest aqui nunca mas.
Modified:
branches/alvaro/frontend-web/parser_bbcode.py
Modified: branches/alvaro/frontend-web/parser_bbcode.py
==============================================================================
--- branches/alvaro/frontend-web/parser_bbcode.py (original)
+++ branches/alvaro/frontend-web/parser_bbcode.py Thu Oct 25 17:43:26 2007
@@ -1,8 +1,7 @@
# $Id$
-# TODO: Argumentos en los quotes y en los urls
-# TODO: Url selfargumentada
# TODO: Integrar unittest
+# TODO: Deal w/ whitespace
import re
@@ -25,10 +24,12 @@
tags = {
'b': ['b','b'],
+ 'u': ['u','u'],
'size': ['size', 'size'],
- 'quote': ['quote(?:="([^"]+)")?','quote'],
- 'url': ['url', 'url'],
- 'img': ['img', None],
+# 'quote*': ['quote','quote'],
+ 'quote': ['quote(?:=(?:"([^"]+)")|=([^"]+))?','quote'],
+ 'url': ['url(?:=(?:"([^"]+)")|=([^"]+))?', 'url'],
+ 'img': ['img', 'img'],
}
regexp_tag = re.compile("(\[.*?\])")
@@ -51,131 +52,46 @@
def parse(text):
- print "Parseo--->\n %s" % text
+
before = []
control = True
+
while control:
ret = regexp_tag.split(text,1)
+ tag = None
+ args = None
+ after = None
+ if len(ret) != 3:
+ before.append(text)
+ break
before.append(ret[0])
tag = ret[1]
after = ret[2]
+ args = None
for key,value in tags.iteritems():
if value[0].match(tag):
- tag = ('BBCODE',True,tag,None,False)
+ args = value[0].match(tag).groups()
+ if len(args) > 0:
+ if args[0]:
+ args = escape(args[0])
+ elif args[1]:
+ args = escape(args[1])
+ else:
+ args = None
+# args = escape(args[0]) if len(args) > 0 and args[0] else None
+ tag = ('BBCODE', True, key)
control = False
break
elif value[1] and value[1].match(tag):
- tag = ('BBCODE',False,tag,None,False)
+ tag = ('BBCODE', False, key)
control = False
break
if control:
before.append(tag)
text = after
- print "".join(before), tag, after
- return "".join(before), tag, after
-#import unittest
-#class TestBBCode(unittest.TestCase):
-# """Test Case for the BBCode parser"""
-# correct_bbcode = (
-# ('[ b]hola[/b]', '<strong>hola</strong>'),
-# ('[b ]hola[/b]', '<strong>hola</strong>'),
-# ('[ b ]hola[/b]', '<strong>hola</strong>'),
-#
-# ('[b]hola[ /b]', '<strong>hola</strong>'),
-# ('[b]hola[/b ]', '<strong>hola</strong>'),
-# ('[b]hola[ /b ]', '<strong>hola</strong>'),
-#
-#
-# ('[b]hola[/b]', '<strong>hola</strong>'),
-# ('antes [b]hola[/b]', 'antes <strong>hola</strong>'),
-# ('[b]hola[/b] despues', '<strong>hola</strong> despues'),
-# ('antes [b]hola[/b] despues', 'antes <strong>hola</strong> despues'),
-#
-# ('[url]la direccion[/url]', '<a href="la direccion">la direccion</a>'),
-# ('antes [url]la direccion[/url]', 'antes <a href="la direccion">la direccion</a>'),
-# ('[url]la direccion[/url] despues', '<a href="la direccion">la direccion</a> despues'),
-# ('antes [url]la direccion[/url] despues', 'antes <a href="la direccion">la direccion</a> despues'),
-#
-# ('[url="la direccion"]el texto[/url]', '<a href="la direccion">el texto</a>'),
-# ('antes [url="la direccion"]el texto[/url]', 'antes <a href="la direccion">el texto</a>'),
-# ('[url="la direccion"]el texto[/url] despues', '<a href="la direccion">el texto</a> despues'),
-# ('antes [url="la direccion"]el texto[/url] despues', 'antes <a href="la direccion">el texto</a> despues'),
-#
-# ('[url="la direccion"]el texto[/url]', '<a href="la direccion">el texto</a>'),
-#
-# ('[url="http://example.org/uno&dos"]el texto[/url]', '<a href="http://example.org/uno&dos">el texto</a>'),
-#
-# ('[url=la direccion]el texto[/url]', '<a href="la direccion">el texto</a>'),
-# ('antes [url=la direccion]el texto[/url]', 'antes <a href="la direccion">el texto</a>'),
-# ('[url =la direccion]el texto[/url] despues', '<a href="la direccion">el texto</a> despues'),
-# ('antes [url=la direccion]el texto[/url] despues', 'antes <a href="la direccion">el texto</a> despues'),
-#
-# ('[quote=paco]Hola[/quote]', '<blockquote><h4>paco escribió:</h4>Hola</blockquote>'),
-# ('antes [quote=paco]Hola[/quote]', 'antes <blockquote><h4>paco escribió:</h4>Hola</blockquote>'),
-# ('[quote=paco]Hola[/quote] despues', '<blockquote><h4>paco escribió:</h4>Hola</blockquote> despues'),
-# ('antes [quote=paco]Hola[/quote] despues', 'antes <blockquote><h4>paco escribió:</h4>Hola</blockquote> despues'),
-#
-# ('[quote]Hola[/quote]', '<blockquote>Hola</blockquote>'),
-# ('antes [quote]Hola[/quote]', 'antes <blockquote>Hola</blockquote>'),
-# ('[quote]Hola[/quote] despues', '<blockquote>Hola</blockquote> despues'),
-# ('antes [quote]Hola[/quote] despues', 'antes <blockquote>Hola</blockquote> despues'),
-#
-# ('[u]hola[/u]', '<span style="text-decoration:underline">hola</span>'),
-#
-# ('[size=20px]hola[/size]', '<span style="font-size:20px">hola</span>'),
-#
-# ('[n]hola[/n]', '[n]hola[/n]'),
-#
-# ("[img]laimagen1[/img]", '<img src="laimagen1" />'),
-# ("antes [img]laimagen2[/img]", 'antes <img src="laimagen2" />'),
-# ("[img]laimagen3[/img] despues", '<img src="laimagen3" /> despues'),
-# ("antes [img]laimagen4[/img] despues", 'antes <img src="laimagen4" /> despues')
-# )
-#
-# incorrect_bbcode = (
-# '[i]bla bla bla [b]hola[/n][/i]',
-# '[b]Ay[/ b ]',
-# '[b]Ay[ / b ]',
-# '[b]Ay[/]',
-# '[b]Ay, se me ha olvidado cerrar',
-# '[url][/url]',
-# '[b][/url]hola[/url]',
-# '[b]foo[url]hola[/b][/url]',
-# """Un texto [b]mas[/b] largo, con [b]negritas y [n]cursivas[/i]
-# [/b] e incluso [url="laurl"]enlaces [/b]con negritas[/b] dentro[/url]""")
-#
-# xss = (
-# """[url="hola'"]adios[/url]""",
-# """[url="hola''"'"'"]adios[/url]""",
-#)
-#
-#
-# def testCorrectBBCode(self):
-# """Test if the translation goes well."""
-# bbcode_list = []
-# html_list = []
-# global allow_errors
-# allow_errors = False
-# for bbcode, html in self.correct_bbcode:
-# bbcode_list.append(bbcode)
-# html_list.append(html)
-# retval, result = parse(bbcode)
-# assert not retval
-# self.assertEqual(html, "".join(text for dummy, text, dummy in result))
-# retval, result = parse("".join(bbcode_list))
-# assert not retval
-# self.assertEqual("".join(html_list), "".join(text for dummy, text, dummy in result))
-#
-# def testIncorrectBBCode(self):
-# """Test if the translation fails using bad formed BBCode."""
-# global allow_errors
-# allow_errors = False
-# for bbcode in self.incorrect_bbcode:
-# retval, result = parse(bbcode)
-# assert retval
-#
-if __name__ == "__main__":
- parse("caca [f] adf [b] asgsdag [/b]")
-# unittest.main()
-#
+ str = "".join(before)
+
+ str = escape(str)
+ return len(str), str, tag, args, after
+
More information about the cpif
mailing list