Помощь в расширении плагина Sublime Text

У меня есть возвышенный текстовый плагин, который следит за созданием файлов, начинающихся с lp_

Когда создается файл с префиксом lp_, плагин создает одноименную папку с папкой изображений внутри.

Я хотел бы просмотреть различные области моего сайта и создать соответствующую папку в ближайшей папке lp к созданному файлу.

Например, у меня есть следующая структура папок

Корень > рабочий стол > корень > рабочий стол > lp

Корень > Мобильный > Корень > Мобильный > lp

Корень > Планшет > Корень > Планшет > lp

Когда файл с префиксом lp_ создается в любой папке «устройство», я бы хотел, чтобы папка создавалась в ближайшей папке lp.

Плагин ниже соответствует правильным принципам, но я не уверен, как установить правила для таргетинга на определенные папки.

импортировать возвышенное, возвышенное_плагин, ОС

# We extend event listener
class ExampleCommand(sublime_plugin.EventListener):
    # This method is called every time a file is saved (not only the first time is saved)
    def on_post_save_async(self, view):
        variables = view.window().extract_variables()
        fileBaseName = variables['file_base_name'] # File name without extension
        path = '/Users/jameshusband/Dropbox/development/remote/superfreeslotgames.com/css/' + fileBaseName
        imagepath = path + '/images/'

        if fileBaseName.startswith('lp_') and not os.path.exists(path):
            os.mkdir(path)
            os.mkdir(imagepath)

Может ли кто-нибудь указать мне правильное направление для этого? Я не очень разбираюсь в Python, поэтому не знаю, как лучше всего достичь своей цели.


person Community    schedule 04.08.2015    source источник
comment
Как вы можете видеть в sublime API, извлеченные переменные также содержат file_path (variables['file_path']). Если я правильно понял вашу проблему, вам нужно только проверить путь сохраняемого файла, чтобы решить, какую папку использовать.   -  person sergioFC    schedule 04.08.2015
comment
Рад, что ты вернулся, Серхио, я пытался понять это, используя доступные документы, но немного заблудился. Как я могу проверить расположение сохраненного файла, чтобы определить, где создать папку?   -  person    schedule 04.08.2015
comment
Если файл, который вы сохраняете, находится внутри /root/desktop, сохраните его в /root/desktop/whatever/lp. Возможно, вы можете использовать startwith, чтобы узнать, начинается ли путь к файлу с /root/desktop.   -  person sergioFC    schedule 04.08.2015
comment
так что просто используя стандартные операторы if else?   -  person    schedule 04.08.2015
comment
Почему бы и нет? Я не уверен, что это сработает, попробуйте проверить.   -  person sergioFC    schedule 04.08.2015
comment
Хорошо, iv провел некоторое тестирование, консоль возвращает ошибку: NameError: глобальное имя 'file_path' не определено. Используя следующее обновление кода: если fileBaseName.startswith('lp_'), а не os.path.exists(path) и file_path.startswith(' /css/'): os.mkdir(путь) os.mkdir(путь к изображению)   -  person    schedule 04.08.2015
comment
Похоже, вы даже не определили переменную file_path. file_path = variables['file_path']   -  person sergioFC    schedule 04.08.2015
comment
Давайте продолжим это обсуждение в чате.   -  person    schedule 04.08.2015


Ответы (1)


Большое спасибо SergioFC за помощь в этом!

import sublime, sublime_plugin, os


# We extend event listener
class ExampleCommand(sublime_plugin.EventListener):
    # This method is called every time a file is saved (not only the first time is saved)
    def on_post_save_async(self, view):
        variables = view.window().extract_variables()
        fileBaseName = variables['file_base_name'] # File name without extension
        file_path = variables['file_path']

        if fileBaseName.startswith('lp_'):

            if file_path.endswith('/desktop'):
                path = file_path + '/lp/' + fileBaseName
                imagepath = path + '/images/'
                os.mkdir(path)
                os.mkdir(imagepath)
                open(path + '/' + "style.css", 'w')

            if file_path.endswith('/tablet'):
                path = file_path + '/lp/' + fileBaseName
                imagepath = path + '/images/'
                os.mkdir(path)
                os.mkdir(imagepath)
                open(path + '/' + "style.css", 'w')

            if file_path.endswith('/mobile'):
                path = file_path + '/lp/' + fileBaseName
                imagepath = path + '/images/'
                os.mkdir(path)
                os.mkdir(imagepath)
                open(path + '/' + "style.css", 'w')

Расширение отсюда будет состоять в том, чтобы загрузить содержимое папки lp при сохранении файла lp_, а затем установить пользовательские параметры для многоцелевого использования.

person Community    schedule 04.08.2015