Skip to content

Commit bc4fd84

Browse files
committed
Initial dynamic objects/lists macros
1 parent 58a1d00 commit bc4fd84

2 files changed

Lines changed: 14 additions & 30 deletions

File tree

MDX2JSON/MDX2JSON.inc.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,15 @@
88
#define R(%property) %request.Content.##Expression(%property)
99
#define Public ((%request.GetCgiEnv("SERVER_PORT") = 80) || (%request.GetCgiEnv("SERVER_PORT") = 443))
1010
#define Private '$$$Public
11+
12+
#; For work with dynamic objects
13+
#define IsNewVersion $S($System.Version.GetMajor()>2015:"1",$System.Version.GetMajor()=2015:$S($System.Version.GetMinor()>=3:"1",1:"0"),1:"0")
14+
#define NewDynObj ##Expression($S($$$IsNewVersion=1:"##class(%Object).%New()",1:"##class(%ZEN.proxyObject).%New()"))
15+
#define NewDynObjList ##Expression($S($$$IsNewVersion=1:"##class(%Array).%New()",1:"##class(%ListOfObjects).%New()"))
16+
#define NewDynDTList ##Expression($S($$$IsNewVersion=1:"##class(%Array).%New()",1:"##class(%ListOfDataTypes).%New()"))
17+
#define Insert(%obj,%element) ##Expression($S($$$IsNewVersion=1:"do %obj.$push(%element)",1:"do %obj.Insert(%element)"))
18+
#define DynObjToJSON(%obj) ##Expression($S($$$IsNewVersion=1:"do %obj.$toJSON()",1:"do %obj.%ToJSON()"))
19+
#define ListToJSON(%obj) ##Expression($S($$$IsNewVersion=1:"do %obj.$toJSON()",1:"do ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(%obj)"))
20+
1121
]]></Routine>
1222
</Export>

MDX2JSON/Tests.cls.xml

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -104,45 +104,19 @@ Moves widgets datasources into Mobile folder</Description>
104104
</Method>
105105

106106
<Method name="DynamicObjects">
107+
<Description>
108+
do ##class(MDX2JSON.Tests).DynamicObjects()</Description>
107109
<ClassMethod>1</ClassMethod>
108110
<Implementation><![CDATA[
109-
#define IsNewVersion $S($System.Version.GetMajor()>2015:"1",$System.Version.GetMajor()=2015:$S($System.Version.GetMinor()>=3:"1",1:"0"),1:"0")
110-
#define NewDynObj ##Expression($S($$$IsNewVersion=1:"##class(%Object).%New()",1:"##class(%ZEN.proxyObject).%New()"))
111-
#define NewDynObjList ##Expression($S($$$IsNewVersion=1:"##class(%Array).%New()",1:"##class(%ListOfObjects).%New()"))
112-
#define NewDynDTList ##Expression($S($$$IsNewVersion=1:"##class(%Array).%New()",1:"##class(%ListOfDataTypes).%New()"))
113-
//#define Insert(%element) ##Expression($S($$$IsNewVersion=1:%element,1:b))
114-
#define InsertWrap(%obj,%element) ##Expression(S($$$IsNewVersion=1:$$$InsertOther(%obj,%element),1:$$$InsertOther(%obj,%element)))
115-
#define isq(%element) ##Expression($S($d(%element)=1:1,1:0))
116-
#define InsertOther(%obj,%element) $S($$$IsNewVersion=1:"do %obj.$push(%element)",1:"do %obj.Insert(%element)")
117-
//#define CallClass(%element) ##Expression(##class(MDX2JSON.Tests).A(%element))
118-
#define q(%element) $S($d(%element)="""":"""",1:"")
119-
#define Insert(%obj,%element) ##Expression($S($$$IsNewVersion=1:"do %obj.$push(%element)",1:"do %obj.Insert(%element)"))
120-
121-
//$$$InsertNew(%element),1:$$$InsertOld(%element)))
122-
#define InsertNew(%element) $push(%element)
123-
#define InsertOld(%element) Insert(%element)
124-
#define DynObjToJSON(%obj) ##Expression($S($$$IsNewVersion=1:"do %obj.$toJSON()",1:"do %obj.%ToJSON()"))
125111
126112
set obj = $$$NewDynObj
127113
set obj.prop = "val"
128114
$$$DynObjToJSON(obj)
129115
130116
set dtList = $$$NewDynDTList
131-
//do objList.$push("a")
132-
//do objList.Insert("a")
133-
//do objList.$$$Insert("a")
117+
s a=1
134118
$$$Insert(dtList,a)
135-
//w $$$CallClass("a")
136-
//w $$$isq("a")
137-
]]></Implementation>
138-
</Method>
139-
140-
<Method name="A">
141-
<ClassMethod>1</ClassMethod>
142-
<FormalSpec>a</FormalSpec>
143-
<Implementation><![CDATA[
144-
set ^test($h)=a
145-
return "ololo"
119+
$$$ListToJSON(dtList)
146120
]]></Implementation>
147121
</Method>
148122
</Class>

0 commit comments

Comments
 (0)