ScriptTemplate.vbs - Скрипт шаблон
|
|
Andrey_A | Дата: Четверг, 28.11.2013, 02:19 | Сообщение № 1 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7187
Награды: 143
Репутация: 125
Аверин Андрей
|
Скрипт шаблон, помогающий пользователю настроить текстовые преобразования Используется скрипт Functions.vbs - Скрипт с различными Функциями, которые можно использовать в других скриптах
Доступно только для пользователей
|
|
| |
Andrey_A | Дата: Воскресенье, 26.07.2015, 22:59 | Сообщение № 31 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7187
Награды: 143
Репутация: 125
Аверин Андрей
|
Цитата вызывать та её как? Там где это необходимо в скрипте пишите: Код Text = Transliterate2(Text, 1) или Text = Transliterate2(Text, 2) или Text = Transliterate2(Text, 3) ... что означает, что вы отправляете переменную Text в функцию для преобразования, с заданным параметром
.
|
|
| |
InFive | Дата: Воскресенье, 26.07.2015, 23:14 | Сообщение № 32 |
Майор
На сайте с: 26.11.2013
Город: Майкоп
Сообщений: 93
|
Теоретические получается, что данный второй код мне не подходит... мне нужно, чтобы работал ваш первый кодКод Case 5 TEG1 = "<span class=""rus"">" ' начало тега TEG2 = "</span>" ' окончание тега aT = RegExpSearchPlus(Text, TEG1 & "[^""><]+" & TEG2, 1, 0, 1, 2) ' получение массива всех "rus" тегов в тексте If IsArray(aT) Then ' проверка - является ли массивом ' в цикле обрабатываем все теги For i = 0 To Ubound(aT) - 1 Teg = Replace(aT(i), TEG1, "") ' удаляем из элемента начало тега Teg = Replace(Teg, TEG2, "") ' удаляем из элемента конец тега Teg = Transliterate(Teg, 1) ' заменяем английские на русские Text = Replace(Text, aT(i), TEG1 & Teg & TEG2) ' заменяем полученные отрезки на изменённые Next End If
Поэтому я и спросил, если я создам функцию со своими Case, как её использовать с вашим первым кодом? вместо eg = Transliterate(Teg, 1) я пропишу свою функцию Teg = Transliterate2(Teg, 1) но а как тогда выбирать здесь Case?
|
|
| |
Andrey_A | Дата: Воскресенье, 26.07.2015, 23:31 | Сообщение № 33 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7187
Награды: 143
Репутация: 125
Аверин Андрей
|
Код но а как тогда выбирать здесь Case? не понял вопроса... Case в основном скрипте и Case в функции - это разные вещи - и они не пересекаются...
Код Cnt = WScript.Arguments.Count ' количество параметров переданных в скрипт Param1 = WScript.Arguments(0) If Cnt > 1 Then Param2 = WScript.Arguments(1)
Select Case Param1 Case 1 Case 2 Case 3 Text = NameFun(Text, Param2) End Select
...
Function NameFun(X, Y) Select Case Y Case 1 Case 2 Case 3 End Select NameFun = ... End Function
|
|
| |
InFive | Дата: Воскресенье, 26.07.2015, 23:43 | Сообщение № 34 |
Майор
На сайте с: 26.11.2013
Город: Майкоп
Сообщений: 93
|
Оставлю вопрос только один - если я создам функцию со своими набором Case, как её использовать с вашим первым кодом? Или если я пропишу в коде Teg = Transliterate2(Teg, 1) то моя функция Transliterate2 будет автоматом выполняться со всеми прописанными в функции Case?
|
|
| |
Andrey_A | Дата: Понедельник, 27.07.2015, 01:33 | Сообщение № 35 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7187
Награды: 143
Репутация: 125
Аверин Андрей
|
Код AkelPad.Include("Functions.vbs") ' подключение скрипта-библиотеки Param = WScript.Arguments(0) ' значение 1-го параметра
Text = AkelPad.GetSelText() ' получение выделенного текста
If Len(Text) = 0 Then ' если ничего не выделенно, то Text = AkelPad.GetTextRange(0, -1) ' берётся весь текст Call AkelPad.SetSel(0, -1) ' выделяется весь текст End If
Select Case Param Case 1 ' ... ' Case 5 TEG1 = "<span class=""rus"">" ' начало тега TEG2 = "</span>" ' окончание тега aT = RegExpSearchPlus(Text, TEG1 & "[^""><]+" & TEG2, 1, 0, 1, 2) ' получение массива всех "rus" тегов в тексте If IsArray(aT) Then ' проверка - является ли массивом ' в цикле обрабатываем все теги For i = 0 To Ubound(aT) - 1 Teg = Replace(aT(i), TEG1, "") ' удаляем из элемента начало тега Teg = Replace(Teg, TEG2, "") ' удаляем из элемента конец тега Teg = Transliterate2(Teg, 1) ' заменяем английские на русские Text = Replace(Text, aT(i), TEG1 & Teg & TEG2) ' заменяем полученные отрезки на изменённые Next End Select
Call AkelPad.ReplaceSel(Text) ' замена выделенного преобразованным текстом
' tranText - текст для преобразования ' Param - номер языка Function Transliterate2(tranText, PR) If Len(tranText) = 0 Then Exit Function Select Case PR Case 1 ' китайский Source = Array("а", "б") Target = Array("a", "b") Case 2 ' украинский Source = Array("а", "б") Target = Array("a", "b") Case 3 ' финский Source = Array("а", "б") Target = Array("a", "b") End Select For t = 0 To Ubound(Source) trText = RegExpReplace(tranText, Source(t), Target(t), 0, 1, 1) Next Transliterate2 = tranText End Function
|
|
| |
InFive | Дата: Понедельник, 27.07.2015, 20:14 | Сообщение № 36 |
Майор
На сайте с: 26.11.2013
Город: Майкоп
Сообщений: 93
|
Андрей, к сожалению, но не работает...
после нажатия на кнопку "Изменить" курсор в AP становится на выделенную строку, под номером 139947
Забыл предупредить, я работаю в AP Image 28.28Добавлено (27.07.2015, 20:14) --------------------------------------------- Всё, разобрался надо было добавить пропущенное End If чтобы было в конце
Next End If
но к сожалению, сделав внутри функции Case для пробы
Source = Array("all", "alla") Target = Array("алл", "алла")
замена не совершается в тексте для пробы
<span class="rus">alla</span> <span class="rus">all</span>
Сообщение отредактировал InFive - Понедельник, 27.07.2015, 18:30 |
|
| |
Andrey_A | Дата: Понедельник, 27.07.2015, 22:29 | Сообщение № 37 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7187
Награды: 143
Репутация: 125
Аверин Андрей
|
1. Ошибки бывают...
Код For t = 0 To Ubound(Source) tranText = RegExpReplace(tranText, Source(t), Target(t), 0, 1, 1) Next Transliterate2 = tranText End Function
2. При словесных заменах лучше в начале использовать длинные имена, потом короткие
Код Source = Array("alla", "all") Target = Array("алла", "алл")
|
|
| |
InFive | Дата: Понедельник, 27.07.2015, 22:48 | Сообщение № 38 |
Майор
На сайте с: 26.11.2013
Город: Майкоп
Сообщений: 93
|
Мне пришла мысль, что эта функция мне нужна будет и для других целей, для работ в пределах разных тегов... так, так, так, это очень даже хорошо... единственно что, нужно будет чтобы после выполнения функции, в некоторых случаях нужно будет чтобы теги начальные и конечные, внутри которых совершается работа, удалялись... простой ход есть для этого в пределах функции?
|
|
| |
Andrey_A | Дата: Понедельник, 27.07.2015, 22:56 | Сообщение № 39 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7187
Награды: 143
Репутация: 125
Аверин Андрей
|
Код ... Text = Replace(Text, aT(i), Teg) ' заменяем полученные отрезки на изменённые без начальных и конечных тегов ...
|
|
| |
InFive | Дата: Вторник, 28.07.2015, 10:14 | Сообщение № 40 |
Майор
На сайте с: 26.11.2013
Город: Майкоп
Сообщений: 93
|
Андрей
Этот скрипт у меня сильно разрастается, подумываю о том, чтобы его поделить на части и по темам. В связи с этим вопрос - название скрипта нигде жёстко не прописано, проблем не будет с переименованием его?
|
|
| |
Andrey_A | Дата: Вторник, 28.07.2015, 11:37 | Сообщение № 41 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7187
Награды: 143
Репутация: 125
Аверин Андрей
|
Цитата название скрипта нигде жёстко не прописано, проблем не будет с переименованием его нет конечно... ScriptTemplate.vbs - это всего лишь пример создания своего собственного
Цитата скрипт у меня сильно разрастается, подумываю о том, чтобы его поделить на части и по темам если есть (будут отдельные функции), как Transliterate2() , то их можно вынести в другой скрипт "общих функций" к примеру MyFunction.vbs и положить в папку ...\AkelFiles\Plugs\Scripts\Include\ и его (все эти функции) можно подключать с помощью команды:
Код AkelPad.Include("MyFunction.vbs") ' подключение скрипта-библиотеки
так я сделал когда-то Functions.vbs , в котором была одна функция - теперь более 170-ти...
|
|
| |
|