#title="Нумерация выделенных логических строк" #tooltip="Insert Numbering" #tooltip="Нумеровать выделенные логические строки // Этот макрос нумерует выделенные логические строки // Особенности: // 1. В зависимости от кол-ва выделенных строк вставляет перед каждым порядковым // номером необходимое кол-во нулей, (пример: 1,2, или 01,02 или 001, 002 и т.д.) // 2. Вместо пробела, по умолчанию отделяющего порядковый номер от выделенного текста, // юзер может использовать любое кол-во желаемых символов, изменив содержание переменной DELIMITER // 3. Строку(и) можно выделять не целиком, но необходимо выделить хотя бы один символ with (document.selection){ if (!IsEmpty){ // Можете заменить пробел между кавычками на любое кол-во желаемых символов var DELIMITER = " "; //ПОКА НЕ РЕАЛИЗОВАНО: нумеровать пустые строки или нет var skipEmptyLines = new Boolean (false); // false: пустые строки будут пронумерованы; true: пустые строки не будут прономерованы //ПОКА НЕ РЕАЛИЗОВАНО: использовать меню выбора функций или нет var skipMenu = new Boolean (false); // false: использовать меню; true: не использовать меню // Функция подсчёта кол-ва цифр (вспомогательная) function countDigits(n) { for(var i = 0; n > 1; i++) { n /= 10; } return i; } // Функция вставки нулей перед порядковым номером и сдвига порядкового номера вправо (вспомогательная) function pad(num, size) { var z = num +""; while (z.length < size) { z = "0" + z; } return z; } // Проверяем целиком ли выделена 1-ая строка, и, если нет, то выделяем её целиком. // Это нужно для правильного выполнения основного алгоритма y1 = GetAnchorPointY (eePosLogical); y2 = GetActivePointY (eePosLogical); if (y1 <= y2) SetAnchorPoint ( eePosLogical, 1, y1 ) if (y1 > y2) StartOfline (eeLineLogical, true); // Основной алгоритм нумерации var s = Text.split("\n"); var len = s.length; for (var j=0; j < len; j++){ if (s[j] != ""){ s[j] = pad (j+1, countDigits(len)) + DELIMITER + s[j]; } } Text = s.join("\n"); // Конец основного алгоритма нумерации } // Если текст не выделен, то выдаётся уведомление, и нумерация не производится else { alert ("Тест не выделен!\nЧтобы произести нумерацию выделите хотя бы один символ."); Quit(); } } Quit(); |