Skip to main content

Reporters and Booleans

Reporters

Reporters are the rounded corner blocks. They can either return a string or number.

We will add a power block to the Operators category:

The block specification

First, let's add the block to the operators section of the commands array in Specs.as. Notice how we use r instead of a space for the block type.

src/Specs.as
// operators
["%n ^ %n", "r", 8, "^", "", ""],
["%n + %n", "r", 8, "+", "", ""],
["%n - %n", "r", 8, "-", "", ""],

The block implementation

To make a reporter report something, you just have to return from the block's function.

Let's add the block to Primitives.as, but let's do it a different way. For shorter, single line block primitives, instead of writing a function on its own line, you can include it directly in the primTable line. The interp.numarg function is similar to the interp.arg function, but returns a number.

src/primitives/Primitives.as
public function addPrimsTo(primTable:Dictionary):void {
// operators
primTable["^"] = function(b:*):* { return Math.pow(interp.numarg(b, 0), interp.numarg(b, 1)) };

Booleans

Booleans are almost exactly like reporters. Instead of r for the block type, you use b. And in the block's function, you return a boolean. Let's add these blocks:

The block specification

src/Specs.as
// operators
["%n ^ %n", "r", 8, "^", "", ""],
["true", "b", 8, "true" ],
["false", "b", 8, "false" ],

The block implementation

We will implement this block just like before, using the shorter method:

src/primitives/Primitives.as
primTable["true"]			= function(b:*):* { return true };
primTable["false"] = function(b:*):* { return false };

Completed Files

FileDownload
src/Specs.asSpecs.as
src/primitives/Primitives.asPrimitives.as