Index: trunk/doc/developer/lihata_format/render/common.awk =================================================================== --- trunk/doc/developer/lihata_format/render/common.awk (revision 16855) +++ trunk/doc/developer/lihata_format/render/common.awk (revision 16856) @@ -25,12 +25,14 @@ dupd_prefix = DUPSAV[1] } -function gen_sub(root, level, v, n, N, node, dst_children, DUPSAV) +function gen_sub(root, level, parent, v, n, N, node, dst_children, DUPSAV) { if (!(root in NAME)) { print "Error: path not found: " root > "/dev/stderr" return } + if (parent == "") + parent = root v = children(N, root "/children") for(n = 1; n <= v; n++) { node = N[n] @@ -39,20 +41,20 @@ # print "SY:" node " " DATA[node] "^^^" sy_is_recursive(node) > "/dev/stderr" dup_begin(DUPSAV) if (NAME[node] ~ "@dup") { - tbl_entry(DATA[node], level, root) + tbl_entry(DATA[node], level, parent) gen_sub(DATA[node], level+1) } else - tbl_entry_link(node, DATA[node], level, root) + tbl_entry_link(node, DATA[node], level, parent) dup_end(DUPSAV) } else if ((node "/children") in NAME) { - tbl_entry(node, level, root) + tbl_entry(node, level, parent) if (TYPE[node "/children"] == "symlink") { dup_begin(DUPSAV) dst_children = DATA[node "/children"] sub("/children$", "", dst_children) - gen_sub(dst_children, level+1) + gen_sub(dst_children, level+1, node) dup_end(DUPSAV) } else { @@ -60,7 +62,7 @@ } } else if (TYPE[node] == "hash") - tbl_entry(node, level, root) + tbl_entry(node, level, parent) 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 (revision 16855) +++ trunk/doc/developer/lihata_format/render/dot.awk (revision 16856) @@ -12,6 +12,7 @@ gsub("\"", "\\\"", dsc) tip=" tooltip=" q dsc q url=" URL=" q "tree.html#" node q + if (dupd_prefix != "") { node = dupd_prefix node DUPD[node] ++ @@ -40,6 +41,20 @@ sub("^.*/", "", dr) url=" URL=" q dr ".svg" q tip=" tooltip=" q dsc 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 nl q url tip " shape=plaintext]" >fn if (parent != "") print " " q parent q " -> " q node q > fn