Как почистить таблицу в html или пишем собственный плагин для Sublime Text

Вспоминая старый девиз компании IBM: “Машины должны работать, а человек думать.”, начинаешь задумываться о тотальной автоматизации. Автоматизировать хочется все, что приходиться делать постоянно. Такое желание возникает особенно в те моменты, когда работа нудная и делать ее просто нет желания.

Сегодня речь пойдет про автоматизацию.

Когда я работаю над различными web-проектами, приходиться по окончанию разработки их наполнять. Чаще всего заказчики дают информацию в формате .doc или .xls. Ввод в промышленных масштабах второго формата еще как-то поддается автоматизации, но с .doc все намного сложнее. Приходиться сохранять их в html-файле и уже руками чистить весь microsoft-овский html-мусор, которого просто дофига.

Чтобы не делать этого руками, я нашел для себя достаточно удобный способ. Помогает мне в этом замечательный текстовый редактор Sublime Text. У этого редактора есть простые механизмы по расширению его функционала с помощью плагинов. Писать эти плагины нужно на языке python, которого к сожалению я не знаю, но инженерное образование не позволяет мне просто так сложить руки. Поэтому я посмотрел на код других плагинов и по аналогии написал свой. В ближайшее время планирую сделать видео-урок на эту тему. Пользоваться буду подаренной мне программой BandiCam. Осталось найти на это свободное время.

Этот код не в коем случае не претендует на право считаться оптимизированным и стилистически правильным, но он работает, а для меня это главное.

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

Что умеет моя поделка?

Приведенный ниже плагин делает:

  • удаляет все конструкции style=”…”
  • удаляет все конструкции class=”…”
  • удаляет все конструкции <p>...</p>
  • удаляет все конструкции <span>...</span>
  • “правильно” оформляет теги <tr> и <td>, делая код более читаемым.

Если Вам не хватает этого функционала, то Вы с относительной легкостью можете по аналогии дописать недостающий функционал.

Создаем плагин для Sublime Text

Для начала переходим Tools->New Plugin… и в открывшемся окне добавляем код:

import sublime, sublime_plugin
import re
class TableStyle(sublime_plugin.TextCommand):
    def run(self, edit):
        selection = self.view.sel()[0]
        code_block = self.view.substr(selection)
        result = re.sub(r'\sstyle=\"([a-zA-Z0-9\:\;\-\_]+)\"', r'', code_block)
        result = re.sub(r'\sclass=\"([a-zA-Z0-9]+)\"', r'', result)
        result = re.sub(r'<p>', r'', result)
        result = re.sub(r'<\/p>', r'', result)
        result = re.sub(r'<span>', r'', result)
        result = re.sub(r'<\/span>', r'', result)
        result = re.sub(r'\n', r'', result)
        result = re.sub(r'<tr([a-zA-Z0-9\:\;\-\_\"\']*)>', r'\n  <tr>\n', result)
        result = re.sub(r'</tr>', r'  </tr>', result)
        result = re.sub(r'<td', r'    <td', result)
        result = re.sub(r'</td>', r'</td>\n', result)
        self.view.replace(edit, selection, result)

Сохраняем в файл с любым именем.

Далее идем по меню Preferences->Key Bindings – User и добавляем код для хоткей:

[
 { "keys": ["ctrl+shift+h"], "command": "table_style" }
]

Соответственно опять сохраняем.

Теперь, если нужно почистить таблицу от html-мусора, просто выделяем код и давим Ctrl+Shift+H.

P.S. Этот плагин не является каким-то универсальным инструментом. Это частный инструмент для конкретной задачи. На блоге я выложил его лишь для того, чтобы самому в будущем на его основе решать другие, подобные задачи. Возможно, кто-нибудь найдет для себя его полезным и адаптирует уже под свои нужды.

Удачи!

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

  1. topic23 опубликовал комментарий 2 Май 2014, 21:23 #

    Давно читаю ваш блог и хочу спросить да постоянно забываю. ))
    Что бы вы могли посоветовать (документация или учебники) по созданию динамических сайтов на css+java script ?
    Вёрстку относительно простых сайтов (css тогда был прост) как приработок я забросил еще в 2003-м, с тех пор технологии ушли далеко вперед. С программированием проблем нет, т.к. образование как раз в этой области, нас в 90-е отлично учили.

    | Ответить
    • itshaman опубликовал комментарий 3 Май 2014, 06:37 #

      Наверное, учебников нет. Технологии стремительно бегут и, к сожалению, учебники за ними не успевают. Относительно CSS и HTML могу порекомендовать htmlbook.ru, а по JS можно http://learn.javascript.ru

      В любом случае, если Вы хотите реально чему-то научиться, нужно пробовать. Подругому врядли получиться. Удачи в начинании.

      | Ответить
      • topic23 опубликовал комментарий 3 Май 2014, 09:40 #

        Спасибо за советы!
        Учили нас очень хорошо и учили учиться. Освоить что-то в короткие сроки – не проблема. Проблема выбрать то, что освоить, чтобы не отвлекаться на ненужное. CSS и Java для меня не новость, просто вижу что есть масса разных реализаций и вариантов использования, поэтому и спросил у вас как у специалиста.
        Еще раз спасибо!

        | Ответить
  2. Антонина опубликовал комментарий 30 Июнь 2014, 17:58 #

    Да, давно нужно компьютер сделать по-умнее.

    | Ответить
Имя
e-mail
Сайт
Текст комментария: