pocketpy/examples/string_formatting.cpp
2023-10-16 17:24:35 -04:00

58 lines
1.6 KiB
C++

#include <iostream>
#include "pocketpy.h"
using namespace pkpy;
int main(){
// Create a virtual machine
VM* vm = new VM();
//prints: Hello, World!
vm->exec("print(\"Hello, {}!\".format(\"World\"))");
//prints: I love Python
vm->exec("print('{} {} {}'.format('I', 'love', 'Python'))");
//prints: I love Python
vm->exec("print('{0} {1} {2}'.format('I', 'love', 'Python'))");
//prints: Python love I
vm->exec("print('{2} {1} {0}'.format('I', 'love', 'Python'))");
//prints: pythonlovepython
vm->exec("print('{0}{1}{0}'.format('python', 'love'))");
//prints
vm->exec("print('{k}={v}'.format(k='key', v='value'))");
vm->exec("print('{k}={k}'.format(k='key'))");
vm->exec("print('{0}={1}'.format('{0}', '{1}'))");
vm->exec("print('{{{0}}}'.format(1))");
vm->exec("print('{0}{1}{1}'.format(1, 2, 3))");
vm->exec("try:");
vm->exec("@indent print('{0}={1}}'.format(1, 2)')");
vm->exec(" exit(1)");
vm->exec("except ValueError:");
vm->exec(" print('ValueError')");
vm->exec("print('{{{}xxx{}x}}'.format(1, 2))");
vm->exec("print('{{abc}}'.format())");
// assert "{{{}xxx{}x}}".format(1, 2) == "{1xxx2x}"
// assert "{{abc}}".format() == "{abc}"
// cjson loads and dumps!
// vm->exec("import cjson");
// vm->exec("dict = {'a': 1, 'b': [1, 3, 'Hello World'], 'c': {'a': 4}, 'd': None, 'd': True }");
// vm->exec("json_str = cjson.dumps(dict)");
// vm->exec("print(json_str)");
// vm->exec("loaded_dict = cjson.loads(json_str)");
// vm->exec("print(loaded_dict)");
delete vm;
return 0;
}