mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-19 13:40:49 +03:00
Integration of OCCT 6.5.0 from SVN
This commit is contained in:
100
src/DrawResources/Documentation.tcl
Executable file
100
src/DrawResources/Documentation.tcl
Executable file
@@ -0,0 +1,100 @@
|
||||
#
|
||||
# Documentation.tcl
|
||||
#
|
||||
# TCL procedures to process documentation files
|
||||
#
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Read a file
|
||||
|
||||
# The array subTitles binds the subTitles for each title (or empty list)
|
||||
# The array texts binds the text for each title
|
||||
#
|
||||
# Titles are of the form {Title subTitle subTitle}
|
||||
#
|
||||
|
||||
proc readFile {filename} {
|
||||
global subTitles texts
|
||||
if {! [file readable $filename]} return
|
||||
|
||||
foreach ar {subTitles texts} {if [info exists $ar] {unset $ar}}
|
||||
set title "Top"
|
||||
set stitle "Top"
|
||||
set subTitles($stitle) {}
|
||||
set level 1
|
||||
set f [open $filename r]
|
||||
while {[gets $f line] >= 0} {
|
||||
|
||||
if [regexp {^[ ]*(\*+)[ ]*(.*$)} $line dummy s t] {
|
||||
|
||||
# it is a new title
|
||||
set l [string length $s]
|
||||
|
||||
# at a deepest level go down enough levels
|
||||
while {$level < $l} {
|
||||
set up($title) $stitle
|
||||
set stitle $title
|
||||
lappend title $t
|
||||
incr level
|
||||
}
|
||||
|
||||
# at an upper level go up enough level
|
||||
while {$level > $l} {
|
||||
set title stitle
|
||||
set stitle $up($stitle)
|
||||
incr level -1
|
||||
}
|
||||
|
||||
# at the current level
|
||||
lappend subTitles($stitle) $t
|
||||
set title [concat $stitle $t]
|
||||
set texts($title) ""
|
||||
|
||||
} else {
|
||||
|
||||
# it is a line for the current title
|
||||
lappend texts($title) $line
|
||||
}
|
||||
}
|
||||
close $f
|
||||
}
|
||||
|
||||
#
|
||||
# call on each title : titleProc title level
|
||||
# call on each text : textProc text
|
||||
|
||||
proc dump {titleProc textProc {title Top} {level 1}} {
|
||||
global subTitles texts
|
||||
if [info exists texts($title)] {$textProc $texts($title)}
|
||||
if [info exists subTitles($title)] {
|
||||
set l $level
|
||||
incr l
|
||||
foreach t $subTitles($title) {
|
||||
$titleProc $t $level
|
||||
dump $titleProc $textProc [concat $title $t] $l
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# cut a text into sections
|
||||
# and call on each section : sectionProc section text
|
||||
|
||||
proc sectionText {aText aSectionProc} {
|
||||
set section ""
|
||||
set text {}
|
||||
foreach line $aText {
|
||||
|
||||
if {[string index $line 0] == "."} {
|
||||
|
||||
$aSectionProc $section $text
|
||||
set section $line
|
||||
set text {}
|
||||
} else {
|
||||
lappend text $line
|
||||
}
|
||||
}
|
||||
$aSectionProc $section $text
|
||||
}
|
||||
|
Reference in New Issue
Block a user