Как заставить мой плагин Python для текстовых редакторов выполняться каждый раз, когда в файле найдено слово? - PullRequest
0 голосов
/ 31 января 2019

Я создал простой плагин для моего школьного проекта.он как бы ищет имена классов начальной загрузки (col-1, container и т. д.) и автоматически записывает команды стиля CSS за этими именами классов внутри вашего style.css файла.

, так что идея в том, что вам на самом деле не нужна ссылка загрузчика в заголовке, а ваш файл style.css не полон ненужных команд CSS, так как все компоненты Bootstrap уже находятся вваш текстовый редактор .

ex: <div class="shadow p-3 mb-5 bg-white rounded">Regular shadow</div>

Поскольку у div выше есть shadow p-3 mb-5 bg-white rounded в качестве имен классов Bootstrap, мой плагин будет писать эти пять стилей CSS внутрифайл style.css.

Учитывая это, я хотел бы спросить ... как на самом деле заставить скрипт работать ??Я имею в виду, что у меня есть код, он прекрасно работает, когда я запускаю его в терминале НО , как мне установить плагин в моем текстовом редакторе и запускать его каждый раз, когда он находит ключевое слово вHTML-файл?

фрагмент кода:

from collections import OrderedDict
keyword = {
"row": '''
    .row {
    display: -ms-flexbox;
    display: flex; 
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    margin-right: -15px;
    margin-left: -15px;
    }'''
    #etc
        }   

with open('index.html', 'r') as file:
   with open('style.css', 'a') as newfile:
      lines = file.readlines()
      for line in lines:
         if 'class="' in line:
            to_replace = line.split('"')[1].split()
            to_replace = OrderedDict.fromkeys(to_replace)
            for key in to_replace:
                if key in keyword:
                    newfile.write(keyword[key])
                    keyword[key] = ''

HTML-файл:

<div class="row"></div> etc

вывод в style.css:

.row {
        display: -ms-flexbox;
        display: flex; 
        -ms-flex-wrap: wrap;
        flex-wrap: wrap;
        margin-right: -15px;
        margin-left: -15px;
        }

также, есть ли в этом скрипте дыры (я уверен, что они есть)?Не могли бы вы указать на них?

1 Ответ

0 голосов
/ 31 января 2019

Если вы хотите, чтобы оно обновлялось в режиме реального времени при вводе, ответ имеет меньшее отношение к Python и больше касается написания специального плагина для вашего конкретного текстового редактора.

Однако, если выдовольный тем, что он работает только при каждом сохранении, вы можете получить эту функциональность довольно просто, используя что-то вроде модуля watchdog .Вероятно, вам нужен обработчик события on_modified .

...