[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Andrey_A, simup, ХарВик, chip642  
TextFormat.vbs - Форматирование выделенного текста
Andrey_AДата: Вторник, 11.09.2012, 06:35 | Сообщение № 1
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Скрипт библиотека форматирования выделенного текста
Используется скрипт Functions.vbs - Скрипт с различными Функциями, которые можно использовать в других скриптах

Доступно только для пользователей


 
San-drДата: Понедельник, 17.09.2012, 23:38 | Сообщение № 2
Лейтенант

На сайте с: 13.09.2012
Город: Москва
Сообщений: 54
Награды: 2
Репутация: 7
А насколько пересекаются возможности этого скрипта с вот этим:
-"Применение русских основных правил книгопечатания" Call("Scripts::Main", 1, "Kavychker.js")
стоит ли применять оба?
 
Andrey_AДата: Вторник, 18.09.2012, 05:55 | Сообщение № 3
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Quote (San-dr)
стоит ли применять оба?

Кому что нравится и что именно надо, этот скрипт я сделал из темы http://tc-image.3dn.ru/forum/24-625-3160-16-1347231390

в Kavychker.js другой функционал

есть ещё и punctuationFixer.js - Исправление пунктуации (преобразование текста)


 
San-drДата: Четверг, 20.09.2012, 19:32 | Сообщение № 4
Лейтенант

На сайте с: 13.09.2012
Город: Москва
Сообщений: 54
Награды: 2
Репутация: 7
испытал, уже вставил в свою сборку.

Спасибо!
+++++++++++++
посмотрел сейчас на свою иконку к твоему скрипту и только сеейчас дошло, что и у тебя и у меня первые буквы имя-фамилия А_А! Иконка вроде как со смыслом, оказывается... а когда рисовал - не задумывался, гы :)


Сообщение отредактировал San-dr - Четверг, 20.09.2012, 19:53
 
Andrey_AДата: Пятница, 21.09.2012, 09:19 | Сообщение № 5
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Quote (San-dr)
посмотрел сейчас на свою иконку к твоему скрипту и только сеейчас дошло, что и у тебя и у меня первые буквы имя-фамилия А_А! Иконка вроде как со смыслом, оказывается... а когда рисовал - не задумывался, гы

У меня ещё и отчество A :) . A3

Quote (fuzzy16)
таки нет удалялки пробелов перед знаками препинания.

Не подтверждается, всё работает

вот текст до
Code
12345  . 12345  ,   12345  ; 12345  !   12345  ?   12345   :  12345   
         ( 12345 )   "  12345  "  [  12345 ]  {  12345 }   1  2   3   4   5   


после
Code
12345. 12345, 12345; 12345! 12345? 12345: 12345
(12345) "12345 " [12345] {12345} 1 2 3 4 5


Выше постом San-dr пишет что работает, даже значок сделал подобный good

Добавил комментарии в скрипте:
Code
Function Format(T)
   T = RegExpReplace(T, "( )+([/.,/!/?:;])", "$2", 1, 0, 1) ' убирает пробелы перед знаками препинания
   T = RegExpReplace(T, "([\({\[])( )+", "$1", 1, 0, 1)     ' убирает пробелы после скобок
   T = RegExpReplace(T, "( )+([\)}\]])", "$2", 1, 0, 1)     ' убирает пробелы перед скобками
   T = RegExpReplace(T, "("")( )+([^""]+)( )+("")", "$1$3$5", 1, 0, 1) ' убирает пробелы после и перед парными кавычками
   T = RegExpReplace(T, "( )+", "$1", 1, 0, 1)              ' убирает лишние пробелы
   T = RegExpReplace(T, "[ \t]$", "", 1, 0, 1)              ' убирает лишние табы и пробелы в конце строки
   Format = RegExpReplace(T, "^[ \t]", "", 1, 0, 1)         ' убирает лишние табы и пробелы вначале строки
End Function


fuzzy16, Если в каком-то тексте не срабатывает - присылай текст с описанием того, что хотелось бы и что не срабатывает


 
fuzzy16Дата: Суббота, 22.09.2012, 22:44 | Сообщение № 6
Рядовой

На сайте с: 04.09.2012
Город: Харьков
Сообщений: 12
Награды: 1
Репутация: 2
Добрый день, Андрей !!!

1. Да, у меня этот эффект похоже тоже пропал. Заработало. Что я сделал?
- Снёс 22.22 и поставил заново.
- Снова перенёс кнопку, к которой подключено форматирование, из 21.21 в 22.22.
Почему раньше глючило - не зная. Может я напортачил чего когда тот раз переносил кнопку.
Приношу извинения. Можешь для острастки снять с меня медальку :-)

2. Функционал этот, получается, в 22.22 есть, но нигде не подключён не выведен в менюшки и на кнопки. Или я искал - не нашёл.
Вопрос: как достать эту красивую иконку "а ,а", про которую тут товарищ San-dr пишет? Она уже живёт где-нибудь в AkelPadImage.dll?

3. Чего ещё надо. Предложение.
Сюда же в форматирование, на эту же кнопку.
Бывает так, что в пылу быстропечатания пропускается пробел ПОСЛЕ знака припинания ПЕРЕД СЛЕДУЮЩИМ словом. Вот надо чтобы оно такой пробел туда вставляло.
Пример:
"лошадь,корова,лампочка" (тут запятая притыкается к следующему слову)
Должно быть:
"лошадь, корова, лампочка" (вставились пробелы ПОСЛЕ запятой)

