Changeset 3475:df795fc6ce57 in livinglogic.python.xist

Show
Ignore:
Timestamp:
07/09/08 21:02:51 (11 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Add a function csvescape().

Files:
2 modified

Legend:

Unmodified
Added
Removed
  • src/ll/ul4c.py

    r3473 r3475  
    919919                    if opcode.arg == "xmlescape": 
    920920                        _code("reg%d = xmlescape(unicode(reg%d)) if reg%d is not None else u''" % (opcode.r1, opcode.r2, opcode.r2)) 
     921                    elif opcode.arg == "csvescape": 
     922                        _code("reg%d = ul4c._csvescape(reg%d)" % (opcode.r1, opcode.r2)) 
    921923                    elif opcode.arg == "str": 
    922924                        _code("reg%d = unicode(reg%d) if reg%d is not None else u''" % (opcode.r1, opcode.r2, opcode.r2)) 
     
    23082310    else: 
    23092311        return unicode(repr(obj)) 
     2312 
     2313 
     2314def _csvescape(obj): 
     2315    """ 
     2316    Helper for the ``repr`` function. 
     2317    """ 
     2318    if obj is None: 
     2319        return u"" 
     2320    elif not isinstance(obj, basestring): 
     2321        obj = _repr(obj) 
     2322    if "," in obj or '"' in obj: 
     2323        return u'"%s"' % obj.replace('"', '""') 
     2324    return obj 
  • test/test_ul4.py

    r3474 r3475  
    454454    checkrunerror("function u?'xmlescape' unknown", "<?print xmlescape(1, 2)?>") 
    455455    check("&lt;&gt;&amp;&#39;&quot;gurk", "<?print xmlescape(data)?>", data='<>&\'"gurk') 
     456 
     457 
     458def test_function_csvescape(): 
     459    checkrunerror("function u?'csvescape' unknown", "<?print csvescape()?>") 
     460    checkrunerror("function u?'csvescape' unknown", "<?print csvescape(1, 2)?>") 
     461    check("", "<?print csvescape(data)?>", data=None) 
     462    check("False", "<?print csvescape(data)?>", data=False) 
     463    check("True", "<?print csvescape(data)?>", data=True) 
     464    check("42", "<?print csvescape(data)?>", data=42) 
     465    # no check for float 
     466    check("abc", "<?print csvescape(data)?>", data="abc") 
     467    check('"a,b,c"', "<?print csvescape(data)?>", data="a,b,c") 
     468    check('a""b""c', "<?print csvescape(data)?>", data='a"b"c') 
    456469 
    457470