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

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

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

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

Вот в %Dictionary они и лежат... Там много всяких классов, часть информации читается из одних, другая из других...
...
Рейтинг: 0 / 0
как пропарсить класс?
    #36263871
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то фигово цитату твою отредактировал... Но вроде читабельно.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
как пропарсить класс?
    #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
как пропарсить класс?
    #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
как пропарсить класс?
    #36264047
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007но этот %Dictionary.ClassDefinition откуда то берет все описание? значит оно лежит в глобалях?

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

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

Так там целая коллекция этих параметров! Смотря что ты хочешь про параметр узнать... Тебе же изначально нужно было знать есть там "такой" или нет по его идентификатору...
...
Рейтинг: 0 / 0
как пропарсить класс?
    #36264132
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел следующее:
описание Xdata хранится в
^oddDEF("имяКласса","x","Contents","21"), вот оно то мне как раз и нужно было
...
Рейтинг: 0 / 0
как пропарсить класс?
    #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
как пропарсить класс?
    #36264237
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorковырять хранение не самый лучший способ, подходит разве что для разовых дел

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

спасибо за подсказку, оно подойдет
...
Рейтинг: 0 / 0
как пропарсить класс?
    #36264469
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если есть такое определение:
Код: plaintext
1.
persistent class %Dictionary.CompiledClass 
relationship Parameters As %Dictionary.CompiledParameter  [Inverse = parent; Cardinality = children;] 
как можно сразу узнать есть ли у конкретного класса параметр RESOURCE, без организации цикла по всем children?
...
Рейтинг: 0 / 0
как пропарсить класс?
    #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
12 сообщений из 12, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / как пропарсить класс?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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