Lisphp_Environment::sandbox PHP Method

sandbox() public static method

public static sandbox ( )
    public static function sandbox()
    {
        $scope = new Lisphp_Scope();
        $scope['nil'] = null;
        $scope['true'] = $scope['#t'] = $scope['else'] = true;
        $scope['false'] = $scope['#f'] = false;
        $scope['eval'] = new Lisphp_Runtime_Eval();
        $scope['quote'] = new Lisphp_Runtime_Quote();
        $scope['symbol'] = new Lisphp_Runtime_PHPFunction(array('Lisphp_Symbol', 'get'));
        $scope['define'] = new Lisphp_Runtime_Define();
        $scope['setf!'] = new Lisphp_Runtime_Setf();
        $scope['let'] = new Lisphp_Runtime_Let();
        $scope['macro'] = new Lisphp_Runtime_Macro();
        $scope['lambda'] = new Lisphp_Runtime_Lambda();
        $scope['apply'] = new Lisphp_Runtime_Apply();
        $scope['do'] = new Lisphp_Runtime_Do();
        $scope['dict'] = new Lisphp_Runtime_Dict();
        $scope['array'] = new Lisphp_Runtime_Array();
        $scope['list'] = new Lisphp_Runtime_List();
        $scope['car'] = new Lisphp_Runtime_List_Car();
        $scope['cdr'] = new Lisphp_Runtime_List_Cdr();
        $scope['at'] = new Lisphp_Runtime_List_At();
        $scope['set-at!'] = new Lisphp_Runtime_List_SetAt();
        $scope['unset-at!'] = new Lisphp_Runtime_List_UnsetAt();
        $scope['exists-at?'] = new Lisphp_Runtime_List_ExistsAt();
        $scope['count'] = new Lisphp_Runtime_List_Count();
        $scope['map'] = new Lisphp_Runtime_List_Map();
        $scope['filter'] = new Lisphp_Runtime_List_Filter();
        $scope['fold'] = new Lisphp_Runtime_List_Fold();
        $scope['cond'] = new Lisphp_Runtime_List_Cond();
        $scope['=='] = $scope['eq'] = $scope['eq?'] = new Lisphp_Runtime_Predicate_Eq();
        $scope['='] = $scope['equal'] = $scope['equal?'] = new Lisphp_Runtime_Predicate_Equal();
        $scope['!=='] = $scope['/=='] = $scope['not-eq'] = $scope['not-eq?'] = new Lisphp_Runtime_Predicate_NotEq();
        $scope['!='] = $scope['/='] = $scope['not-equal'] = $scope['not-equal?'] = new Lisphp_Runtime_Predicate_NotEqual();
        $scope['<'] = new Lisphp_Runtime_Predicate_LessThan();
        $scope['>'] = new Lisphp_Runtime_Predicate_GreaterThan();
        $scope['<='] = new Lisphp_Runtime_Predicate_LessEqual();
        $scope['>='] = new Lisphp_Runtime_Predicate_GreaterEqual();
        foreach (Lisphp_Runtime_Predicate_Type::getFunctions() as $n => $f) {
            $scope[$n] = $f;
        }
        $scope['isa?'] = $scope['is-a?'] = new Lisphp_Runtime_Predicate_IsA();
        $scope['+'] = new Lisphp_Runtime_Arithmetic_Addition();
        $scope['-'] = new Lisphp_Runtime_Arithmetic_Subtraction();
        $scope['*'] = new Lisphp_Runtime_Arithmetic_Multiplication();
        $scope['/'] = new Lisphp_Runtime_Arithmetic_Division();
        $scope['%'] = $scope['mod'] = new Lisphp_Runtime_Arithmetic_Modulus();
        $scope['string'] = new Lisphp_Runtime_PHPFunction('strval');
        $scope['.'] = $scope['concat'] = new Lisphp_Runtime_String_Concat();
        $scope['string-join'] = new Lisphp_Runtime_String_StringJoin();
        $scope['substring'] = new Lisphp_Runtime_PHPFunction('substr');
        $scope['string-upcase'] = new Lisphp_Runtime_PHPFunction('strtoupper');
        $scope['string-downcase'] = new Lisphp_Runtime_PHPFunction('strtolower');
        $scope['not'] = new Lisphp_Runtime_Logical_Not();
        $scope['and'] = new Lisphp_Runtime_Logical_And();
        $scope['or'] = new Lisphp_Runtime_Logical_Or();
        $scope['if'] = new Lisphp_Runtime_Logical_If();
        $scope['->'] = new Lisphp_Runtime_Object_GetAttribute();
        return $scope;
    }

Usage Example

