Typecraft v2.5
Jump to: navigation, search

How to create a XHTML word list with a Toolbox export process

Revision as of 16:07, 10 October 2012 by Hannes Hirzel (Talk | contribs) (Created page with 'The [http://www.sil.org/computing/toolbox Toolbox] program has the feature of defining export processes. To do so in many cases a script in a Domain specific scripting language c…')

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The Toolbox program has the feature of defining export processes. To do so in many cases a script in a Domain specific scripting language called (DSL called consistent changes is needed.

Below a script for a "cct" (consistent changes table) for producing a word list in XHTML based on a Toolbox lexicon is presented.

To use it copy and past the code into a text file (e.g. done with 'notepad') and then set up an export process. The description how to do it is in the comment.

Notes

A line starting the letter 'c' indicates a comment.


 C ========================================================================
 C file name: genWordListInXHTMLtable.cct
 C based on:   aswGenHTML.cct
 C
 C
 C converts a part of Toolbox lexicon database
 c
 c to an HTML table
 c
 c
 c Fields:
 c \lx    (lexeme)
 c \hm    (homonym number)
 c \ps    (part of speech)
 c \ge    (gloss English)
 c
 c to XHTML-Code
 c
 c
 c
 c
 c
 c Instructions:
 c put this file into the settings folder, the one within the Toolbox project folder.
 c
 c
 c To run the program the first time
 c choose "File export"
 c Choose "Add a new export process"
 c Choose "Standard Format" radio button
 c give a process name, e.g. WordListTableInHTML
 c and add this file as the changes table
 c
 c export the database file
 c
 c For subsequent execution do
 c choose "File export"
 c choose the process 'WordListTableInHTML'
 c
 c
 c
 c
 c Tamale, 4th October  2012 / Hannes Hirzel
 c
 c
 c Acknowledgement: 
 c               Karen Buseman reviewed the code and 
 c               provided suggestions to shorten it considerably.
 c
 c
 c
 c ------------------------------------------------------------------------------------------------------------------------------
 c
 c http://opensource.org/licenses/mit-license.php
 c
 c
 c The MIT License (MIT)
 c
 c
 c
 c Copyright (c) 2012 Hannes Hirzel
 c
 c Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
 c documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
 c the rights 
 c     to use,
 c     copy,
 c     modify,
 c     merge, 
 c     publish,
 c     distribute,
 c     sublicense,
 c     and/or sell copies of the Software,
 c
 c and to permit persons to whom the Software is furnished to do so, 
 c
 c subject to the following conditions:
 c
 c The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 c 
 c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF c MERCHANTABILITY, 
 c FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE c FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
 c WHETHER IN AN  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 c CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 c
 c
 c ================================ ===========================================================================================
 
 
 
 
 
 c ----------------------------------------------------------
 c write out complete HTML header including style information
 c ----------------------------------------------------------
 
 
 
 
 
 begin		>	'<?xml version="1.0" encoding="UTF-8"?>' nl
 				'<html xmlns="http://www.w3.org/1999/xhtml">' nl
      '<header>'  nl
       '<script language="JavaScript" type="text/javascript">' nl
       ' function test(file, titleString)'  nl
      '   {' nl
      "     //" nl
      '  }' nl
      '</script>' nl
      ' '
      nl
      '<link href="theStyleSheet.css" rel="stylesheet" type="text/css" />' nl 
      ' ' 
      nl
      ' '
      nl
      '<!-- additional styles --> ' nl
      '<!-- delete the examples and replace them with what you want --> ' nl

      '<style type="text/css">' nl
       "td.LexiconEntry {padding-bottom: 2px; color: black; font-size: 14; " nl
      '	padding-left: 10px; padding-right: 10px; background-color="#C0FFCC";}' nl
      nl
      "td.note {padding-bottom: 2px; color: black; font-size: 11;" nl
      'padding-left: 10px; padding-right: 10px; background-color="#A0FFA0";}' nl
      nl	
      '</style>' nl
      '</header>' nl
      ' ' 
      nl
      ' '
      nl
      "<body>" nl
      '<h2>'
      'Nkonya lexicon data'                    
      '</h2>' nl

      '<table>' nl





 c -------------------------------------------------------------
 c define output procedures
 c
 c
 c The output procedure will be called for each entry.
 c It produces one HTML table row.
 c Currently the row has two cells.
 c -------------------------------------------------------------
 
 
 
 
 
 define(output_LexiconEntry) >  
                  if(lxFlag)
                     begin
                       "<tr>"                            c tr = table row; HTML table row mark 
 
         	        '<td class="LexiconEntry">' 
                           out(lx)
                    "</td>"  nl
 
                  	'<td class="hm">'
                     out(hm)
                         '</td>' nl
 
                 	'<td class="ps">'
                           out(ps)
                        '</ td>' nl
 
 					'<td class="ge">' 
 					 	out(ge)
 					'</t d>' nl
 
 					'<td class="sd">' nl
 					 	out(sd)   
 					"</t d>" nl
                    
 						"</tr>"	                        c end HTML table row
 
 						nl nl                           c two new line commands
 
 						do(clear_stores)                c call procedure 'clear_Flags' defined below.
           
 					end                                 c if(lxFlag)
 
 
 
 
 
 
 
 
 define(clear_stores) >  store(lx) endstore    
                         store(hm) endstore
                         store(ps) endstore    
                         store(ge) endstore    
                         store(sd) endstore    
 
 
 c ---------------------------------------------------------------------------------------
 
 
 
 nl	        >        ""                                        c eliminate new lines
 
 '\lx '         >        endstore                                  c stop storing and output previous entry
                          if(lxFlag)                               c only output if lx has been encountered before,
                            do(output_LexiconEntry)                c i.e. if we are not at the very first record
                         end if
                                                                   c then store new entry
          	         store(lx)                                 c 'lx ' is name of data store 
                         set(lxFlag)                               c set lxFlag so for that all subsequent occurenences of lx
                                                                   c there will be output.
 
 
 '\hm '          >       store(hm)                                 c hm (homonym number) data store
 
 '\ps '          >       store(ps)                                 c ps (part of speech) data store
 
 '\ge '          >       store(ge)                                 c ge (gloss English) data store
 
 
 
 
 
 '\'             >       store(away)                c eliminate all other fields by storing them 
                                                    c in another store called 'away' which we will not use.
 
 
 
 
 
 
 
 
 
 
 c ============================================================================================================
 c
 c Treatment of last record and output of final HTML code
 c
 c ============================================================================================================



 endfile                 >    endstore   
 
                              do(output_LexiconEntry)       c output last entry.  

                              "</table>" nl		    c end of table 
                              "</body>"  nl 
                              "</html>" 
                               
                              endfile