Поиск по тексту (скрипт)

  • Автор темы Автор темы horn
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

horn

Участник
Топикстартер
Сообщения
5
Реакции
0
Хочу написать такой скрипт. Поиск по тексту.

К примеру есть текстовый фрейм с текстом:

"Уж небо осенью дышало,
Уж реже солнышко блистало,
Короче становился день,
Лесов таинственная сень
0909
С печальным шумом обнажалась,
Ложился на поля туман,
0909
Гусей крикливый караван
Тянулся к югу: приближалась
Довольно скучная пора;
Стоял ноябрь уж у двора."

Нужно сделать так, что бы в итоге получились три фрейма.
То есть как бы скрипт делил фрейм на основе символов 0909.
Как, какими методами, функциями это можно осуществить?


PS я недано начал изучать и потому еще не совсем понял как работает поиск, выделение методом скриптов"
 
Ответ: Поиск по тексту (скрипт)

немного поконкретней напишу что хотелось бы)
то есть я так понимаю, мы сначало ищем в тексте символьное сочетание 0909.
а как потом выделить текст от начала до 0909 что бы скопировать его в новый фрейм?
 
Ответ: Поиск по тексту (скрипт)

Встречный вопрос: а что у Вас уже есть? Наброски кода, знания о скриптинге...
 
Ответ: Поиск по тексту (скрипт)

кода как такового нет. я недавно начал изучать скрипты.
информации по тому что написал, я не нашел. а именно какие функции отвечают за работу с текстом.
 
Ответ: Поиск по тексту (скрипт)

horn, отвечу на Ваш вопрос, потому сам когда-то получил на него ответ.
Обратиться к выделенному тексту:
PHP:
var myText = app.activeDocument.selection[0];
По поводу того, что
я недавно начал изучать скрипты.
хорошо бы подробнее объяснить, что уже Вами изучено и сделано, так с Вами легче будет найти общий язык. Вот хороший пример того, как это делается.
 
Ответ: Поиск по тексту (скрипт)

На мой взгляд, это не та задача, на которой надо учиться скриптингу, т.к. она очень просто решается стандартными средствами:
1) на мастер-странице нарисовать фрейм нужного размера (или фреймы, тогда их надо связать)
2) поместить стих в первый фрейм и поиском/заменой заменить 0909 на Frame Break. И каждый стих будет в своем фрейме.

Надо браться за проблему, не решаемую имеющимися возможностями программы. Их много. Тогда и кураж будет сделать что-то действительно полезное, и подмога коллегам, если опубликуете.
 
Ответ: Поиск по тексту (скрипт)

хм. незнал такое. )
но все же это будут связанные фреймы. а нужно что бы они были раздельные..
 
Ответ: Поиск по тексту (скрипт)

И это уже решено. :)
Для разбиения цепочки текстовых фреймов на отдельные есть штатный скрипт SplitStory.jsx
 
Ответ: Поиск по тексту (скрипт)

и все же скрипт я хочу написать.. (и для собвственного изучаения скриптов, и для работы)
главной целью, я думаю вот что: разбивается текст с разными разделителями (к примеру 0909, 0808 , и т.д.)
и присваивать разные стили разным участкам текста, но это потом.
в начале хочется просто разобраться с текстовыми функциями в скриптах.
 
Ответ: Поиск по тексту (скрипт)

хм. незнал такое. )

Однако, прежде чем писать скрипты, нужно хотя бы знать возможности самой программы. Ну или как минимум половину её возможностей. То что вы не знали — это, извиняюсь, азы... Какие скрипты? Учебник и недели три-четыре по два часа перед сном.
 
Ответ: Поиск по тексту (скрипт)

Хочу написать такой скрипт. Поиск по тексту.
Нужно сделать так, что бы в итоге получились три фрейма.
То есть как бы скрипт делил фрейм на основе символов 0909.
Как, какими методами, функциями это можно осуществить?

Вот, навскидку:
PHP:
myTextFrame = app.selection[0];
myPage = myTextFrame.parentPage;//только в CS5
myParagraphs = myTextFrame.parentStory.paragraphs;
whyle( myParagraphs.length ){
	newFrame = myPage.textFrames.add(bounds);// bounds - координаты/габариты твоих фреймов
	for( i = 0; i < myParagraphs.length; i++ )
		if( /0909/.test( myParagraphs[i].contents ){
			myParagraphs[i].remove();
			myParagraphs.itemByRange(0,i-1).move( newFrame );
			break;
			}
		else if(  i == myParagraphs.length - 1 ){
			myParagraphs.itemByRange(0,i).move( newFrame );
			break;
			}
	newFrame.fit(FitOptions.FRAME_TO_CONTENT);
	}
 
Статус
Закрыто для дальнейших ответов.