update lua doc to html generator

This commit is contained in:
Robin Gareus 2016-04-06 17:01:53 +02:00
parent 165ae0863a
commit 22b1a0b6ae
2 changed files with 49 additions and 2 deletions

View File

@ -125,6 +125,15 @@ function luafn2class ($lua) {
return substr ($lua, 0, strrpos ($lua, ':'));
}
function luafn2name ($lua) {
$fn = strrpos ($lua, ':');
if ($fn !== 0 && strlen($lua) > $fn + 1) {
return substr ($lua, $fn + 1);
}
my_die ('invalid class prefix: '. $name);
}
function checkclass ($b) {
global $classlist;
if (!isset ($classlist[luafn2class ($b['lua'])])) {
@ -249,6 +258,26 @@ foreach ($doc as $b) {
'ret' => arg2lua (datatype ($b['ldec']))
);
break;
case "Static C Function":
checkclass ($b);
if (strpos ($b['lua'], 'ARDOUR:DataType:') === 0) {
# special case ARDOUR:DataType convenience c'tor
$args = array ();
$ret = array (luafn2class ($b['lua']) => 0);
$canon = 'ARDOUR::LuaAPI::datatype_ctor_'.strtolower (luafn2name ($b['lua'])).'(lua_State*)';
} else {
my_die ('unhandled Static C: ' . print_r($b, true));
}
$classlist[luafn2class ($b['lua'])]['func'][] = array (
'bind' => $b,
'name' => $b['lua'],
'args' => $args,
'ret' => $ret,
'ref' => false,
'ext' => false,
'cand' => $canon
);
break;
case "C Function":
# we required C functions to be in a class namespace
case "Ext C Function":
@ -257,9 +286,8 @@ foreach ($doc as $b) {
$ret = array ('...' => 0);
$ns = luafn2class ($b['lua']);
$cls = $classlist[$ns];
## std::Vector std::List types
if (preg_match ('/.*<([^>]*)[ ]*>/', $cls['ldec'], $templ)) {
// XXX -> move to C-source
# std::vector, std::list types
switch (stripclass($ns, $b['lua'])) {
case 'add':
#$args = array (array ('LuaTable {'.$templ[1].'}' => 0));
@ -278,6 +306,7 @@ foreach ($doc as $b) {
break;
}
} else if (strpos ($cls['type'], ' Array') !== false) {
# catches C:FloatArray, C:IntArray
$templ = preg_replace ('/[&*]*$/', '', $cls['ldec']);
switch (stripclass($ns, $b['lua'])) {
case 'array':

18
tools/update_luadoc.sh Executable file
View File

@ -0,0 +1,18 @@
#!/bin/sh
## ardour needs to be configured with --luadoc and build should be up-to date.
cd `dirname $0`
set -e
test -f ../libs/ardour/ardour/ardour.h
test -e ../gtk2_ardour/arluadoc
test -e ../build/gtk2_ardour/luadoc
# generate ../doc/luadoc.json.gz
../gtk2_ardour/arluadoc
# generate ../doc/ardourapi.json.gz
./doxy2json/ardourdoc.sh
php fmt-luadoc.php > /tmp/luadoc.html
# ^^ needs manual copy to ardour-manual
ls -l /tmp/luadoc.html