Вкладывание читаемых различных дисплеев, Подвижных на файлах Unicode (MS Windows)

ES6 позволяет «сжатые методы» , которые, как вы обнаружили, еще не совместимы с кросс-браузером.

24
задан Dan Menes 10 June 2010 в 15:07
поделиться

1 ответ

Если мой другой ответ не делает то, что вы хотите, я думаю, что этот может; хотя я еще не тестировал его на Windows, он хорошо работает в Linux. Он делает то, что потенциально неприятно, заключая в mercurial.mdiff.unidiff новую функцию, которая конвертирует utf-16le в utf-8. Это не повлияет на hg st, но повлияет на hg diff. Одна потенциальная ловушка заключается в том, что спецификация будет также изменена с спецификации UTF-16LE на спецификацию UTF-8.

Во всяком случае, я думаю, что это может быть полезно для вас, так что вот оно.

Расширение файла utf16decodediff.py:

import codecs
from mercurial import mdiff

unidiff = mdiff.unidiff

def new_unidiff(a, ad, b, bd, fn1, fn2, r=None, opts=mdiff.defaultopts):
    """
    A simple wrapper around mercurial.mdiff.unidiff which first decodes
    UTF-16LE text.
    """

    if a.startswith(codecs.BOM_UTF16_LE):
        try:
            # Gets reencoded as utf-8 to be a str rather than a unicode; some
            # extensions may expect a str and may break if it's wrong.
            a = a.decode('utf-16le').encode('utf-8')
        except UnicodeDecodeError:
            pass

    if b.startswith(codecs.BOM_UTF16_LE):
        try:
            b = b.decode('utf-16le').encode('utf-8')
        except UnicodeDecodeError:
            pass

    return unidiff(a, ad, b, bd, fn1, fn2, r, opts)

mdiff.unidiff = new_unidiff

В .hgrc:

[extensions]
utf16decodediff = ~/.hgexts/utf16decodediff.py

(или эквивалентные пути.)

1
ответ дан Chris Morgan 29 November 2019 в 00:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: