INTERFACE FUNCTION MakeConstants:
STRING IN aName
^ IN aLambda
aName nil MakeParam: (
IN aMade
aMade -> Stereotype := st_Constants
aMade aLambda DO
)
>>> Result
; // MakeConstants:
INTERFACE FUNCTION MakeConstant:
STRING IN aName
PRINTABLE IN aValue
^ IN aLambda
aName nil MakeParam: (
IN aMade
aMade -> Class := class_Attribute
aMade -> 'extprop:pas:Value' := aValue
aMade aLambda DO
)
>>> Result
; // MakeConstant:
elem_iterator ConstantsEx
Cached:
(
Self .Constants
RULES
( Self .IsTypedef )
begin
VAR l_OtherEnum
Self .MainAncestor >>> l_OtherEnum
RULES
( l_OtherEnum .IsEnum )
RULES
( Self .Name l_OtherEnum .Name == )
RULES
( l_OtherEnum .Attributes .CountIt > 0 )
begin
VAR l_ConstantsName
[ Self .Name '_' l_OtherEnum .Name '_' 'Constants' ] strings:Cat >>> l_ConstantsName
.join>
[
l_ConstantsName MakeConstants: (
IN aConstants
aConstants -> %SUM := ( [ 'Алиасы для значений ' l_OtherEnum .Parent .Name '.' l_OtherEnum .Name ] strings:Cat )
aConstants -> Visibility := PublicAccess
aConstants -> Attributes := [
l_OtherEnum .Attributes .for> (
IN anItem
anItem .Name 'XXX' MakeConstant: (
IN aConstant
) // MakeConstant:
) // l_OtherEnum .Attributes .for>
] // aConstants -> Attributes
) // MakeConstants:
] // .join>
end // ( l_OtherEnum .Attributes .CountIt > 0 )
; // RULES
; // RULES
; // RULES
end // ( Self .IsTypedef )
; // RULES
)
>>> Result
; // ConstantsEx
Заметки о тестировании, программировании и прочий "поток сознания", который жалко писать "в стол"
четверг, 7 апреля 2016 г.
#1218. Скрипты. Правила. Итераторы. Лямбды. Списки. Добавление элементов. Продолжение темы
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий