##{py## def block_init(data,value,**kw): data.update( { 'booltrue' : 1==1, 'boolfalse' : 1==2, 'zero' : 0, 'nonzero' : -1, 'string' : 'this is a string', 'emptystring' : '', 'list' : [1,2,3], 'emptylist' : [], 'object' : {'field':'field-value'}, } ) #### ##{js## function block_init(data) { var test = ( { 'booltrue' : 1==1, 'boolfalse' : 1==2, 'zero' : 0, 'nonzero' : -1, 'string' : 'this is a string', 'emptystring' : '', 'list' : [1,2,3], 'emptylist' : [], 'object' : {'field':'field-value'}, } ); for(var i in test) { data[i]=test[i]; } } #### ##>init## Here, 'this is a string' without quotes is shown: ##string## Just two quotes: '##nonexistent##' Object field: ##object.field## Non-existig object field: ##notexistent.field## If true: ##@booltrue## shown boolean true #### ##@nonzero## shown non-zero #### ##@list## shown non-empty list #### ##@string## shown non-empty string #### ##@boolfalse## NOT SHOWN (boolfalse) #### ##@zero## NOT SHOWN (zero) #### ##@emptylist## NOT SHOWN (emptylist) #### ##@emptystring## NOT SHOWN (emptystring) #### ##@nonexistent## NOT SHOWN (nonexistent) #### If false: ##!booltrue## NOT SHOWN (booltrue) #### ##!nonzero## NOT SHOW (nonzero) #### ##!list## NOT SHOWN (list) #### ##!string## NOT SHOWN (string) #### ##!boolfalse## shown boolean false #### ##!zero## shown zero #### ##!emptylist## shown empty list #### ##!emptystring## shown empty string #### ##!nonexistent## shown non-existent #### Choice: ##apple?string## NOT SHOWN ##nut?## NOT SHOWN ##?## NOT SHOWN ##*## shown #### ##apple?emptystring## NOT SHOWN ##nut?## NOT SHOWN ##?## shown ##*## NOT SHOWN #### ##apple?string## NOT SHOWN ##nut?## NOT SHOWN ##?## NOT SHOWN ##this is a string?## shown ##*## NOT SHOWN #### ##apple?nonzero## NOT SHOWN ##nut?## NOT SHOWN ##?## NOT SHOWN ##-1?## shown ##*## NOT SHOWN #### Iteration: ##i:list## ##i## #### ##i:emptylist## NOT SHOWN #### Block: ##value=block## shown: ##value## #### ##i:list## ##i>block## #### ##string>block## ##nonexistent>block## ##>block## ##=repeat## shown #### ##>repeat## Host language block: ##{py## def block_example(data,value,output,getvalue,compare): data['changed']="changed in block" data['example_value']=value output(value) output(getvalue(data,value)) output('equal' if compare(value,1) else 'different') #### ##{js## function block_example(data,value,output,getvalue,compare) { data.changed="changed in block"; data.example_value=value; output(value); output(getvalue(data,value)); output(compare(value,1)?'equal':'different') } #### ##string>example## ##{py## def block_uppercase(data,value,output,getvalue,compare): output(value.upper()); #### ##{js## function block_uppercase(data,value,output) { output(value.toUpperCase()); } #### And now show in all caps: ##string>uppercase## False beard: ###string## True beard ##\####string##