EnglishРусский  

   ..

   src2html.g

Ads

Perfect Automation tool
All-In-One: Script editor, Launcher, Scheduler, Keyboard & Mouse Recorder. Try now!

CreateInstall
Freeware and commercial installers.

Cell Phone Batteries
Batteries Plus offers batteries for laptop, camcorder, cell phone, camera.

Gentee needs your help!
How to advertise with us
 
laptop battery

  1 #!gentee.exe -p default "%1"
  2 /******************************************************************************
  3 *
  4 * Copyright (C) 2007, The Gentee Group. All rights reserved. 
  5 * This file is part of the Gentee open source project - http://www.gentee.com. 
  6 * 
  7 * THIS  FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT"). 
  8 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS 
  9 * ACCEPTANCE OF THE AGREEMENT.
 10 *
 11 * ID:  src2html 14.11.07 0.0.A.
 12 *
 13 * Author: Alexey Krivonogov ( gentee )
 14 *
 15 * Summary: 
 16 *
 17 ******************************************************************************/
 18 
 19 include
 20 {
 21    $"..\..\lib\lex\lexnew.g"
 22    $"..\autoformat\lexfgentee.g"
 23    $"..\autoformat\lexfc.g"
 24 } 
 25 
 26 define 
 27 {
 28    S2H_GENTEE = 0x0001
 29    S2H_C      = 0x0002
 30    S2H_UTF8   = 0x0010
 31    S2H_LINES  = 0x0020
 32 }
 33 
 34 text  src2html( str input, uint flags )
 35 \{
 36    arrout aout
 37    uint   lex, off, start, end, ptrlex
 38    str    out
 39         
 40    aout.isize = sizeof( lexitem )
 41    if flags & $S2H_C : ptrlex = lexfc.ptr() 
 42    else : ptrlex = lexfgentee.ptr()
 43    lex = lex_init( 0, ptrlex )
 44    
 45    if flags & $S2H_UTF8
 46    {
 47       ustr   ust = input
 48       ust.toutf8( input )
 49    }  
 50    gentee_lex( &input, lex, &aout )
 51 
 52    off = aout.data.ptr()
 53    start = input.ptr()
 54    end = aout.data.ptr() + *aout * sizeof( lexitem )
 55    while off < end
 56    {
 57       uint  li nospan 
 58       str   ok stemp
 59       
 60       li as off->lexitem
 61       // print("TYpe = \( hex2stru( li.ltype )) Off=\(li.pos) len = \(li.len)\n") 
 62       if flags & $S2H_C
 63       {      
 64       switch li.ltype
 65       {
 66          case $FC_NAME
 67          {
 68             if li.value && li.value <= 0xFF : out@"<span class=\"srk\">"
 69             elif li.value > 0xFF : out@"<span class=\"srt\">"
 70             else : nospan = 1
 71          }
 72          case $FC_STRING,$FC_BINARY : out@"<span class=\"srs\">"
 73          case $FC_COMMENT, $FC_LINECOMMENT : out@"<span class=\"src\">"
 74          case $FC_NUMBER : out@"<span class=\"srn\">"
 75          default : nospan = 1
 76       }
 77       }
 78       else
 79       {      
 80       switch li.ltype
 81       {
 82          case $FG_NAME
 83          {
 84             if li.value && li.value <= 0xFF : out@"<span class=\"srk\">"
 85             elif li.value > 0xFF : out@"<span class=\"srt\">"
 86             else : nospan = 1
 87          }
 88          case $FG_STRING,$FG_BINARY,$FG_TEXTSTR,$FG_FILENAME,$FG_MACROSTR
 89          {
 90             out@"<span class=\"srs\">"
 91          }
 92          case $FG_COMMENT, $FG_LINECOMMENT : out@"<span class=\"src\">"
 93          case $FG_MACRO : out@"<span class=\"srm\">"
 94          case $FG_NUMBER : out@"<span class=\"srn\">"
 95          default : nospan = 1
 96       }
 97       }
 98       ok.append( start + li.pos, li.len )
 99       stemp.replacech( ok, '<', "<" )
100       ok.replacech( stemp, '>', ">" )
101       out@ok
102       if !nospan : out@"</span>"
103       off += sizeof( lexitem ) 
104    }         
105    if flags & $S2H_LINES 
106    {
107       arrstr lines
108       uint   i width = 1
109       
110       lines.load( out, 0 )
111       i = *lines
112       while i /= 10 : width++
113       
114       fornum i = 0, *lines
115       {
116          @"<span class = \"line\">\( "".out4( "%\( width )i", i + 1 ))</span> \( lines[i] )\l"
117       }  
118    }
119    else : @out
120 
121 //   @input
122 }\!
123 
124 func mainsrc2html<main>
125 {
126    str in 
127    
128    in.read("c:\\temp\\calendar.g")
129    @src2html( in, $S2H_GENTEE )
130    getch()
131 }
Edit