понедельник, 11 января 2010 г.

Боремся с особенностями copy/past в MC

Вам наверное знакома ситуация, когда скопировав код в окне MC и втавив его в другой файл вся табуляция заменяется на <--> а в конце каждой строки появляются пробелы... Так вот скрипт приведенный ниже призван исправлять эти погрешности заменяя все "<-->" в начале каждой строки на табуляцию и удаляя пробелы в конце строк.

Использовать так:
#python pps.py src_file dst_file

Сохрание код в файл с именем pps.py.


Copy Source | Copy HTML
#!/usr/bin/env python
 
import re
import sys
 
def remove_spaces_from_end(string):
    ret = re.sub(" *$", "", string)
    return ret
 
def remove_fake_tabs(string, tabWidth):
    ret = re.sub("<-->", "\t", string)
    return ret
 
def remove_tabs_from_end(string):
    ret = re.sub("\t*$", "", string)
    return ret
 
def replace_tabs_with_spaces(string, tabWidth):
    ret = re.sub("\t", " "*tabWidth, string)
    return ret
def replace_spaces_with_tabs(string, tabWidth):
    ret = re.sub(" "*tabWidth, "\t", string)
    return ret
 
def pps():
    tabWidth = 4
    replace="no"
    to_tabs="no"
    sys.argv[:1] = []
    #print (sys.argv)
 
    if "-replace" in sys.argv:
        replace="yes"
        sys.argv.remove("-replace")
    if "-totabs" in sys.argv:
        to_tabs="yes"
        sys.argv.remove("-totabs")
    for srcfile in sys.argv:
        print(srcfile)
        src = open(srcfile, "r")
        buffer = ""
        for line in src:
            buffer += line
            buffer = remove_spaces_from_end(buffer)
            if to_tabs=="yes":
                buffer = replace_spaces_with_tabs(buffer, tabWidth)
            else:
                buffer = replace_tabs_with_spaces(buffer, tabWidth)
            buffer = remove_fake_tabs(buffer, tabWidth)
            buffer = remove_tabs_from_end(buffer)
        src.close()
        if replace == "no":
            print (buffer)
        else:
            dst = open(srcfile, "w")
            dst.write(buffer)
            dst.close()
 
if __name__ == "__main__":
    pps()
 

Комментариев нет:

Отправить комментарий