Exemplo n.º 1
0
 function testSandbox($scope = null)
 {
     if (is_null($scope)) {
         $scope = Lisphp_Environment::sandbox();
     }
     $this->assertType('Lisphp_Scope', $scope);
     $this->assertNull($scope['nil']);
     $this->assertTrue($scope['true']);
     $this->assertFalse($scope['false']);
     $this->assertTrue($scope['#t']);
     $this->assertFalse($scope['#f']);
     $this->assertType('Lisphp_Runtime_Eval', $scope['eval']);
     $this->assertType('Lisphp_Runtime_Quote', $scope['quote']);
     $this->assertType('Lisphp_Runtime_PHPFunction', $scope['symbol']);
     $this->assertEquals(array('Lisphp_Symbol', 'get'), $scope['symbol']->callback);
     $this->assertType('Lisphp_Runtime_Define', $scope['define']);
     $this->assertType('Lisphp_Runtime_Let', $scope['let']);
     $this->assertType('Lisphp_Runtime_Macro', $scope['macro']);
     $this->assertType('Lisphp_Runtime_Lambda', $scope['lambda']);
     $this->assertType('Lisphp_Runtime_Apply', $scope['apply']);
     $this->assertType('Lisphp_Runtime_Do', $scope['do']);
     $this->assertType('Lisphp_Runtime_Dict', $scope['dict']);
     $this->assertType('Lisphp_Runtime_Array', $scope['array']);
     $this->assertType('Lisphp_Runtime_List', $scope['list']);
     $this->assertType('Lisphp_Runtime_List_Car', $scope['car']);
     $this->assertType('Lisphp_Runtime_List_Cdr', $scope['cdr']);
     $this->assertType('Lisphp_Runtime_List_At', $scope['at']);
     $this->assertType('Lisphp_Runtime_List_SetAt', $scope['set-at!']);
     $this->assertType('Lisphp_Runtime_List_UnsetAt', $scope['unset-at!']);
     $this->assertType('Lisphp_Runtime_List_ExistsAt', $scope['exists-at?']);
     $this->assertType('Lisphp_Runtime_List_Count', $scope['count']);
     $this->assertType('Lisphp_Runtime_List_Map', $scope['map']);
     $this->assertType('Lisphp_Runtime_List_Filter', $scope['filter']);
     $this->assertType('Lisphp_Runtime_List_Fold', $scope['fold']);
     $this->assertType('Lisphp_Runtime_Predicate_Eq', $scope['==']);
     $this->assertType('Lisphp_Runtime_Predicate_Eq', $scope['eq']);
     $this->assertType('Lisphp_Runtime_Predicate_Eq', $scope['eq?']);
     $this->assertType('Lisphp_Runtime_Predicate_Equal', $scope['=']);
     $this->assertType('Lisphp_Runtime_Predicate_Equal', $scope['equal']);
     $this->assertType('Lisphp_Runtime_Predicate_Equal', $scope['equal?']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEq', $scope['/==']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEq', $scope['!==']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEq', $scope['not-eq']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEq', $scope['not-eq?']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEqual', $scope['!=']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEqual', $scope['/=']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEqual', $scope['not-equal']);
     $this->assertType('Lisphp_Runtime_Predicate_NotEqual', $scope['not-equal?']);
     foreach (Lisphp_Runtime_Predicate_Type::$types as $type) {
         $this->assertType('Lisphp_Runtime_Predicate_Type', $scope["{$type}?"]);
         $this->assertEquals($type, $scope["{$type}?"]->type);
     }
     $this->assertType('Lisphp_Runtime_Predicate_Type', $scope['nil?']);
     $this->assertEquals('null', $scope['nil?']->type);
     $this->assertType('Lisphp_Runtime_Predicate_IsA', $scope['is-a?']);
     $this->assertType('Lisphp_Runtime_Predicate_IsA', $scope['isa?']);
     $this->assertType('Lisphp_Runtime_Arithmetic_Addition', $scope['+']);
     $this->assertType('Lisphp_Runtime_Arithmetic_Subtraction', $scope['-']);
     $this->assertType('Lisphp_Runtime_Arithmetic_Multiplication', $scope['*']);
     $this->assertType('Lisphp_Runtime_Arithmetic_Division', $scope['/']);
     $this->assertType('Lisphp_Runtime_Arithmetic_Modulus', $scope['%']);
     $this->assertType('Lisphp_Runtime_Arithmetic_Modulus', $scope['mod']);
     $this->assertType('Lisphp_Runtime_PHPFunction', $scope['string']);
     $this->assertEquals('strval', $scope['string']->callback);
     $this->assertType('Lisphp_Runtime_String_Concat', $scope['.']);
     $this->assertType('Lisphp_Runtime_String_Concat', $scope['concat']);
     $this->assertType('Lisphp_Runtime_String_StringJoin', $scope['string-join']);
     $this->assertType('Lisphp_Runtime_PHPFunction', $scope['substring']);
     $this->assertEquals('substr', $scope['substring']->callback);
     $this->assertType('Lisphp_Runtime_PHPFunction', $scope['string-upcase']);
     $this->assertEquals('strtoupper', $scope['string-upcase']->callback);
     $this->assertType('Lisphp_Runtime_PHPFunction', $scope['string-downcase']);
     $this->assertEquals('strtolower', $scope['string-downcase']->callback);
     $this->assertType('Lisphp_Runtime_Logical_Not', $scope['not']);
     $this->assertType('Lisphp_Runtime_Logical_And', $scope['and']);
     $this->assertType('Lisphp_Runtime_Logical_Or', $scope['or']);
     $this->assertType('Lisphp_Runtime_Logical_If', $scope['if']);
     $this->assertType('Lisphp_Runtime_Object_GetAttribute', $scope['->']);
 }
All Usage Examples Of Lisphp_Environment::sandbox
Lisphp_Environment