Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / как пропарсить класс? / 12 сообщений из 12, страница 1 из 1
21.10.2009, 11:51
    #36263819
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
Всем привет!
Сейчас есть некое приложение, написанное на ZEN. В своем приложении полным ходом использую праметр resourse , определяю его и как параметр страницы и как параметр у некоторых компонентов. Сейчас накопилось много всяких страниц и много всяких ресурсов.
Хочу сделать следующее:
написать код который пробежит по всем моим классам и соберет в кучу все ресурсы которые я указал, ну а дальше уже разберусь что с ними делать, главное не пропустить ни одного ресурса.

подскажите в какую сторону копать? где лежитат описания классов?
...
Рейтинг: 0 / 0
21.10.2009, 12:07
    #36263869
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
Ymka2007подскажите в какую сторону копать?

Наверное в сторону persistent class %Dictionary.ClassDefinition , там есть свойство Parameters

[quot Ymka2007]где лежитат описания классов?

Вот в %Dictionary они и лежат... Там много всяких классов, часть информации читается из одних, другая из других...
...
Рейтинг: 0 / 0
21.10.2009, 12:08
    #36263871
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
Что-то фигово цитату твою отредактировал... Но вроде читабельно.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
21.10.2009, 12:15
    #36263894
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
У меня есть примерчик как собрать информацию по индексам. Думаю аналогично как-то будет и по параметрам...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
...
 s ocls=##class(%Dictionary.ClassDefinition).%OpenId(ClsName)
...
 s n=ocls.Indices.Count()
 q:n= 0 
 for i= 1 : 1 :n {
	 d IND
 }
...
IND ; Очередной индекс
...
 s nam=ocls.Indices.GetAt(i).Name
 s val=ocls.Indices.GetAt(i).Description 
...
 q
...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
21.10.2009, 12:17
    #36263902
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
krvsaYmka2007подскажите в какую сторону копать?

Наверное в сторону persistent class %Dictionary.ClassDefinition , там есть свойство Parameters

[quot Ymka2007]где лежитат описания классов?

Вот в %Dictionary они и лежат... Там много всяких классов, часть информации читается из одних, другая из других...
но этот %Dictionary.ClassDefinition откуда то берет все описание? значит оно лежит в глобалях?
Parameter RESOURCE относящийся к странице я допустим вытащу, а остальные как? вот эти например:
Код: plaintext
1.
2.
3.
4.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<button id="btnNew" caption="Новая запись" resource="WEB_SPR_FOSave">
}
...
Рейтинг: 0 / 0
21.10.2009, 12:59
    #36264047
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
Ymka2007но этот %Dictionary.ClassDefinition откуда то берет все описание? значит оно лежит в глобалях?

В конечном итоге все в глобалах и хранится... Правда некая часть может быть и в файлах... Но это не наш случай.

Ymka2007Parameter RESOURCE относящийся к странице я допустим вытащу, а остальные как?

Так там целая коллекция этих параметров! Смотря что ты хочешь про параметр узнать... Тебе же изначально нужно было знать есть там "такой" или нет по его идентификатору...
...
Рейтинг: 0 / 0
21.10.2009, 13:25
    #36264132
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
нашел следующее:
описание Xdata хранится в
^oddDEF("имяКласса","x","Contents","21"), вот оно то мне как раз и нужно было
...
Рейтинг: 0 / 0
21.10.2009, 13:43
    #36264209
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
а чем тебе не понравилось взять в %Dictionary.ClassDefinition содержимое XData,
relationship XDatas as %Dictionary.XDataDefinition [ Inverse = parent,Cardinality = children ];
XData

просто ковырять хранение не самый лучший способ, подходит разве что для разовых дел

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
21.10.2009, 13:51
    #36264237
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
DAiMorковырять хранение не самый лучший способ, подходит разве что для разовых дел

Во, во. А потом перенусут в другое место и прости, прощай...
...
Рейтинг: 0 / 0
21.10.2009, 14:21
    #36264365
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
DAiMorа чем тебе не понравилось взять в %Dictionary.ClassDefinition содержимое XData,
relationship XDatas as %Dictionary.XDataDefinition [ Inverse = parent,Cardinality = children ];
XData

спасибо за подсказку, оно подойдет
...
Рейтинг: 0 / 0
21.10.2009, 14:45
    #36264469
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
если есть такое определение:
Код: plaintext
1.
persistent class %Dictionary.CompiledClass 
relationship Parameters As %Dictionary.CompiledParameter  [Inverse = parent; Cardinality = children;] 
как можно сразу узнать есть ли у конкретного класса параметр RESOURCE, без организации цикла по всем children?
...
Рейтинг: 0 / 0
21.10.2009, 14:51
    #36264502
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как пропарсить класс?
Ymka2007как можно сразу узнать есть ли у конкретного класса параметр RESOURCE, без организации цикла по всем children?

У меня есть пример со свойствами... С параметрами наверняка аналогично.

Код: plaintext
1.
2.
3.
4.
5.
6.
IFLD(Fld,Pos,Typ) ; Очередное свойство
...
 s id=ClsName_"||"_Fld
 s o=##class(%Dictionary.CompiledProperty).%OpenId(id)
 s val=o.Description
...
 q
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / как пропарсить класс? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]