calling a function with complex parameters
Dear All, I need to fill a lua table with data, and some values may be tables. How to supply that data from ConTeXt? The most straightforward way is to make user fill a string with lua code of table initiaiser and then use "loadstring". In this case the syntax is laconic, but resilence in case of errors is zero. The other way is to have the user to call series of functions, building the complex structure from ground up by making basic stuctures and adding them to final structure one by one. In this case the passed parameters can be scrutinized for correctness, but multiple calls like "addsmthtosmth", "setsmthinsmth" will make the result uneasy to read, to say nothing of writing. What is considered kosher in ConTeXt? Where can I found examples? Sincerely, Michail PS. data that has to be passed to function will look like (example is not lua): -------------- name = "3D surface"; toolbar = TRUE; // display 3D toolbar tree = TRUE; // display model tree views = ( { name = "DefaultView"; // first view (default) projection = { perspective = TRUE; // Perspective projection aac = 2.5; // View angle }; camera = { // Camera position, see movie15 manual for explaination coo = [ 0, 0, 0 ]; // Center of orbit - where the camera are pointed to c2c = [ 0, 0, 1 ]; // vector from coo directed to camera rot = [40, 0,60 ]; // rotatations of vector from coo directed to camera around Ox, Oy, Oz roo = 50; // distance from coo to camera roll = 0; // camera rotation angle }; bg = [ 1.0, 1.0, 1.0 ]; // Background color lights = "CAD"; // Lighting scheme nodes = ( ( "xlabel", 1.0, TRUE ), ( "ylabel", 1.0, TRUE ), ("Small box", 1.0, TRUE) ); }, { name = "CrossView"; // view with a crossection projection = { perspective = TRUE; // Perspective projection aac = 2.5; // View angle }; camera = { // Camera position, see movie15 manual for explaination coo = [ 0, 0, 0 ]; // Center of orbit - where the camera are pointed to c2c = [-1,-1, 0 ]; // vector from coo directed to camera roo = 50; // distance from coo to camera roll = 0; // camera rotation angle crossection = { point = [ 0, 0, 0 ]; normal = [ -1, -1, -1 ]; intersection = TRUE; transparent = FALSE; }; bg = [ 1.0, 1.0, 1.0 ]; // Background color lights = "CAD"; // Lighting scheme nodes = ( ( "xlabel", 1.0, TRUE ), ( "ylabel", 1.0, TRUE ), ("Small box", 1.0, TRUE) ); } } --------------
Michail Vidiassov wrote:
Dear All,
I need to fill a lua table with data, and some values may be tables. How to supply that data from ConTeXt? The most straightforward way is to make user fill a string with lua code of table initiaiser and then use "loadstring".
That is probably what I would do. But if that was too error-prone, I would most likely write a small syntax of my own and parse it with lpeg or use an xml-based format. Personally, I find api-based data interfaces clumsy and at least as error prone as syntax-based ones. Best wishes Taco
participants (2)
-
Michail Vidiassov
-
Taco Hoekwater