#!/bin/sh # Copyright for URLibService (c) 1995 - 2002, # by Gerald Banon - INPE. All rights reserved. # Version 2.1 # metadataArray2ASCII \ exec /usr/local/bin/tclsh "$0" ${1+"$@"} #
# metadataArray2ASCII converts metadataArray (of URLibService) into an # ASCII table package provide dpi.inpe.br/banon/2002/08.01.15.28 2.1 namespace eval dpi.inpe.br/banon/2002/08.01.15.28 { # > # ---------------------------------------------------------------------- # metadataArray2ASCII proc metadataArray2ASCII {pathList {filter 0}} { global orderingTable global inverseTable # Create fieldNameArray set referenceTypeList [array names orderingTable *,referencetype] regsub -all {,referencetype} $referenceTypeList {} referenceTypeList foreach referenceType $referenceTypeList { set fieldNameList [lsort -command FieldCompare \ [array names orderingTable $referenceType,*]] regsub -all "$referenceType," $fieldNameList {} fieldNameList set fieldNameList [join $fieldNameList] set fieldNameArray($referenceType) $fieldNameList } # Create fieldNameArray - end foreach path $pathList { # puts $path source $path # Create table set keyList [array names metadataArray *,referencetype] regsub -all {,referencetype} $keyList {} keyList set i 0 ;# i is used for testing only (see if below) foreach key $keyList { incr i if $filter { # insert only references having a secondary type field if ![info exists metadataArray($key,secondarytype)] { # missing secondarytype # set log [list $path $key] # Store log @log auto 0 a continue } } set referenceType $metadataArray($key,referencetype) set keyList [array names metadataArray $key,*] set line "$key \t" foreach fieldName $fieldNameArray($referenceType) { if [info exists metadataArray($key,$fieldName)] { set fieldValue $metadataArray($key,$fieldName) if [regexp {%A|%E|%Y|%\?} $inverseTable($referenceType,$fieldName)] { regsub -all {,\}} $fieldValue "\}" fieldValue ;# drop trailing comma set fieldValue [string trim [join $fieldValue {; }] {; }] ;# put ; between author names } append line "$fieldValue\t" } else { append line "\t" } } append table($referenceType) "[string trim $line \t]\n" # if {$i == 5} {break} ;# for testing only } # Create table - end # Create files foreach referenceType [array names table] { if ![file exists table$referenceType.txt ] { set header urlibkey\t[join $fieldNameArray($referenceType) \t]\n Store header table$referenceType.txt } Store table($referenceType) table$referenceType.txt auto 0 a } # Create files - end if [info exists table] {unset table} unset metadataArray } return done } # ---------------------------------------------------------------------- # < } # Example: # cd /home/banon/URLib/col/dpi.inpe.br/banon/2002/08.01.15.28/doc # cd C:/usuario/gerald/URLib/col/dpi.inpe.br/banon/2002/08.01.15.28/doc # cd /dados/URLib/col/dpi.inpe.br/banon/2002/08.01.15.28/doc # source metadataArray2ASCII.tcl # done global referRepository set referRepository dpi.inpe.br/banon/1999/08.08.19.14 source ../../../../../dpi.inpe.br/banon/1998/08.02.08.56/doc/utilities1.tcl source ../../../../../dpi.inpe.br/banon/1998/08.02.08.56/doc/utilitiesStart.tcl source ../../../../../dpi.inpe.br/banon/1998/08.02.08.56/doc/utilitiesMirror.tcl source ../../../../../$referRepository/doc/referTables.tcl array set orderingTable [CreateOrderingTable] array set inverseTable [CreateInverseTable] # set path C:/usuario/gerald/URLib/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl ## set path /dados/URLib/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl ## set path /iris3/URLibSRE/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl ## set path /dados/URLibSBSR/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl # puts [dpi.inpe.br/banon/2002/08.01.15.28::metadataArray2ASCII $path] #