4. А таки в этом самом TextFormat имеется ещё одна глюка.
Которая, кстати, просматривается и в тестовом примере, приведённом тобой. (Там где цифорки.)
Или это оно само так автоматически получается...
А именно:
Если заключить слово в кавычки и туда напихать ещё и обрамляющих пробелов,
т.е. если типа " привет ",
то оно оставляет ОДИН ПРОБЕЛ ПЕРЕД ЗАМЫКАЮЩЕЙ КАВЫЧКОЙ.
Не всегда, но часто оставляет. А иногда и после открывающих кавычек. Но редко.
Короче, оно как-то "слегка визитэффектно" работает:-) Невсегдашно и закономерности я не уловил.
Видимо это связано с тем, что кавычка - "особый зверь". Скобки - там у них есть парность. А кавычка - она одна.
Так что это наверное корректно работающую автоубиралку сложно будет сделать. :-)
Оно должно как-то понимать которая открывающая, а которая закрывающая. Для этого - надо наверное "считать в уме": чётные кавычки - закрывающие.

5. Прикольно. Оно правильно обрабатывает так же при неправильной расстановке скобок.
Вот тестовые фразы:
(Особый [придурошный {неправильный) случай} потомучто] получается.
(И совсем уже (совершенно [)} тупой и неправильный) случай
Втыкаем пробелы куда ни попаде - убирает лишние, оставляет те что нужно :-)

Всё пока.
 
Andrey_AДата: Воскресенье, 23.09.2012, 02:20 | Сообщение № 7
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Quote (fuzzy16)
Функционал этот, получается, в 22.22 есть, но нигде не подключён не выведен в менюшки и на кнопки. Или я искал - не нашёл

Две кнопки находятся в 2-х местах:
1. В главном меню "Правка" - "Форматирование"
Code

-"Форматирование текста" Call("Scripts::Main", 1, "TextFormat.vbs") Icon("%a\AkelPadImage.dll",1076)
-"Форматирование текста не затрагивая начальные пробелы" Call("Scripts::Main", 1, "TextFormat.vbs", `"1"`) Icon("%a\AkelPadImage.dll",1077)


2. В панели форматирования

Красивая кнопка в сборке San-dr, у меня другая
Quote (fuzzy16)
Если заключить слово в кавычки и туда напихать ещё и обрамляющих пробелов,
т.е. если типа " привет ",

Все условия не предусмотришь - в скрипте сделано для цитаты " Цитата " -> "Цитата"

Quote (fuzzy16)
Оно должно как-то понимать которая открывающая, а которая закрывающая. Для этого - надо наверное "считать в уме": чётные кавычки - закрывающие.

Даже не в чётности дело, вот пример

Code
" цитата  " слово " пока "

" цит " слово пока " ата "


и там и там 4 кавычки, но правильно по разному

Code
"цитата" слово "пока"

"цит "слово пока" ата"


 
fuzzy16Дата: Понедельник, 24.09.2012, 02:47 | Сообщение № 8
Рядовой

На сайте с: 04.09.2012
Город: Харьков
Сообщений: 12
Награды: 1
Репутация: 2
Добрый день, Андрей!!!

1. Спасибо, кнопки форматирования - две - в ("Правка" - "Форматирование") нашёл. Кто такая Панель форматирования - не разобрался (не видел), но на всяк случай поставил так же во вторую панель с иконками. Чтобы всегда под рукой. Она наверно и есть Форматирование... Короче не важно. Да, действительно функционал подключён.

2. Про тестирование. Если ввести указанный тестовый пример
" Цитата " -> "Цитата"
то после первого нажатия кнопки Форматирования оно делает
"Цитата" -> "Цитата" (т.е. правильно удаляет),
а после второго (повторного) нажатия - делает
"Цитата"->"Цитата" (т.е. удаляет пробелы вокруг стрелочки).
Это значит что она ловит однократное обрамление пробелами внутри " " и при этом не различает, кто там где открывающий-закрывающий.

3. Разобрался я с закономерностью появления этого неправильного удаления пробела. Если набрать
" <два пробела> слово <снова два пробела> "
то оно оставляет
" слово <один пробел> ".
Аналогично,если набрать
" <любое количество пробелов> слово <любое другое количество пробелов> "
то оно всегда всё равно оставляет
" слово <один пробел> "
Только если обрамляется по одному пробелу - работает правильно.

4. Почему так - я писал в прошый раз. Знак " отличается от скобок. Он не парный. Значит тут нужен алгоритм, который будет "снаружи", "принудительно" определять чётность встреченного знака ".
Алгортим примерно такой.
- вначале программы - вводится переменная, допустим аааа - показатель чётности. Начальное значение аааа=0.
- затем текст перебирается от начала до конца знак за знаком. Когда встречается ОЧЕРЕДНОЙ знак " - мы смотрим на аааа.
Если аааа=0, мы удаляем все СЛЕДУЮЩИЕ пробелы (пока не будет символ отличный от пробела), и говорим аааа=1.
Если аааа=1, мы движемся назад и удаляем все ПРЕДШЕСТВУЮЩИЕ пробелы (пока не будет знак отличный от пробела), и говорим аааа=0.
Приблизительно так. В действительности немного сложнее, потому что символы наверное хранятся (адресуются) так, что только помечаются как удалённые, потому что имеются откаты. Но общая идея - учёт чётности-нечётности символа " - остаётся.

Всё пока.
 
  • Страница 1 из 1
  • 1
Поиск:

Интеллектуальные права и отказ от ответственности