Search
Write a publication
Pull to refresh

Aptana — создание плагинов

Reading time4 min
Views637
В последнее время в качестве основного рабочего редактора я выбрал Aptana Studio Community Edition. Редактор очень хорош (подробный обзор его возможностей тема для отдельного поста) и радует своей бесплатностью.
Так вот, Aptana поддерживает плагины Eclipse Monkey, которые можно создавать и самостоятельно! Как это делать? Сейчас расскажу на примере создания плагина для сжатия CSS-файлов.

Для начала нам необходимо создать в любом проекте (для скриптов я создал отдельный проект) папку «Monkey» или «Scripts». Затем создаем в новой папке JavaScript файл и открываем его.

В самом начале пишем следующее:
/*
* Menu: CSS > Compact
* DOM: download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
* DOM: localhost/com.aptana.ide.scripting
*/


Этот комментарий описывает как будет отображаться ваш плагин на панели и в меню Scripts. В данном случае плагин попадет в раздел CSS под названием Compact.

Создаем функцию main, внутри этой функции и будут описываться все действия над редактируемым кодом:
function main(){
}


Первым делом нам надо убедиться что существует активный редактор, для этого в функцию main пишем следующее:

var sourceEditor = editors.activeEditor;
if (sourceEditor === undefined)
{
alert("Нет активного редактора!");
}


Создаем переменную sourceEditor, которую приравниваем к editros.activeEditor (активный редактор). Затем проверяем есть ли активный редактор и в случае отсутствия оного — выводим предупреждение.
Следующим шагом нам необходимо удостовериться, что редактируемый файл — это CSS-файл. Для этого создадим следующую функцию:

function getLanguage()
{
var result = "";

try
{
result = editors.activeEditor.textEditor.getFileContext().getDefaultLanguage();
}
catch(e)
{
}

return result;
}


Эта функция вернет нам тип файла в активном редакторе. Для ее вызова допишем наш if в функции main:

else if (getLanguage() != "text/css")
{
alert("Сжимать можно только CSS-файлы!");
}


Удостоверившись что существует активный редактор и файл в нем именно CSS, можно приступать непосредственно к работе над кодом. Для этого в наш if допишем:

else
{
var comString = sourceEditor.source; // comString приравняли к тексту редактируемого файла

var reg = /\t/g; //Описали и
var comString = comString.replace(reg,''); //убрали все табы

var reg = /\/\*.*\*\//g; //Описали и убрали
var comString = comString.replace(reg,''); //все комментарии

var reg = /:\s*/g; // Описали и убрали все пробелы
var comString = comString.replace(reg,':'); // в конструкциях display: none;

var reg = /\r\n\r\n/g; // Описали и убрали
var comString = comString.replace(reg,''); // переводы строки

// Заменяем текст в редакторе, на отредактированный текст
sourceEditor.applyEdit(0, sourceEditor.sourceLength, comString);
}


Вот и все. Сохранив этот плагин и перезапустив Aptana можно будет обнаружить в меню Scripts > CSS запись Compact вызвав которую, Вы сможете сжать свой CSS-файл.

Таким образом, совершая различные действия над переменной comString Вы можете создать плагин, который нужен именно Вам!

Конечный результат:
/*
* Menu: CSS > Compact
* DOM: download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
* DOM: localhost/com.aptana.ide.scripting
*/

function main()
{
  var sourceEditor = editors.activeEditor;
  
  if (sourceEditor === undefined)
  {
    alert("Нет активного редактора!");
  }
  else if (getLanguage() != "text/css")
  {
    alert("Сжимать можно только CSS-файлы!");
  }
  else
  {
    var comString = sourceEditor.source;

    var reg = /\t/g;
    var comString = comString.replace(reg,'');

    var reg = /\/\*.*\*\//g;
    var comString = comString.replace(reg,'');

    var reg = /:\s*/g;
    var comString = comString.replace(reg,':');

    var reg = /{\s*/g;
    var comString = comString.replace(reg,'{');

    var reg = /}\s*/g;
    var comString = comString.replace(reg,'}');

    var reg = /\s*{/g;
    var comString = comString.replace(reg,'{');

    var reg = /;\s*/g;
    var comString = comString.replace(reg,';');

    var reg = /\r\n/g;
    var comString = comString.replace(reg,'');
    
    sourceEditor.applyEdit(0, sourceEditor.sourceLength, comString);
  }
}

function getLanguage()
{
  var result = "";
  
  try
  {
    result = editors.activeEditor.textEditor.getFileContext().getDefaultLanguage();
  }
  catch(e)
  {
  }
  
  return result;
}


* This source code was highlighted with Source Code Highlighter.


P.S. Пример, приведенный в этой статье не претендует на звание 100% компрессора CSS-файлов!
Tags:
Hubs:
Total votes 8: ↑7 and ↓1+6
Comments1

Articles