Block Codification

It should be ["show,default,Looks"]

Yes, I know that. But I'm just saying that the err_try primitive does not work for the err_message primative.

Oh! I know what you mean...

@jens could you add a reporter to get something like err_status?

yeah!

Ok, I've found the solution!


First, copy and import this:

<blocks app="Snap! 7, https://snap.berkeley.edu" version="2"><palette><category name="Block Codification" color="237,28,36,1"/></palette><block-definition s="%&apos;string&apos; as blocks" type="reporter" category="Block Codification"><comment w="127" collapsed="false">Converts the given string (JSON format) to blocks.</comment><header></header><code></code><translations></translations><inputs><input type="%s">["clear,default,Pen"]</input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="string"/><l><option>text</option></l></block></block><script><block s="doReport"><block s="reportJoinWords"><list><l>expecting a text but getting a </l><block s="reportTypeOf"><block var="string"/></block></list></block></block></script></block><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>{}</l><l>[]</l></list></block><block var="string"/></block><script><block s="doReport"><block s="reifyReporter"><script></script><list></list></block></block></script></block><block s="doDeclareVariables"><list><l>list</l><l>blocks</l><l>function</l></list></block><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>list</l><block s="reportTextSplit"><block var="string"/><l><option>json</option></l></block></block></script><list></list></block><block s="reifyScript"><script></script><list></list></block><l></l></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block></block><script><block s="doReport"><l>Invalid JSON</l></block></script></block><block s="doSetVar"><l>blocks</l><block s="reportConcatenatedLists"><block var="BC data"/></block></block><block s="doSetVar"><l>function</l><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>list</option></l></block><block s="reportMap"><block var="function"/><block var="value"/></block><block s="reportIfElse"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="evaluate"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>block</l><l>labels</l><l>inputs</l></list></block><block s="doSetVar"><l>block</l><block s="reportTextSplit"><block var="value"/><l><option>csv</option></l></block></block><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="block"/></block><l><option>number</option></l></block><script><block s="doSetVar"><l>inputs</l><block s="reportCDR"><block var="block"/></block></block><block s="doSetVar"><l>block</l><block s="reportListItem"><l>1</l><block var="block"/></block></block><block s="doSetVar"><l>labels</l><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportAnd"><block s="reportGreaterThan"><block s="reportStringSize"><l></l></block><l>1</l></block><block s="reportEquals"><block s="reportLetter"><l>1</l><l></l></block><l>%</l></block></block></autolambda><list></list></block><block s="reportTextSplit"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="block"/><l><option>csv</option></l></block></block><l> </l></block></block></block></script><script><block s="doSetVar"><l>labels</l><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportAnd"><block s="reportGreaterThan"><block s="reportStringSize"><l></l></block><l>1</l></block><block s="reportEquals"><block s="reportLetter"><l>1</l><l></l></block><l>%</l></block></block></autolambda><list></list></block><block s="reportTextSplit"><block s="reportListItem"><l>1</l><block var="block"/></block><l> </l></block></block></block><block s="doSetVar"><l>block</l><block s="reportListAttribute"><l><option>csv</option></l><block var="block"/></block></block><block s="doSetVar"><l>inputs</l><block s="reportNewList"><list></list></block></block></script></block><block s="doSetVar"><l>block</l><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>2</l><l/></block><block var="block"/></block></autolambda><list></list></block><block var="blocks"/></block></block><block s="doIfElse"><block s="reportEquals"><block var="block"/><l></l></block><script><block s="doStopThis"><l><option>this block</option></l></block></script><script><block s="doSetVar"><l>block</l><block s="reportIfElse"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="block"/></block><block s="reifyReporter"><autolambda><block s="reifyReporter"><autolambda><block s="errorObsolete"></block></autolambda><list></list></block></autolambda><list></list></block></block><block s="reifyReporter"><autolambda><block s="errorObsolete"></block></autolambda><list></list></block><block s="reportListItem"><l>1</l><block var="block"/></block></block></block></script></block><block s="doIfElse"><block s="reportListIsEmpty"><block var="inputs"/></block><script><block s="doReport"><block var="block"/></block></script><script><block s="doDeclareVariables"><list><l>list</l><l>label</l></list></block><block s="doSetVar"><l>list</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>label</l><l>1</l></block><block s="doForEach"><l>item</l><block var="labels"/><script><block s="doAddToList"><l></l><block var="list"/></block><block s="doIf"><block s="reportOr"><block s="reportListContainsItem"><block s="reportNewList"><list><l>%receive</l><l>%inputs</l><l>%send</l><l>%ringparms</l><l>%sum</l><l>%product</l><l>%min</l><l>%max</l><l>%words</l><l>%scriptVars</l><l>%exp</l><l>%lists</l><l>%nums</l></list></block><block var="item"/></block><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block s="reportTextSplit"><block var="item"/><l>%mult</l></block></block><l>1</l></block></block><script><block s="doReplaceInList"><l><option>last</option></l><block var="list"/><block s="reportNewList"><list><block s="reportListItem"><block var="label"/><block var="inputs"/></block></list></block></block><block s="doChangeVar"><l>label</l><l>1</l></block></script></block></script></block><block s="doReport"><block s="reportJoinWords"><block s="reportCONS"><block var="block"/><block var="list"/></block></block></block></script></block></script><list></list></block><list></list></block><block var="value"/></block></block></autolambda><list><l>value</l><l>index</l></list></block></block><block s="doWarp"><script><block s="doReport"><block s="reportJoinWords"><block s="reportMap"><block var="function"/><block var="list"/></block></block></block></script></block></script></block-definition></blocks>

Then to implement it in your project, just do this:

Before I saw this, I did something else. I made it so instead of giving an error, the block reports invalid json, and put this script in my block
image

Ok, but using many is not good, since it takes a delay to convert the blocks. The script I gave you is the best option because it only converts the block once.

okay...

That can easily be improved:

  1. REPORT NOT <<IS ...> OR <...>>
  2. Have one script variable set to BLOCK AS BLOCKS

what?

I can't make a script pic right now because I'm on my phone.

okay...

Actually, I can:

if the string is not valid json, it will give error

That's just a simplification of your IS [] A BLOCK.

It's because I gave him a special block that does not return errors. I also gave him a special script for that.

okay...

Huh?

It's because err_reset will cause err_try to mess up, so it will error instead of running the handler