Как почистить таблицу в html или пишем собственный плагин для Sublime Text
Вспоминая старый девиз компании 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. Этот плагин не является каким-то универсальным инструментом. Это частный инструмент для конкретной задачи. На блоге я выложил его лишь для того, чтобы самому в будущем на его основе решать другие, подобные задачи. Возможно, кто-нибудь найдет для себя его полезным и адаптирует уже под свои нужды.
Удачи!
Теги: Sublime
Давно читаю ваш блог и хочу спросить да постоянно забываю. ))
Что бы вы могли посоветовать (документация или учебники) по созданию динамических сайтов на css+java script ?
Вёрстку относительно простых сайтов (css тогда был прост) как приработок я забросил еще в 2003-м, с тех пор технологии ушли далеко вперед. С программированием проблем нет, т.к. образование как раз в этой области, нас в 90-е отлично учили.
Наверное, учебников нет. Технологии стремительно бегут и, к сожалению, учебники за ними не успевают. Относительно CSS и HTML могу порекомендовать htmlbook.ru, а по JS можно https://learn.javascript.ru/
В любом случае, если Вы хотите реально чему-то научиться, нужно пробовать. Подругому врядли получиться. Удачи в начинании.
Спасибо за советы!
Учили нас очень хорошо и учили учиться. Освоить что-то в короткие сроки – не проблема. Проблема выбрать то, что освоить, чтобы не отвлекаться на ненужное. CSS и Java для меня не новость, просто вижу что есть масса разных реализаций и вариантов использования, поэтому и спросил у вас как у специалиста.
Еще раз спасибо!
Да, давно нужно компьютер сделать по-умнее.