[ID CC-CC2021] Подскажите, как выделить строку до пробела.

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Закопался... (ищу и подкрашиваю html-ссылки в документе)
Руками нахожу "http". Теперь ищу ближайший пробел:
Код:
var doc = app.activeDocument;
mSel = app.selection[0];
mStart = mSel.insertionPoints[0].index
mEnd1 = mSel.paragraphs[0].insertionPoints[-1].index //конец абзаца
// тут хочу объявить оставшуюся часть абзаца местом для поиска пробела
mString1 = app.selection[0].insertionPoints.itemByRange(app.selection[0].insertionPoints[mStart], app.selection[0].insertionPoints[mEnd1])
Но объект пустой...
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Что-то сильно запущенно все.
Во-первых, индекс точки вставки считается по положению относительно родительского объекта, story или cell. Вовсе не факт, что они совпадут с нужными. Во-вторых, range можно брать, передавая в качестве параметров не индексы, а сами insertionPoints. В-третьих, при помощи простого GREP искать ссылки в разы удобнее.
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Спасибо. Пока (без грепа) так:
Код:
mSel = app.selection[0];
mStart = mSel.insertionPoints[0]//.index
mEnd1 = mSel.paragraphs[0].insertionPoints[-1]//.index //конец абзаца
mString1 = mSel.insertionPoints.itemByRange(mStart, mEnd1);
Осталось найти первый пробел...
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
myString1.contents.toString().indexOf(' ')
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Спасибо.
Правда при покраске ссылок в сносках выдается ошибка, потому что ссылка - уже другая story. Теперь надо попробовать калькулировать индексы только внутри активного абзаца. А оно все равно дает номер из общей story. То есть индексные цифры (порядковые номера символов "первый-последний") должны быть в районе 50-200. А они все равно берутся из общей стори, поэтому за 20 тыс. выходят.
Код:
mIndex = mSel.insertionPoints[0].index+mIndex;
var mString2 = app.selection[0].insertionPoints.itemByRange  
(   
    mStart,   
    app.selection[0].parentStory.insertionPoints[mIndex] 
//~     app.selection[0].paragraphs[0].insertionPoints[mIndex] 
)
 
Последнее редактирование:

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Полностью:
Код:
var doc = app.activeDocument;
mSel = app.selection[0];
mStart = mSel.insertionPoints[0]//.index
mEnd1 = mSel.paragraphs[0].insertionPoints[-1]//.index //конец абзаца
mString1 = mSel.insertionPoints.itemByRange(mStart, mEnd1);
mIndex = mString1.contents[0].indexOf(" "); // нашли место пробела

mIndex = mSel.insertionPoints[0].index+mIndex;

var mString2 = app.selection[0].insertionPoints.itemByRange

(

    mStart,

    app.selection[0].parentStory.insertionPoints[mIndex]

//~     app.selection[0].paragraphs[0].insertionPoints[mIndex] // для текста в сноске

)
[/CODE]
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 213
Код:
var mString2 = app.selection[0].parentStory.itemByRange (mStart, app.selection[0].parentStory.insertionPoints[mIndex])
 

hulk1776

Топикстартер
15 лет на форуме
Сообщения
735
Реакции
21
Код:
var mString2 = app.selection[0].parentStory.itemByRange (mStart, app.selection[0].parentStory.insertionPoints[mIndex])
Эта строка, к сожалению, в сноске дает object is invalid.
И наоборот:
Код:
app.selection[0].paragraphs[0].insertionPoints[mIndex] // для текста в сноске
дает ошибку при обработке текста в Story.