home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ascii2cp.zip / xhtml.kex < prev   
Text File  |  2002-05-18  |  6KB  |  99 lines

  1. 'set novalue on'  /* force KEXX and its way of SIGNAL ON NOVALUE  */
  2.  
  3. /* Usage:         [MACRO] XHTML                                   */
  4. /* Purpose:       Convert a text/plain IBM850 file to XHTML, only */
  5. /*                characters visible with either netscape 2.02 or */
  6. /*                WebExplorer 1.1d (or both) are translated.  All */
  7. /*                conflicts are counted.                          */
  8. /* Bugs:          ' not used (works only with WebExplorer),  */
  9. /*                € requires netscape 4.x (maybe try €) */
  10. /*                • requires netscape 4.x (maybe try •) */
  11. /*                ƒ does not work at all  (maybe try ƒ) */
  12. /* Requires:      Kedit 5.0               (Frank Ellermann, 2002) */
  13.  
  14.    C = 0 ;  N = 0 ;  W = 0       ;  T = fn.2() || '.' || ft.2()
  15.    'ft htm' ;  'eofout eol'      ;  if rc <> 0 then exit
  16.  
  17.    call ENTITY '&', 'amp'        ;  call ENTITY '"', 'quot'
  18.    call ENTITY '<', 'lt'         ;  call ENTITY '>', 'gt'
  19.    call ENTITY '∩', 'acute'      ;  call ENTITY '▌', 'brvbar'
  20.    call ENTITY 'á', 'aacute'     ;  call ENTITY '╡', 'Aacute'
  21.    call ENTITY 'é', 'eacute'     ;  call ENTITY 'É', 'Eacute'
  22.    call ENTITY 'í', 'iacute'     ;  call ENTITY '╓', 'Iacute'
  23.    call ENTITY 'ó', 'oacute'     ;  call ENTITY 'α', 'Oacute'
  24.    call ENTITY 'ú', 'uacute'     ;  call ENTITY 'Θ', 'Uacute'
  25.    call ENTITY 'â', 'acirc'      ;  call ENTITY '╢', 'Acirc'
  26.    call ENTITY 'ê', 'ecirc'      ;  call ENTITY '╥', 'Ecirc'
  27.    call ENTITY 'î', 'icirc'      ;  call ENTITY '╫', 'Icirc'
  28.    call ENTITY 'ô', 'ocirc'      ;  call ENTITY 'Γ', 'Ocirc'
  29.    call ENTITY 'û', 'ucirc'      ;  call ENTITY 'Ω', 'Ucirc'
  30.    call ENTITY 'à', 'agrave'     ;  call ENTITY '╖', 'Agrave'
  31.    call ENTITY 'è', 'egrave'     ;  call ENTITY '╘', 'Egrave'
  32.    call ENTITY 'ì', 'igrave'     ;  call ENTITY '▐', 'Igrave'
  33.    call ENTITY 'ò', 'ograve'     ;  call ENTITY 'π', 'Ograve'
  34.    call ENTITY 'ù', 'ugrave'     ;  call ENTITY 'δ', 'Ugrave'
  35.    call ENTITY '∙', 'uml'        ;  call ENTITY 'ÿ', 'yuml'
  36.    call ENTITY 'ä', 'auml'       ;  call ENTITY 'Ä', 'Auml'
  37.    call ENTITY 'ë', 'euml'       ;  call ENTITY '╙', 'Euml'
  38.    call ENTITY 'ï', 'iuml'       ;  call ENTITY '╪', 'Iuml'
  39.    call ENTITY 'ö', 'ouml'       ;  call ENTITY 'Ö', 'Ouml'
  40.    call ENTITY 'ü', 'uuml'       ;  call ENTITY 'Ü', 'Uuml'
  41.    call ENTITY 'æ', 'aelig'      ;  call ENTITY 'Æ', 'AElig'
  42.    call ENTITY 'å', 'aring'      ;  call ENTITY 'Å', 'Aring'
  43.    call ENTITY '╞', 'atilde'     ;  call ENTITY '╟', 'Atilde'
  44.    call ENTITY '≈', 'cedil'      ;  call ENTITY '°', 'deg'
  45.    call ENTITY 'ç', 'ccedil'     ;  call ENTITY 'Ç', 'Ccedil'
  46.    call ENTITY '╜', 'cent'       ;  call ENTITY '╧', 'curren'
  47.    call ENTITY '╨', 'eth'        ;  call ENTITY '╤', 'ETH'
  48.    call ENTITY '¿', 'iquest'     ;  call ENTITY '¡', 'iexcl'
  49.    call ENTITY '«', 'laquo'      ;  call ENTITY '»', 'raquo'
  50.    call ENTITY 'µ', 'micro'      ;  call ENTITY '·', 'middot'
  51.    call ENTITY '¬', 'not'        ;  call ENTITY '±', 'plusmn'
  52.    call ENTITY 'ñ', 'ntilde'     ;  call ENTITY 'Ñ', 'Ntilde'
  53.    call ENTITY 'ª', 'ordf'       ;  call ENTITY 'º', 'ordm'
  54.    call ENTITY '¢', 'oslash'     ;  call ENTITY '¥', 'Oslash'
  55.    call ENTITY 'Σ', 'otilde'     ;  call ENTITY 'σ', 'Otilde'
  56.    call ENTITY d2c(20), 'para'   ;  call ENTITY d2c(21), 'sect'
  57.    call ENTITY '⌠', 'para'       ;  call ENTITY '⌡', 'sect'
  58.    call ENTITY '£', 'pound'      ;  call ENTITY '╛', 'yen'
  59.    call ENTITY '⌐', 'reg'        ;  call ENTITY '╕', 'copy'
  60.    call ENTITY '½', 'frac12'     ;  call ENTITY '¼', 'frac14'
  61.    call ENTITY '≤', 'frac34'     ;  call ENTITY '√', 'sup1'
  62.    call ENTITY '²', 'sup2'       ;  call ENTITY 'ⁿ', 'sup3'
  63.    call ENTITY ' ', 'nbsp'       ;  call ENTITY 'ß', 'szlig'
  64.    call ENTITY 'τ', 'thorn'      ;  call ENTITY 'Φ', 'THORN'
  65.    call ENTITY '₧', 'times'      ;  call ENTITY '÷', 'divide'
  66.    call ENTITY '∞', 'yacute'     ;  call ENTITY 'φ', 'Yacute'
  67.  
  68.    W = W + ENTITY( '≡', 'shy'  ) ;  W = W + ENTITY( 'ε',    'macr' )
  69.  
  70.    C = C + ENTITY( d2c(7 ), 'bull' )   /* netscape 4.x has bullet */
  71.    C = C + ENTITY( '╒',     'euro' )   /* netscape 4.x has euro   */
  72.    N = N + ENTITY( d2c(24), 'uarr' )   /* WebExplorer 1.1d has 3  */
  73.    N = N + ENTITY( d2c(26), 'rarr' )   /* arrows, but neither 25: */
  74.    N = N + ENTITY( d2c(27), 'larr' )   /* ↓ nor 29: ↔   */
  75.  
  76.    'extract /INPUTMODE'          ;  'inputmode off'   ;  ':0'
  77.    'i <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://validator.w3.org/sgml-lib/REC-xhtml1-20000126/xhtml1-transitional.dtd">'
  78.    'i <html lang="en"><head>'    ;  W = W + C   ;  N = N + C
  79.    'i     <meta http-equiv="Content-type" content="text/html; charset=us-ascii" />'
  80.    'i     <meta name="description" content="' || T || '" />'
  81.    'i     <title>' T '</title><base target="_top" />'
  82.    'i </head><body onload="if (parent.location != location) parent.location=location">'
  83.    'i <!--' copies( '=', 59 ) '--><br /><pre>'        ;  ':*'
  84.  
  85.    'i <!--' copies( '=', 59 ) '--></pre>'
  86.    'i <hr /><address>'           ;  T = date() time.2()
  87.    'i     <a href="http://validator.w3.org/check/referer"><img src="valid.jpg" height="31" width="88" align="right" alt="XHTML validator" /></a>'
  88.    'i     Last update:' T 'by <a href="http://frank.ellermann.bei.t-online.de/index.htm">F. </a><a href="http://home.t-online.de/~frank.ellermann/index.htm">Ellermann</a>'
  89.    'i </address></body></html>'  ;  'inputmode' INPUTMODE.1
  90.  
  91.    if N <> 0 & W <> 0 then 'emsg text is not visible with any browser'
  92.    else if     W <> 0 then say 'text incompatible with WebExplorer 1.1d'
  93.    else if     N <> 0 then say 'text incompatible with Netscape 2.02'
  94.    exit sign( N * W )
  95.  
  96. ENTITY:  procedure
  97.   'nomsg change' delimit( arg( 1 ), '&' || arg( 2 ) || ';' ) 'all *'
  98.    return ( rc = 0 )
  99.