AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Помогите написать скрипт
Goto page Previous  1, 2, 3 ... 10, 11, 12 ... 14, 15, 16  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
San_dr



Joined: 06 Dec 2010
Posts: 159
Location: г.Харьков, Русь

PostPosted: Tue May 22, 2012 1:39 pm    Post subject: Reply with quote

создал из стандартного тулбара, скопировав его ToolBar-TextMain.dll и такой - же файл ToolBar-TextMain.ini из стандартного (временно, пока не настрою как полноэкранный)
поместил FullScreenWithToolBar.js в папку скриптов, создал пункты меню
Code:
  SEPARATOR
  -"С тулбаром по умолчанию" Call(ScriptsMain, 1, FullScreenWithToolBar.js)
  -"С тулбаром для работы с текстом" Call(ScriptsMain, 1, FullScreenWithToolBar.js, ToolBar-TextMain)

при вызове любого пункта краш с сообщением

что не так?
переименовывал новые ini и dll в ToolBarMain - то же самое. TextMain - аналогично


Last edited by San_dr on Tue May 22, 2012 7:11 pm; edited 1 time in total
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1395
Location: Poland

PostPosted: Tue May 22, 2012 1:55 pm    Post subject: Reply with quote

San_dr
You have to copy exactly, what VladSh wrote in the script:
Code:
-"С тулбаром по умолчанию" Call("Scripts::Main", 1, "FullScreenWithToolBar.js")
-"С тулбаром для работы с текстом" Call("Scripts::Main", 1, "FullScreenWithToolBar.js", "ToolBar-Text::Main")

And file name is ToolBar-Text.dll.
Back to top
View user's profile Send private message
San_dr



Joined: 06 Dec 2010
Posts: 159
Location: г.Харьков, Русь

PostPosted: Tue May 22, 2012 4:45 pm    Post subject: Reply with quote

KDJ
Спасибо, все получилось

ну, что еще сказать про эту замечательную программу...
я давно говорю, что польский джаз глубже и умней американского! Smile))))))
Back to top
View user's profile Send private message
alok



Joined: 06 Jul 2012
Posts: 2

PostPosted: Tue Jul 17, 2012 6:11 am    Post subject: Reply with quote

Привет всем! Есть текст вида:
любой текст
любой текст
любой текст
любой текст
любой текст

любой текст
любой текст
любой текст
любой текст

Необходимо, чтобы после каждых 3 непустых строк добавлялся перевод строки:
любой текст
любой текст
любой текст

любой текст
любой текст

любой текст
любой текст
любой текст

любой текст
Как это сделать? Rolling Eyes
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Tue Jul 17, 2012 1:59 pm    Post subject: Reply with quote

alok
Как-то так
Code:
var lineSepDefault = 3;
var pBreak = "\r";
var sContent = AkelPad.GetTextRange(0, -1);
var arrLines = sContent.split(pBreak);
var kBorder;
var bEmptyLine;

for (i = 0; i < arrLines.length; i++) {
   if (arrLines[i].length != 0)
   {
      kBorder = arrLines.length - i;
      if (kBorder > lineSepDefault) kBorder = lineSepDefault;
      
      for (k = 0; k < kBorder; k++) {
         bEmptyLine = (arrLines[i + k].length == 0);
         if (bEmptyLine) break;
      }
      i += (k - 1);
      
      if ((k == lineSepDefault) && !bEmptyLine)
         arrLines[i] += pBreak;
   }
}

AkelPad.SetSel(0, -1);
AkelPad.ReplaceSel(arrLines.join(pBreak));
.
Можно было бегать по строке с помощью indexOf (и так наверное было бы быстрее), но мне не захотелось.
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1629

PostPosted: Tue Jul 17, 2012 3:38 pm    Post subject: Reply with quote

А вот вариант из серии «теперь у нас есть две проблемы», на регулярных выражениях:

Что: ([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))
Чем: \0\n

Если через SearchReplace.js, то заменять на $&\n
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Tue Jul 17, 2012 4:47 pm    Post subject: Reply with quote

Infocatcher
Для интереса скопировал "Что" и $&\n в SearchReplace.js, поставил галку "Регулярные выражения", но оно не работает.
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1629

PostPosted: Tue Jul 17, 2012 6:50 pm    Post subject: Reply with quote

VladSh
Странно, у меня работает.
Если только это старая версия JScript, не умеющая (?! ...)
Back to top
View user's profile Send private message Visit poster's website
alok



Joined: 06 Jul 2012
Posts: 2

PostPosted: Wed Jul 18, 2012 5:28 am    Post subject: Reply with quote

VladSh wrote:
alok Как-то так

Спасибо большое, работает!!!!

Infocatcher wrote:
А вот вариант из серии «теперь у нас есть две проблемы», на регулярных выражениях:

Что: ([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))
Чем: \0\n

Если через SearchReplace.js, то заменять на $&\n

Описал как:
pContent = pContent.replace(/([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))/gm, "\0\n");
Занулило данные. Но все равно спасибо.
Back to top
View user's profile Send private message
Infocatcher



Joined: 06 Aug 2007
Posts: 1629

PostPosted: Wed Jul 18, 2012 9:37 am    Post subject: Reply with quote

