пятница, 30 сентября 2016 г.

#1274. И ещё просто код

По мотивам - http://programmingmindstream.blogspot.ru/2016/09/1273.html

Тут "лямбды" - "везде".

PROGRAM DictionaryByName.ms.script

USES
 ElementsRTTI.ms.dict
;

USES
 GarantMetaModel.ms.dict
;

USES
 CollectElements.ms.dict
;

USES
 Log.ms.dict
;

CollectInAllDictionaries: 
( 
  STRING IN aDictName 
 '%%InjectedBy ' aDictName FindInFile 
 OR ( 'MELINK Stereotype st_ScriptKeywordsPack ;' aDictName FindInFile )
 DUP ? ( Log: ( [ 'Collect Injected: ' aDictName ] strings:Cat ) )
) 
(
  IN aWord
 aWord .Dependencies
 .filter> .IsInjects
 .map> .Target
 if ( aWord .IsScriptKeywordsPack ) then
 begin
  .join> ( aWord .Inherits )
 end // ( aWord .IsScriptKeywordsPack )
) // CollectInAllDictionaries:
 '.ms.model.script.inj' '_InjectedElements' OutCollected

CollectInAllDictionaries: 
( 
  STRING IN aDictName 
 '%%ImplementedBy ' aDictName FindInFile
 AND (
  ( 'MELINK Stereotype st_VCMFormDefinition ;' aDictName FindInFile )
  OR ( 'MELINK Stereotype st_Atom ;' aDictName FindInFile )
  OR ( 'MELINK Stereotype st_Tag ;' aDictName FindInFile )
 ) // AND
 DUP ? ( Log: ( [ 'Collect Implementors: ' aDictName ] strings:Cat ) )
) 
(
  IN aWord
 aWord .Implements
 .filter> ( 
   IN anElement
  RULES 
   ( anElement .IsVCMFormDefinition )
    true
   ( anElement .IsAtom )
    true
   DEFAULT
    false
  ; // RULES   
 ) // .filter>
) // CollectInAllDictionaries:
 '.ms.model.script.impl' '_Implementors' OutCollected


Комментариев нет:

Отправить комментарий