home *** CD-ROM | disk | FTP | other *** search
/ The Dynamic Human Version 2.0 / DH2_CD2.ISO / pc / files / index.dxr / 00022.ls < prev    next >
Encoding:
Text File  |  1997-11-18  |  3.3 KB  |  129 lines

  1. on createDatabase
  2.   global gDHIndex, indexFileName, hardPath, term, def, titles, links, txtFile
  3.   DBInitPlatform()
  4.   DBOpenSession()
  5.   if value(DBDatabaseExists(hardPath & indexFileName)) > 0 then
  6.     put "Dynamic Human II index file already exists."
  7.     put "Please delete existing index file."
  8.     return -1
  9.   end if
  10.   set fields to EMPTY
  11.   put "TERM,C,255" & RETURN after fields
  12.   put "DEF,M" & RETURN after fields
  13.   put "TITLES,C,255" & RETURN after fields
  14.   put "LINKS,C,255" & RETURN after fields
  15.   put fields
  16.   set gDHIndex to DBCreate(hardPath & indexFileName, 4, fields, 0)
  17.   put gDHIndex
  18.   set term to EMPTY
  19.   set def to EMPTY
  20.   set titles to EMPTY
  21.   set links to EMPTY
  22.   set txtFile to fileio(mnew, "read", hardPath & "cindex.txt")
  23.   repeat while txtFile(mGetPosition) < txtFile(mGetLength)
  24.     set tempLine to txtFile(mReadLine)
  25.     delete char 1 of tempLine
  26.     delete char length(tempLine) of tempLine
  27.     if tempLine = EMPTY then
  28.       put "writing record:" && DBCount() + 1
  29.       DBWriteRec("G", DBCount() + 1)
  30.       DBWriteMemo("DEF", def)
  31.       put term
  32.       put def
  33.       put titles
  34.       put "**********"
  35.       set term to EMPTY
  36.       set def to EMPTY
  37.       set titles to EMPTY
  38.       set links to EMPTY
  39.       next repeat
  40.     end if
  41.     if length(term) = 0 then
  42.       set term to tempLine
  43.       next repeat
  44.     end if
  45.     if length(def) = 0 then
  46.       set def to tempLine
  47.       next repeat
  48.     end if
  49.     if length(titles) = 0 then
  50.       set titles to tempLine
  51.     end if
  52.   end repeat
  53.   txtFile(mdispose)
  54. end
  55.  
  56. on openDatabase
  57.   global gDHIndex, indexFileName, hardPath
  58.   set indexFileName to "dhindex"
  59.   if the platform contains "Mac" then
  60.   else
  61.   end if
  62.   DBInitPlatform()
  63.   DBOpenSession()
  64.   if DBDatabaseExists(hardPath & indexFileName) = 0 then
  65.     set gDHIndex to DbUse(hardPath & indexFileName)
  66.     DBSelect(gDHIndex)
  67.   else
  68.     put "could not find index database file."
  69.     return -1
  70.   end if
  71. end
  72.  
  73. on closeDatabase
  74.   global gDHIndex
  75.   DBClose(gDHIndex)
  76.   DBCloseSession()
  77.   if the platform contains "Mac" then
  78.   else
  79.   end if
  80.   updateStage()
  81. end
  82.  
  83. on readNthTerm whichTerm
  84.   if whichTerm <= DBCount() then
  85.     DBGo(whichTerm)
  86.     put DBGetFieldByName("TERM") into field "currentTerm"
  87.     put DBGetMemo("DEF") into field "currentDefinition"
  88.   end if
  89. end
  90.  
  91. on toUpper inString
  92.   set outString to EMPTY
  93.   repeat with i = 1 to length(inString)
  94.     if (charToNum(char i of inString) <= 122) and (charToNum(char i of inString) >= 97) then
  95.       put numToChar(charToNum(char i of inString) - 32) after outString
  96.       next repeat
  97.     end if
  98.     put char i of inString after outString
  99.   end repeat
  100.   return outString
  101. end
  102.  
  103. on buildTermList outputField
  104.   DBTop()
  105.   set termList to []
  106.   repeat with i = 1 to DBCount()
  107.     DBGo(i)
  108.     set currentTerm to DBGetFieldByName("term")
  109.     if length(currentTerm) >= 1 then
  110.       append(termList, currentTerm)
  111.     end if
  112.   end repeat
  113.   sort(termList)
  114.   set fullText to EMPTY
  115.   set currentTerm to EMPTY
  116.   set lastTerm to EMPTY
  117.   repeat with k = 1 to count(termList)
  118.     set currentTerm to getAt(termList, k)
  119.     if length(lastTerm) >= 1 then
  120.       if char 1 of lastTerm <> char 1 of currentTerm then
  121.         put RETURN after fullText
  122.       end if
  123.     end if
  124.     put currentTerm & RETURN after fullText
  125.     set lastTerm to currentTerm
  126.   end repeat
  127.   set the text of field outputField to fullText
  128. end
  129.