alok
\0 – это для встроенного диалога замены.
Вот так работает:
Code:
AkelPad.ReplaceSel(
   AkelPad.GetSelText()
      .replace(/([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))/g, "$&\r")
);

Там еще тонкость в том, что находит-то любой вариант перевода строки, а замена делается на вполне конкретный.
Или можно вот так:
Code:
AkelPad.ReplaceSel(
   AkelPad.GetSelText()
      .replace(/([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n))/g, "$&$2")
);
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2614
Location: Киев, Русь

PostPosted: Wed Jul 18, 2012 12:59 pm    Post subject: Reply with quote

Infocatcher
У меня на WinXP sp3 не работает ни один из приведенных вариантов.
Back to top
View user's profile Send private message Visit poster's website
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Wed Jul 18, 2012 2:11 pm    Post subject: Reply with quote

VladSh, тоже XPsp3, оба работают: ([^\n\r]+(\r\n?|\n)){3}(?!(\r\n?|\n)) R: \0\2 SR: $&$2
Infocatcher, у меня в скрипте с \n и \r заморачиваться бесполезно. При поиске \n вроде вообще не работает, а \r находит любое завершение строки. При замене \r ставит то завершение строки, которое установлено по умолчанию в меню "формат новой строки". А \n странно себя ведет при замене. Если она попадает после завершения строки, то игнорируется, а если после символа, то добавляет перенос строки по умолчанию. Вот так работает для любых завершений строк: .replace(/([^\r]+\r){3}(?!\r)/g, "$&\r");
В SearchReplace наоборот: (.+\n){3}(?!\n) и $&\n
А вот в Replace поиск действует так же как в SearchReplace(кроме .), но замена чувствительна и \r в замене обозначает именно символ \r, а \n - \n. Поэтому вот так: ([^\n]+(\n)){3}(?!\n) и \0\2
Back to top
View user's profile Send private message
vadim



Joined: 16 Aug 2012
Posts: 9

PostPosted: Mon Sep 10, 2012 6:25 pm    Post subject: Reply with quote

Мне нужна программа, расширяющая возможности AkelPad, но я не знаю что это должно быть, плагин или скрипт. Мне посоветовали обратиться сюда, т.к. ее вроде возможно реализовать при помощи скрипта. Ничего подобного я на форуме не нашел (может плохо искал).

Программа должна уметь делать примерно следующее. В одну из вкладок загружается структурированный файл, информация в котором помещена внутри специальных меток (что-то типа тегов в HTML файлах). Каждая пара меток уникальна.

Пример: <01>информация 1</01>; <02>информация 2</02> и т.д.

Во вторую вкладку помещается шаблон со вставленными аналогичными метками, но без информации.

Пример: <H2><01></01></H2> <P><02></02></P>

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

Пример: <H2>информация 1</H2> <P>информация 2</P>

Информация для копирования ищется во всех неактивированных вкладках и переносится в активированную.
Уничтожать или нет метки в шаблоне устанавливается в настройках.
В настройках прописывается список из каких меток в какие должна копироваться информация.

Вот что примерно требуется. Если нужно, могу написать подробнее, предоставить примеры файлов.

Не взялся бы кто-нибудь написать такой скрипт, и что для этого требуется от меня?
Пишите в личку.
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1395
Location: Poland

PostPosted: Wed Sep 12, 2012 8:23 pm    Post subject: Reply with quote

vadim
Try this script: CopyInfo.js
Code:
/**************************************
Usage
1. AkelPad in MDI/PMDI mode.
2. Open only two files:
   - first - template file,
   - next - file with info.
3. Run this script.
4. If not errors, result is in new tab.
**************************************/

var sText = AkelPad.GetTextRange(0, -1);
var oRE   = /(<([\s\S]+?)>)([\s\S]+?)(<\/\2>)/g;
var aInfo = [];
var aExec;
var i;

while (aExec = oRE.exec(sText))
  aInfo.push([aExec[1] + aExec[4], aExec[3]]);

if (aInfo.length)
{
  AkelPad.Command(4316 /*IDM_WINDOW_FRAMENEXT*/);
  sText = AkelPad.GetTextRange(0, -1);

  for (i = 0; i < aInfo.length; ++i)
  {
    oRE   = new RegExp(Escape(aInfo[i][0]), "g");
    sText = sText.replace(oRE, function(sMatch, nPos, sString) {return aInfo[i][1];} );
  }

  AkelPad.Command(4101 /*IDM_FILE_NEW)*/);
//  AkelPad.SetSel(0, -1);

  AkelPad.ReplaceSel(sText);
}

function Escape(sStr)
{
  return sStr.replace(/[\\.^$+*?|()\[\]{}]/g, "\\$&");
}
Back to top
View user's profile Send private message
sasa236



Joined: 26 Oct 2012
Posts: 5

PostPosted: Fri Oct 26, 2012 6:09 am    Post subject: Ведение лога событий. Reply with quote

Есть необходимость в лог-файле, где бы отражалось дата и имя открытых и напечатанных файлов (в т.ч. и напечатанных в пакетном режиме).
Просьба помочь практически, т.к. в скриптах не силен.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3 ... 10, 11, 12 ... 14, 15, 16  Next
Page 11 of 16

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group