Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
VFP code syntax coloring in HTML
Message
 
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
00355687
Message ID:
00356272
Views:
26
lparameters lcCode, lcPath
*Open up our table of words
lnWA = select()
select 0
use (iif(empty(lcPath), '', lcPath) + 'words')
*Do some basic HTML intializing
lcCode = strtran(lcCode, chr(9), space(5))
lcCode = strtran(lcCode, '&', '&')
lcCode = strtran(lcCode, '<', '<')
lcCode = strtran(lcCode, '>', '>')
*Create an array ouf of our strings.
local laLines[1], lcReturn
alines(laLines, lcCode)
lcReturn = '<b><pre>'
*Proccess each line
for lnI = 1 to alen(laLines)
     lcLine = laLines[lnI]
     *Don't even bother the blank ones
     if empty(alltrim(lcLine))
          lcReturn = lcReturn + chr(13) + chr(10)
          loop
     endif
     *Full Line Comments, first
     if upper(alltrim(lcLine)) = '*' or;
          upper(alltrim(lcLine)) = 'NOTE'
          lcLine = '<font color=green>' + ;
               lcLine + '</font>'
          *Print line here
          lcReturn = lcReturn + chr(13) + chr(10) + lcLine
          loop
     endif
     *Define vars ahead of time
     *So they do not always need to be
     *Calculated in the loops
     local lcFormat, lnFormatLength, lcFL, ;
          lcRW, lnRWLength, lnStartRW, lnOccurance
     lcFormat = '<font color=blue>'
     lnFormatLength = len(lcFormat)
     lcFL = ' '+ upper(trim(chrtran(lcLine, ':;./\<>+=-}]()#', space(15)))) + ' '
     *Now end of the line comments
     local lcDoubleAmp, lnStartComment
     lcDoubleAmp = '&&' &&This is to test our function
     lnStartComment = at(lcDoubleAmp, lcLine)
     if lnStartComment > 0
          lcLine = stuff(lcLine, lnStartComment, 0, '<font color=green>') + ;
               '</font>'
     endif
     *Look at every RW
     scan
          wait window nowait 'Line ' + alltrim(str(lnI)) + ;
               '  RW ' + alltrim(str(recno()))
          lcRW = ' ' + alltrim(REVWORD) + ' '
          lnRWLength = len(lcRW) - 2
          *For each occurance of an RW ...
          lnOccurance = 1
          lnStartRW = at(lcRW, lcFL, 1)
          do while lnStartRW > 0 and (lnStartComment = 0 or lnStartRW < lnStartComment)
               *Put in the format tags
               lcLine = stuff(lcLine, lnStartRW, 0, lcFormat)
               lcLine = stuff(lcLine, lnStartRW + lnFormatLength + lnRWLength, 0, '</font>')
               lcFL = ' '+ upper(trim(chrtran(lcLine, ':;./\+=-}]()<>', space(14)))) + ' '
               lnOccurance = lnOccurance + 1
               lnStartRW = at(lcRW, lcFL, lnOccurance)
          enddo
     endscan
     *Submit the process line
     lcReturn = lcReturn  + chr(13) + chr(10) + lcLine &&Another InLine Test to use
endfor
lcReturn = lcReturn  + '</pre></b>'
use
select (lnWA)
return lcReturn


Forgot to run VfpStart again :) Seems to work, right? Sorry for confusion...
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform