Index: server/teapot_index ================================================================== --- server/teapot_index +++ server/teapot_index @@ -96,28 +96,10 @@ } return [array get pkginfo] } -proc generate_tpm {entlist} { - set pkgs [list] - foreach part $entlist { - set pkginfo [list] - foreach enttype $part { - set pkg [lindex $enttype 0] - lappend pkginfo $pkg - } - lappend pkgs $pkginfo - } - - set ret {} - - return $ret -} - proc complete_entpath {type entinfo_arrlist} { array set entinfo $entinfo_arrlist set req_fields $::entity_definition($type) @@ -131,21 +113,52 @@ lappend retval $req_field $entinfo($req_field) } return $retval } + +proc generate_tpm {entlist} { + set ents [list] + foreach part $entlist { + set entinfo [list] + + foreach enttype $part { + set type [lindex $enttype 0] + set ent [lindex $enttype 1] + + if {$type == "entity"} { + # Only include the entity type if it is complete... + set work [complete_entpath $ent [join $part]] + + if {$work == ""} { + continue + } + } + + lappend entinfo $ent + } + + lappend ents $entinfo + } + + set ret {} + + return $ret +} proc generate_table {fields numitems} { set ret "" foreach field $fields { append ret " \n" unset -nocomplain entinfo foreach enttype [lrange $field 0 [expr $numitems - 1]] { - set item [lindex $enttype 0] - set type [lindex $enttype 1] + set type [lindex $enttype 0] + set item [lindex $enttype 1] set entinfo($type) $item } if {[info exists entinfo(entity)]} { @@ -155,12 +168,12 @@ } set entpath_parts [list] foreach enttype [lrange $field 0 [expr $numitems - 1]] { - set item [lindex $enttype 0] - set type [lindex $enttype 1] + set type [lindex $enttype 0] + set item [lindex $enttype 1] if {$type != "entity"} { lappend entpath_parts $type $item } @@ -192,11 +205,11 @@ set altindexfile [file join $dstdir entity index.html] set pkglist [list] foreach ent [array names pkginfo] { set pkg [lindex $ent 0] - set addent [list [list $pkg name]] + set addent [list [list name $pkg]] if {[lsearch -exact $pkglist $addent] != -1} { continue } lappend pkglist $addent @@ -239,11 +252,11 @@ foreach ent [array names pkginfo] { set pkg [lindex $ent 0] set ver [lindex $ent 1] set arch [lindex $ent 2] - lappend pkglist [list [list package entity] [list $pkg name] [list $ver ver] [list $arch arch] [list 0 unknown]] + lappend pkglist [list [list entity package] [list name $pkg] [list ver $ver] [list arch $arch] [list unknown 0]] } set pkglist [lsort -dictionary $pkglist] set fd [open $indexfile w] @@ -391,13 +404,13 @@ set field [lindex $req_fields $idx] set value [lindex $pkgent $idx] set currpkginfo($field) $value } - set currpkgdata [list [list $entity_type entity]] + set currpkgdata [list [list entity $entity_type]] foreach dispfield $dispfields { - lappend currpkgdata [list $currpkginfo($dispfield) $dispfield] + lappend currpkgdata [list $dispfield $currpkginfo($dispfield)] } if {[lsearch -exact $pkglist $currpkgdata] != -1} { continue }