#
# Copyright for the scripts in this file (c) 2001
# by Gerald Banon. All rights reserved.
# BibPessoal2Refer converts BibPessoal format to refer/BiblX format (see EndNote)
# input and output are in txt format
package provide iconet.com.br/banon/2001/11.24.15.12 2.1
namespace eval iconet.com.br/banon/2001/11.24.15.12 {
# >
# ----------------------------------------------------------------------
# BibPessoal2Refer
# convert values are 0 or 1
# 0 means to do not convert
# 1 means to convert
proc BibPessoal2Refer {fileContent convert} {
# global parsingRepository
global bibpessoal2referRepository
global col
# puts [info exists "${bibpessoal2referRepository}::b2r(Periódico (Artigo))"]
# if ![info exists "${bibpessoal2referRepository}::b2r(Periódico (Artigo))"] {
# source $col/$bibpessoal2referRepository/doc/bibTables.tcl
# }
# puts [info exists "${bibpessoal2referRepository}::b2r(Periódico (Artigo))"]
# if ![info exists dpi.inpe.br/banon/1999/08.08.19.14::orderingTable] {
# source $col/dpi.inpe.br/banon/1999/08.08.19.14/doc/referTables.tcl
## doesn't work because source is executed within a namespace
# }
# if {[string compare {} [info procs ${parsingRepository}::ParseFullName]] == 0} {
# source $col/$parsingRepository/doc/Parsing.tcl
# }
global ${bibpessoal2referRepository}::b2r
global ${bibpessoal2referRepository}::b2rTable
# puts 1-$fileContent
# regsub -all {Periądico} $fileContent {Periódico} fileContent
if {[string compare {} [info procs iconet.com.br/banon/2001/12.08.15.34::ConvertEncodings]] == 0} {
source $col/iconet.com.br/banon/2001/12.08.15.34/doc/Converting.tcl
}
if $convert {set fileContent [iconet.com.br/banon/2001/12.08.15.34::ConvertEncodings $fileContent 0]}
# puts 2-$fileContent
set fileContent [string trim $fileContent \n]
set entryList [split $fileContent \n]
set columnNames [lindex $entryList 0]
set columnNames [split $columnNames \t]
set numberOfColumns [llength $columnNames]
# puts $columnNames
# puts $numberOfColumns
# Drop returns between quotes
set flag 0
foreach character [split $fileContent {}] {
if $flag {
if {[string compare \n $character] == 0} {continue}
if {[string compare {"} $character] == 0} {set flag 0}
} else {
if {[string compare {"} $character] == 0} {set flag 1}
}
append newFileContent $character
}
# Drop returns between quotes - end
set cellList [split $newFileContent \t\n]
# puts [llength $cellList]
set refer {}
set index 0
foreach $columnNames [lrange $cellList $numberOfColumns end] {
set x 0; after 1 {set x 1}; vwait x ;# nice procedure
incr index
set referEntry {}
lappend referEntry "%@index $index"
# puts --$Tipos--
regsub {[12]$} $b2r($Tipos) {} referenceType
# lappend referEntry "%0 $b2r($Tipos)"
lappend referEntry "%0 $referenceType"
foreach fieldName $columnNames {
set fieldName2 "{$fieldName}"
set fieldValue [subst $$fieldName2]
# puts [list $fieldName = $fieldValue
if {[string compare {Tipos} $fieldName] == 0} {continue}
if {[string compare {Extra} $fieldName] == 0} {continue}
if {[string compare {CDD} $fieldName] == 0} {continue}
if {[string compare {NormPers} $fieldName] == 0} {continue}
if {[string compare {Autores} $fieldName] == 0} {
regsub -all {"} $fieldValue {} fieldValue
# puts $fieldValue
foreach name [split $fieldValue \;] {
regsub {([a-z][a-z\)])\.$} $name {\1} name ;# drop trailing point (unless it is point after a capital letter, eg., L.S.
regsub {$} $name {,} name ;# add comma
lappend referEntry \
"$b2rTable($Tipos,$fieldName) [string trim $name]"
}
} elseif {[string compare {PCS} $fieldName] == 0} {
if {[string compare {} $fieldValue] == 0} {
set keyWords {}
} else {
set keyWords $fieldValue.
}
lappend referEntry \
"$b2rTable($Tipos,$fieldName) $keyWords"
} else {
if ![info exists b2rTable($Tipos,$fieldName)] {continue}
lappend referEntry \
"$b2rTable($Tipos,$fieldName) $fieldValue"
}
}
# puts $referEntry
lappend refer [join \
[lsort -command FieldCompare $referEntry] \n]
lappend refer ""
}
regsub -all {\\"} $refer {"} refer
return [join $refer \n]
}
# BibPessoal2Refer - end
# ----------------------------------------------------------------------
# FieldCompare
proc FieldCompare {a b} {
global dpi.inpe.br/banon/1999/08.08.19.14::orderingTable
set a0 [lindex $a 0] ;# doesn't work with "2000, {K}orea" in $a (list element in braces followed by "orea" instead of space)
set b0 [lindex $b 0]
# regexp "%\[^ \]*" $a a0
# regexp "%\[^ \]*" $b b0
if {[info exists orderingTable($a0)] && \
[info exists orderingTable($b0)]} {
return [expr $orderingTable($a0)<=$orderingTable($b0)?-1:1]
}
if {[info exists orderingTable($a0)] && \
! [info exists orderingTable($b0)]} {
return -1
}
if {! [info exists orderingTable($a0)] && \
[info exists orderingTable($b0)]} {
return 1
}
if {! [info exists orderingTable($a0)] && \
! [info exists orderingTable($b0)]} {
return [string compare $a0 $b0]
}
}
# FieldCompare - end
# ----------------------------------------------------------------------
# <
}
# Example:
# cd ../../../../../iconet.com.br/banon/2001/11.24.15.12/doc
# source bibpessoal2refer.tcl
#
# console show
# set parsingRepository iconet.com.br/banon/2001/11.24.08.30
# set bibpessoal2referRepository iconet.com.br/banon/2001/11.24.15.12
# set col ../../../../..
# source bibTables.tcl
# source ../../../../../dpi.inpe.br/banon/1999/08.08.19.14/doc/referTables.tcl
# set fileId [open c:/usuario/gerald/URLib/col/iconet.com.br/banon/2001/11.24.15.58/doc/@reference.bp1 r]
# set fileId [open c:/usuario/gerald/URLib/col/iconet.com.br/banon/2001/12.08.21.43/doc/@reference.bp2 r]
# fconfigure $fileId -translation binary ;# only with .bp2
# set fileContent [read $fileId]
# close $fileId
# puts [${bibpessoal2referRepository}::BibPessoal2Refer $fileContent 0] ;# with .bp1
# puts [${bibpessoal2referRepository}::BibPessoal2Refer $fileContent 1] ;# with .bp2
#