[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&amp;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&oacute;:</h4>Hola</blockquote>'), 
-#      ('antes [quote=paco]Hola[/quote]', 'antes <blockquote><h4>paco escribi&oacute;:</h4>Hola</blockquote>'), 
-#      ('[quote=paco]Hola[/quote] despues', '<blockquote><h4>paco escribi&oacute;:</h4>Hola</blockquote> despues'), 
-#      ('antes [quote=paco]Hola[/quote] despues', 'antes <blockquote><h4>paco escribi&oacute;:</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