src/cm/utils/string_utils.py
author Simon Descarpentries <sid@sopinspace.com>
Mon, 21 Oct 2013 16:50:41 +0200
changeset 554 8e116b8ddbc3
parent 236 725653080973
permissions -rw-r--r--
Merge [text_view_comments] To allow scrolling in Safari mobile, we set the content of text_view_comments frame in a jQuery UI layout. [c_sync.js] So the automated scrolling operations in c_sync.js must be adjustable to the right part to scroll. [c_sync.js] Also, if a comment have to be shown outside of the current viewport, we scroll the correct part to that viewport and then set the comment top Y offset to juste what it needs to avoid the "Add comment" button after scrolling operation. [c_sync.js] If not in Safari mobile, we add an offset here to avoid comment to display under the "Add comment" button.

import chardet
import re

def to_unicode(input):
    if type(input) == str:
        res = None
        encodings = ['utf8', 'latin1']
        doc_enc = chardet.detect(input)['encoding']
        if doc_enc:
            encodings = [doc_enc,] + encodings  
        for encoding in encodings:
            try:
                res = unicode(input, encoding)
                break;
            except UnicodeDecodeError:
                pass
        if not res:
            raise Exception('UnicodeDecodeError: could not decode')
        return res
    return input

# strip carriage returns
def strip_cr(input):
    return re.sub('\r\n|\r|\n', '\n', input)