Last active
April 26, 2021 16:26
-
-
Save kenwebb/fdbd2785991a642dbc16ffb8486362dd to your computer and use it in GitHub Desktop.
Constructive Scripts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Mon Apr 26 2021 12:25:39 GMT-0400 (Eastern Daylight Time)--> | |
<XholonWorkbook> | |
<Notes><![CDATA[ | |
Xholon | |
------ | |
Title: Constructive Scripts | |
Description: | |
Url: http://www.primordion.com/Xholon/gwt/ | |
InternalName: fdbd2785991a642dbc16ffb8486362dd | |
Keywords: | |
My Notes | |
-------- | |
April 26, 2021 | |
React allows nested interleaving of JavaScript and JSX. | |
To what extent can I do this in Xholon? | |
]]></Notes> | |
<_-.XholonClass> | |
<!-- domain objects --> | |
<PhysicalSystem/> | |
<Block/> | |
<Brick/> | |
<!-- quantities --> | |
<Height superClass="Quantity"/> | |
<One/> | |
<Two/> | |
<Three/> | |
<Four/> | |
</_-.XholonClass> | |
<xholonClassDetails> | |
<Block> | |
<port name="height" connector="Height"/> | |
</Block> | |
</xholonClassDetails> | |
<PhysicalSystem> | |
<Block rnames="a,b,c"> | |
<Height>0.1 m</Height> | |
<!-- this works --> | |
<script>this.parent().append('<One roleName="eins"><Two/><Three/></One>')</script> | |
<!-- and this works --> | |
<script><![CDATA[this.parent().append('<One roleName="un"><Two/><Three/><script>this.println("internal script")</script></One>')]]></script> | |
<!-- and this also works --> | |
<script><![CDATA[const str = | |
` | |
<One roleName="uno"> | |
${this.println("TESTING " + this.parent().rnames)} | |
${"<Three/>"} | |
${this.parent().rnames.split(",").reduce((acc, curr) => acc.concat('<Two roleName="' + curr + '"/>'), '')} | |
</One> | |
` | |
this.parent().println(str); | |
this.parent().append(str); | |
]]></script> | |
<!-- and this one-liner works --> | |
<script><![CDATA[this.parent().append(`<One roleName="один">${this.parent().rnames.split(",").reduce((acc, curr) => acc.concat('<Four roleName="' + curr + '"/>'), '')}</One>`)]]></script> | |
</Block> | |
<Brick multiplicity="2"/> | |
</PhysicalSystem> | |
<Blockbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
var a = 123; | |
var b = 456; | |
var c = a * b; | |
if (console) { | |
console.log(c); | |
} | |
//# sourceURL=Blockbehavior.js | |
]]></Blockbehavior> | |
<Heightbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
var myHeight, testing; | |
var beh = { | |
postConfigure: function() { | |
testing = Math.floor(Math.random() * 10); | |
myHeight = this.cnode.parent(); | |
}, | |
act: function() { | |
myHeight.println(this.toString()); | |
}, | |
toString: function() { | |
return "testing:" + testing; | |
} | |
} | |
//# sourceURL=Heightbehavior.js | |
]]></Heightbehavior> | |
<Brickbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
$wnd.xh.Brickbehavior = function Brickbehavior() {} | |
$wnd.xh.Brickbehavior.prototype.postConfigure = function() { | |
this.brick = this.cnode.parent(); | |
this.iam = " red brick"; | |
}; | |
$wnd.xh.Brickbehavior.prototype.act = function() { | |
this.brick.println("I am a" + this.iam); | |
}; | |
//# sourceURL=Brickbehavior.js | |
]]></Brickbehavior> | |
<Brickbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
console.log("I'm another brick behavior"); | |
]]></Brickbehavior> | |
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml, | |
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg"> | |
<g> | |
<title>Block</title> | |
<rect id="PhysicalSystem/Block" fill="#98FB98" height="50" width="50" x="25" y="0"/> | |
<g> | |
<title>Height</title> | |
<rect id="PhysicalSystem/Block/Height" fill="#6AB06A" height="50" width="10" x="80" y="0"/> | |
</g> | |
</g> | |
</svg> | |
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient> | |
</XholonWorkbook> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment