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

UPGRADE

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

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


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

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

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

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

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

Приведенный ниже плагин делает:
  • удаляет все конструкции 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. Этот плагин не является каким-то универсальным инструментом. Это частный инструмент для конкретной задачи. На блоге я выложил его лишь для того, чтобы самому в будущем на его основе решать другие, подобные задачи. Возможно, кто-нибудь найдет для себя его полезным и адаптирует уже под свои нужды.

Удачи!

Теги:

Комментарии

Граватар пользователя «topic23»
topic23, 2 мая 2014 г. 21:23 #

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

Граватар пользователя «Зюзгин Иван»
Зюзгин Иван, 3 мая 2014 г. 06:37 #

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

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

Граватар пользователя «topic23»
topic23, 3 мая 2014 г. 09:40 #

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

Граватар пользователя «Антонина»
Антонина, 30 июня 2014 г. 17:58 #

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




В качестве аватарки используется сервис - gravatar.com



IT-событие
Создание AMD
Создание AMD
Оглавление
  1. Что умеет моя поделка?
  2. Создаем плагин для Sublime Text
  3. Комментарии