Well in effect the engine I have already scans and converts the code to perl for execution... it's just too slow because my methods are not as advanced as they could be... in all honesty I don't think I as a programmer am worthy of the discovery I am hamfistedly trying to describe and implement.
The system is not a large framework at all, infact the core engine is less than 67KB, with about another 70KB of plugins which includes everything from input validation to database and file i/o, session management, and a whole bunch of other stuff.
As far as I am aware, mason is 477KB just for the core engine, and catalyst 248KB.
To answer the hidden question above, qd is a plugin which provides access to a hash containing GET and POST data.
The source of the qd plugin is a one liner;
$result = $qd->{$data};
Using the rules of this syntax, consider a request something like;
action.pl?action=test&a=b&b=c&c=42
This is a silly example I know, but I can't think of any other way to express the nature of the system.
listing of /actions/test/body.aXML
----------------------------------
<qd><qd><qd>a</qd></qd></qd>
Output : 42
The computation starts with;
0: <qd><qd><qd>a</qd></qd></qd>
the innermost qd tag runs, and in the query we find that $qd->{'a'} = 'b';
the result 'b' is then handed off to the next tag in the expression
1: <qd><qd>b</qd></qd>
once again the plugin qd is called, only this time it is fed the result of the previous call, which was the letter 'b'. If we look up the key 'b' in the query data, we get the letter 'c'.
the structure of the expression causes it to iterate one more time :
2 : <qd>c</qd>
and since in the query c = 42, the result of the expression
<qd><qd><qd>a</qd></qd></qd>
is 42.
The system supports unlimited levels of nesting, using any combination of the existing plugins and is extensible by writing new plugins and either adding them to the core plugins folder, the site local plugins folder, or the action local plugin folder.
lets say you wanted to write a silly plugin to say hello...
listing of "/plugins/sayhello.aXMLpi"
-------------------------------------
$result = "hello $data monks";
now if that plugin is placed in the core plugins folder, any page on any site on the server can use the tag,
<sayhello>perl</sayhello>
and the page will contain the result "hello perl monks".
<sayhello>java</sayhello>
will produce "hello java monks"... etc etc.
if our query data contains a key value pair 'who' => 'PERL'
and we include into the document;
<sayhello><qd>who</qd></sayhello>
we get "hello PERL monks".
You all think I'm barking mad don't you??
|