Очередная мистическая загадка

Статус
Закрыто для дальнейших ответов.

Сергий Задонский

Участник
Топикстартер
Сообщения
251
Реакции
4
Рискуя вызвать раздражение благочестивого сообщества и уважаемого модератора, прошу разъяснить очередную загадку, с которой я столкнулся, продолжая работать над словарем для автоматизации расстановки ударений. Итак, для примера, набираем слово "пример" любым шрифтом, у меня School Plain, выделяем букву "и" и присваиваем ей другой шрифт, у меня "Minion Pro Regular". Запускаем скрипт:
Код:
app.findGrepPreferences = NothingEnum.NOTHING;
app.findGrepPreferences.appliedFont = "Minion Pro\tRegular";
app.findGrepPreferences.findWhat = ".";
myLetter = app.findGrep();
alert(myLetter);
Алерт исправно выдает "object Character" , но в окошке "Data browser" ESTK объект myLetter имеет только одно свойство - length. И если я пробую получить свойство "contexts" (alert(myLetter.contexts)) , алерт выдает "undefined". Почему? Ведь в объектной модели InDesign объект Character имеет аж 322 свойства и среди них нужное мне "contexts". И если я с тем же самым "прИмером" запускаю скрипт Михаила Иванюшина: "Сбор информации о свойствах выделенного объекта" , он исправно выдает мне все свойства, в том числе и нужное мне: "125. свойство: contents = и" . Why!? 'shok2'
 
contents
объект myLetter имеет только одно свойство - length.
Потому что findGrep() формирует массив и присваивает его переменной myLetter. И чтобы получить содержимое найденного, нужно сначала обратиться к элементу массива:
Код:
var myCurrentLetter = myLetter[0]; //Первый элемент массива, первый найденный [Object Character]
А после этого прочитать содержимое этого элемента:
Код:
var curLetter = myCurrentLetter.contents;
Или в одну строку:
Код:
var curLetter = myLetter[0].contents;

Не по теме:
раздражение модератора
В этом разделе модерация ведётся без раздражения)). Но темам впредь давайте более информативные названия (пп. 5.4 и 8).

 
Это опечатка. В скрипте я писал без ошибки :)
Потому что findGrep() формирует массив и присваивает его переменной myLetter. И чтобы получить содержимое найденного, нужно сначала обратиться к элементу массива:
Код:
var myCurrentLetter = myLetter[0]; //Первый элемент массива, первый найденный [Object Character]
А после этого прочитать содержимое этого элемента:
Код:
var curLetter = myCurrentLetter.contents;
Или в одну строку:
Код:
var curLetter = myLetter[0].contents;
Уфф! Слава Богу! Можно не стреляться ;)

Не по теме:

В этом разделе модерация ведётся без раздражения)). Но темам впредь давайте более информативные названия (пп. 5.4 и 8).

Я постараюсь (если получится;))
 

Не по теме:

В этом разделе модерация ведётся без раздражения)). Но темам впредь давайте более информативные названия (пп. 5.4 и 8).


Не по теме:
Уважаемый Eugenyus, если можно еще один вопрос не по теме от чайника. Чем отличается поиск GREP от RegExp и в каких случаях какой нужно использовать?
 
если можно еще один вопрос не по теме от чайника
Нельзя.:) Создавайте новую тему в соответствующем разделе, но лучше сначала поищите по сети информацию, которой на эту тему более чем достаточно. А эту тему закрываю.
 
Статус
Закрыто для дальнейших ответов.