Index: trunk/doc/developer/lihata_format/render/common.awk =================================================================== --- trunk/doc/developer/lihata_format/render/common.awk (nonexistent) +++ trunk/doc/developer/lihata_format/render/common.awk (revision 16854) @@ -0,0 +1,56 @@ +function get_name(node, ty, level) +{ + if (node "/name" in DATA) + nm = DATA[node "/name"] + else + nm = qstrip(NAME[node]) + if (ty != "") + nm = ty ":" nm + while(level > 0) { + nm = " " nm + level-- + } + return nm +} + +function gen_sub(root, level, v, n, N, node, dst_children, dupsav) +{ + if (!(root in NAME)) { + print "Error: path not found: " root > "/dev/stderr" + return + } + v = children(N, root "/children") + for(n = 1; n <= v; n++) { + node = N[n] + if (TYPE[node] == "symlink") { + # normal node symlink: generate a link +# print "SY:" node " " DATA[node] "^^^" sy_is_recursive(node) > "/dev/stderr" + if (NAME[node] ~ "@dup") { + dupsav = dupd_prefix + if (dupsav == "") + dupd_prefix = "dup" ++uniq_node_name "_" + tbl_entry(DATA[node], level, root) + gen_sub(DATA[node], level+1) + if (dupsav == "") + dupd_prefix = "" + } + else + tbl_entry_link(node, DATA[node], level, root) + } + else if ((node "/children") in NAME) { + tbl_entry(node, level, root) + if (TYPE[node "/children"] == "symlink") { + dst_children = DATA[node "/children"] + sub("/children$", "", dst_children) + gen_sub(dst_children, level+1) + } + else { + gen_sub(node, level+1) + } + } + else if (TYPE[node] == "hash") + tbl_entry(node, level, root) + else + print "Unhandled child (unknown type): " node > "/dev/stderr" + } +} Index: trunk/doc/developer/lihata_format/render/dot.awk =================================================================== --- trunk/doc/developer/lihata_format/render/dot.awk (nonexistent) +++ trunk/doc/developer/lihata_format/render/dot.awk (revision 16854) @@ -0,0 +1,76 @@ +BEGIN { + nl = "\\n" +} + +function tbl_entry(node, level, parent ,nm,vt,dsc,ty,vr, url, tip,duppar) +{ + ty = DATA[node "/type"] + nm = get_name(node, ty, 0) + vt = DATA[node "/valtype"] + vr = DATA[node "/ver"] + dsc = qstrip(DATA[node "/desc"]) + gsub("\"", "\\\"", dsc) + tip=" tooltip=" q dsc q + url=" URL=" q "tree.html#" node q + if (dupd_prefix != "") { + node = dupd_prefix node + DUPD[node] ++ + + if (parent != "") { + duppar = dupd_prefix parent + if (duppar in DUPD) + parent = duppar + } + } + + print " " q node q " [label=" q nm nl vt nl vr q url tip "]" >fn + if (parent != "") + print " " q parent q " -> " q node q > fn +} + +function tbl_entry_link(node, dst, level, parent ,nm,vt,dsc,ty,vr,contid,url,tip,dr) +{ + ty = DATA[node "/type"] + nm = get_name(node, ty, 0) + vt = DATA[node "/valtype"] + vr = DATA[node "/ver"] + dsc = qstrip(DATA[node "/desc"]) + gsub("\"", "\\\"", dsc) + dr = dst + sub("^.*/", "", dr) + url=" URL=" q dr ".svg" q + tip=" tooltip=" q dsc q + print " " q node q " [label=" q nm " ->" nl vt nl vr nl q url tip " shape=plaintext]" >fn + if (parent != "") + print " " q parent q " -> " q node q > fn +} + +function gen_graph(rpath, v, n, N, name) +{ + name = get_name(rpath, DATA[rpath "/type"]) + fn=name + sub(".*[:/]", "", fn) + gsub("[*]", "", fn) + fn = "../" fn ".dot" + + print "digraph " q name q " {" > fn + tbl_entry(rpath, 0) + gen_sub(rpath, 1) + print "}" > fn + close(fn) +} + +function gen_graphs(rpath, v, n, N, name) +{ + v = children(N, rpath) + for(n = 1; n <= v; n++) { + if (N[n] "/hide" in NAME) + continue + gen_graph(N[n]) + } +} + +END { + gen_graphs("/lht_tree_doc/roots") + gen_graphs("/lht_tree_doc/comm") +} Index: trunk/doc/developer/lihata_format/render/html.awk =================================================================== --- trunk/doc/developer/lihata_format/render/html.awk (revision 16853) +++ trunk/doc/developer/lihata_format/render/html.awk (revision 16854) @@ -13,21 +13,6 @@ print " type:name value ver description" } -function get_name(node, ty, level) -{ - if (node "/name" in DATA) - nm = DATA[node "/name"] - else - nm = qstrip(NAME[node]) - if (ty != "") - nm = ty ":" nm - while(level > 0) { - nm = " " nm - level-- - } - return nm -} - function get_valtype(node, vt) { vt = DATA[node "/valtype"] @@ -38,7 +23,7 @@ return vt } -function tbl_entry(node, level ,nm,vt,dsc,ty,vr) +function tbl_entry(node, level, parent ,nm,vt,dsc,ty,vr) { if (!(node in NAME)) { print "Error: path not found: " node > "/dev/stderr" @@ -53,7 +38,7 @@ print " " nm " " vt " " vr " " dsc } -function tbl_entry_link(node, dst, level ,nm,vt,dsc,ty,vr) +function tbl_entry_link(node, dst, level, parent ,nm,vt,dsc,ty,vr) { if (!(node in NAME)) { print "Error: path not found: " node > "/dev/stderr" @@ -73,43 +58,6 @@ print " " nm " " vt " " vr " " dsc " -> " } -function gen_sub(root, level, v, n, N, node, dst_children) -{ - if (!(root in NAME)) { - print "Error: path not found: " root > "/dev/stderr" - return - } - v = children(N, root "/children") - for(n = 1; n <= v; n++) { - node = N[n] - if (TYPE[node] == "symlink") { - # normal node symlink: generate a link -# print "SY:" node " " DATA[node] "^^^" sy_is_recursive(node) > "/dev/stderr" - if (NAME[node] ~ "@dup") { - tbl_entry(DATA[node], level) - gen_sub(DATA[node], level+1) - } - else - tbl_entry_link(node, DATA[node], level) - } - else if ((node "/children") in NAME) { - tbl_entry(node, level) - if (TYPE[node "/children"] == "symlink") { - dst_children = DATA[node "/children"] - sub("/children$", "", dst_children) - gen_sub(dst_children, level+1) - } - else { - gen_sub(node, level+1) - } - } - else if (TYPE[node] == "hash") - tbl_entry(node, level) - else - print "Unhandled child (unknown type): " node > "/dev/stderr" - } -} - function gen_main(path, v, n, N) { print "

" DATA[path "/type"] ":" NAME[path] "

" Index: trunk/doc/developer/lihata_format/render/render.sh =================================================================== --- trunk/doc/developer/lihata_format/render/render.sh (revision 16853) +++ trunk/doc/developer/lihata_format/render/render.sh (revision 16854) @@ -3,4 +3,4 @@ for n in ../*.lht do lhtflat < $n -done | tee Flat | awk -F "[\t]" -f lht.awk -f $1.awk +done | tee Flat | awk -F "[\t]" -f lht.awk -f common.awk -f $1.awk