win32text.py
45 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
/ hgext / win32text.py
Lee Cantey
|
r4859 | from mercurial import util, ui | ||
from mercurial.i18n import gettext as _ | ||||
import re | ||||
# regexp for single LF without CR preceding. | ||||
re_single_lf = re.compile('(^|[^\r])\n', re.MULTILINE) | ||||
def dumbdecode(s, cmd): | ||||
# warn if already has CRLF in repository. | ||||
# it might cause unexpected eol conversion. | ||||
# see issue 302: | ||||
# http://www.selenic.com/mercurial/bts/issue302 | ||||
if '\r\n' in s: | ||||
u = ui.ui() | ||||
u.warn(_('WARNING: file in repository already has CRLF line ending \n' | ||||
' which does not need eol conversion by win32text plugin.\n' | ||||
' Please reconsider encode/decode setting in' | ||||
' mercurial.ini or .hg/hgrc\n' | ||||
' before next commit.\n')) | ||||
# replace single LF to CRLF | ||||
return re_single_lf.sub('\\1\r\n', s) | ||||
def dumbencode(s, cmd): | ||||
return s.replace('\r\n', '\n') | ||||
def clevertest(s, cmd): | ||||
if '\0' in s: return False | ||||
return True | ||||
def cleverdecode(s, cmd): | ||||
if clevertest(s, cmd): | ||||
return dumbdecode(s, cmd) | ||||
return s | ||||
def cleverencode(s, cmd): | ||||
if clevertest(s, cmd): | ||||
return dumbencode(s, cmd) | ||||
return s | ||||
util.filtertable.update({ | ||||
'dumbdecode:': dumbdecode, | ||||
'dumbencode:': dumbencode, | ||||
'cleverdecode:': cleverdecode, | ||||
'cleverencode:': cleverencode, | ||||
}) | ||||