* utils/hbmk2/hbmk2.prg
+ added help and Markdown output for hbrun mode,
using same options as in hbmk2 mode, run 'hbrun -help'
+ documented how to disable hbrun history
+ documented script search and and script autodetection details
+ documented opening .dbf files
+ documented how to paste text into shell prompt
+ documented limitation that in script INIT PROCEDUREs,
automatic selection of interactive GT doesn't work
+ __Accept(), __Wait() to trigger interactive GT in scripts
* src/rtl/objfunc.prg
! __objGetMsgList(): fixed to not rely on any assumption
about the collation. In UTF8EX mode it was always
returning empty array.
Plus cleanup/optimizations
* contrib/xhb/hbxml.c
! fix to a memory double free
Thanks to Jose F. Gimenez for the patch.
* contrib/hbtest/core.prg
* contrib/hbtest/tests/test.prg
* contrib/hbamf/tests/test.prg
+ added support and tests for tests returning
array, hash and object types
* changed zero byte to be escaped to \0 (was \000)
+ added memo tests and related engine cleanups
* src/rtl/valtoexp.prg
+ hb_ValToExp(): output for objects changed to use double
quotes for strings instead of a mixture of double/single
ones, to make it easier stringifying the result
* src/rtl/hbfilehi.prg
% hb_DirSepDel(): minor optimization
* tests/fixcase.hb
+ correct casing of EXTERN/REQUEST references
* contrib/hbwin/tests/olesrv4.prg
* contrib/hbxpp/hbxpp.ch
* contrib/xhb/hterrsys.prg
* contrib/xhb/xhb.ch
* extras/httpsrv/uhttpd.prg
* src/rdd/dbdelim.prg
* src/rtl/tgetint.prg
* src/rtl/tpersist.prg
* tests/ppapi.prg
* tests/set.prg
! run fixcase.hb to format REQUEST/EXTERNs
* contrib/hbmisc/spd.c
* contrib/hbmisc/hbnf.hbx
! missing casing for one function
+ tests/extend1.hbp
* tests/extend1.prg
* tests/extend2.c
! fixed to build and run again under Harbour
* tests/debug.prg
* tests/dynobj.prg
* tests/for2.prg
* tests/memvar.prg
* tests/ppapi.prg
* tests/scroll.prg
* tests/set.prg
* tests/str.prg
* __Accept() changed to WAIT or Inkey( 0 )
- contrib/hbrun/hbrun.1
* config/postinst.hb
* deleted hbrun's (outdated) man doc.
Now built into hbmk2.prg as hbrun help.
* contrib/hbmisc/hb_f.c
* contrib/xhb/tests/xml1.prg
* tests/hrbext.prg
* comment/minor update
* tests/hrb.prg
* tests/hrbext.prg
+ hrb.prg to create .hrb file if it doesn't exist
+ added INIT PROCEDURE
* contrib/gtwvg/*.h
* contrib/gtwvg/gtwvgd.c
* contrib/hbnf/fttext.c
* contrib/hbwin/hbwinole.h
* contrib/rddads/adsfunc.c
* contrib/rddbm/bmdbfx.c
* doc/c_std.txt
* extras/gtwvw/docs/funclist.txt
* extras/gtwvw/wvwpush.c
* include/*.h
* src/codepage/cp_utf8.c
* src/common/*.c
* src/compiler/*.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbffpt/dbffpt1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfntx/dbfntx1.c
* src/rdd/hsx/hsx.c
* src/rdd/usrrdd/rdds/arrayrdd.prg
* src/rdd/*.c
* src/rtl/*.c
* src/rtl/gtsln/gtsln.h
* src/rtl/gttrm/gttrm.c
* src/rtl/gtwvt/gtwvt.c
* src/vm/*.c
* ! operator synced with uncrustify format
* minor corrections in comment/text
* tests/codebl.prg
* tests/codebloc.prg
* tests/dates3.prg
* tests/foreach.prg
* tests/macro.prg
* tests/mouse.prg
* tests/onidle.prg
* tests/tbrowse.prg
* tests/vmasort.prg
* tests/wvtext.prg
* website/samples/codebl.prg.html
* website/samples/codebloc.prg.html
* website/samples/dates3.prg.html
* website/samples/foreach.prg.html
* website/samples/macro.prg.html
* website/samples/mouse.prg.html
* website/samples/onidle.prg.html
* website/samples/tbrowse.prg.html
% local functions marked STATIC
* contrib/hbmisc/spd.c
* contrib/hbnf/clrsel.prg
* contrib/hbnf/doc/en/*.txt
* contrib/hbnf/popadder.prg
* contrib/hbnf/tests/clrsel.prg
* contrib/hbwin/win_tprn.prg
* doc/en/datetime.txt
* doc/en/set.txt
* doc/oldnews.txt
* extras/gfspell/spell.prg
* extras/gtwvw/docs/gtwvw.txt
* extras/gtwvw/hbgtwvw.h
* extras/gtwvw/tests/ebtest7.prg
* extras/gtwvw/wvwdraw.c
* extras/gtwvw/wvwpush.c
* tests/clsscope.prg
* tests/extend1.prg
! few more dates converted to ISO format
225 lines
5.6 KiB
Plaintext
225 lines
5.6 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
/*
|
|
* Function naming casing fixer
|
|
*
|
|
* The script takes proper casing from .hbx files
|
|
* and applies it to whole source tree. (except
|
|
* C sources and some certain files)
|
|
*
|
|
* BEWARE: ugly code
|
|
*
|
|
* Copyright 2012 Viktor Szakats (harbour syenar.net)
|
|
* www - http://harbour-project.org
|
|
*
|
|
*/
|
|
|
|
#pragma -w3
|
|
#pragma -km+
|
|
#pragma -ko+
|
|
|
|
#include "directry.ch"
|
|
#include "simpleio.ch"
|
|
|
|
PROCEDURE Main( cFile )
|
|
|
|
LOCAL aFile
|
|
LOCAL cExt
|
|
|
|
LOCAL hAll := { => }
|
|
|
|
LOCAL hExtExceptions := { ;
|
|
hb_libExt() =>, ;
|
|
".zip" =>, ;
|
|
".7z" =>, ;
|
|
".exe" =>, ;
|
|
".o" =>, ;
|
|
".js" =>, ;
|
|
".dif" =>, ;
|
|
".exe" =>, ;
|
|
".y" =>, ;
|
|
".yyc" =>, ;
|
|
".yyh" =>, ;
|
|
".a" =>, ;
|
|
".afm" =>, ;
|
|
".bmp" =>, ;
|
|
".dat" =>, ;
|
|
".dbf" =>, ;
|
|
".exe" =>, ;
|
|
".frm" =>, ;
|
|
".gif" =>, ;
|
|
".icns" =>, ;
|
|
".ico" =>, ;
|
|
".jpg" =>, ;
|
|
".lbl" =>, ;
|
|
".lib" =>, ;
|
|
".mdb" =>, ;
|
|
".ng" =>, ;
|
|
".odt" =>, ;
|
|
".pdf" =>, ;
|
|
".pfb" =>, ;
|
|
".png" =>, ;
|
|
".sq3" =>, ;
|
|
".tif" => }
|
|
|
|
LOCAL hPartial := { ;
|
|
".c" =>, ;
|
|
".h" =>, ;
|
|
".api" => }
|
|
|
|
LOCAL hFileExceptions := { ;
|
|
"ChangeLog.txt" =>, ;
|
|
"std.ch" =>, ;
|
|
"wcecon.prg" =>, ;
|
|
"uc16_gen.prg" =>, ;
|
|
"clsscope.prg" =>, ;
|
|
"speedstr.prg" =>, ;
|
|
"cpinfo.prg" =>, ;
|
|
"clsccast.prg" =>, ;
|
|
"clsicast.prg" =>, ;
|
|
"clsscast.prg" =>, ;
|
|
"big5_gen.prg" =>, ;
|
|
"foreach2.prg" =>, ;
|
|
"speedtst.prg" =>, ;
|
|
"keywords.prg" =>, ;
|
|
"xhb-diff.txt" =>, ;
|
|
"pp.txt" =>, ;
|
|
"locks.txt" =>, ;
|
|
"oldnews.txt" =>, ;
|
|
"news.html" =>, ;
|
|
"news1.html" =>, ;
|
|
"c_std.txt" =>, ;
|
|
"tracing.txt" =>, ;
|
|
"pcode.txt" => }
|
|
|
|
LOCAL aMaskExceptions := { ;
|
|
"contrib/xhb/thtm.prg" , ;
|
|
"contrib/hbnetio/readme.txt" , ;
|
|
"contrib/hbnetio/tests/*" , ;
|
|
"extras/httpsrv/home/*" , ;
|
|
"tests/hbpptest/*" , ;
|
|
"tests/mt/*" , ;
|
|
"tests/multifnc/*" , ;
|
|
"tests/rddtest/*" }
|
|
|
|
hb_cdpSelect( "EN" )
|
|
|
|
hb_HCaseMatch( hAll, .F. )
|
|
|
|
__hbformat_BuildListOfFunctions( hAll )
|
|
|
|
IF HB_ISSTRING( cFile )
|
|
ProcFile( hAll, cFile )
|
|
ELSE
|
|
FOR EACH aFile IN hb_DirScan( "", hb_osFileMask() )
|
|
cExt := hb_FNameExt( aFile[ F_NAME ] )
|
|
IF ! Empty( cExt ) .AND. ;
|
|
!( cExt $ hExtExceptions ) .AND. ;
|
|
!( hb_FNameNameExt( aFile[ F_NAME ] ) $ hFileExceptions ) .AND. ;
|
|
AScan( aMaskExceptions, {| tmp | hb_FileMatch( StrTran( aFile[ F_NAME ], "\", "/" ), tmp ) } ) == 0
|
|
ProcFile( hAll, aFile[ F_NAME ], cExt $ hPartial )
|
|
ENDIF
|
|
NEXT
|
|
ENDIF
|
|
|
|
RETURN
|
|
|
|
STATIC PROCEDURE ProcFile( hAll, cFileName, lPartial )
|
|
|
|
LOCAL cLog := MemoRead( cFileName )
|
|
|
|
LOCAL a
|
|
LOCAL cProper
|
|
|
|
LOCAL cRest
|
|
LOCAL nPartial
|
|
|
|
LOCAL nChanged := 0
|
|
|
|
hb_default( @lPartial, .F. )
|
|
|
|
IF lPartial
|
|
IF ( nPartial := At( "See COPYING.txt for licensing terms.", cLog ) ) > 0
|
|
ELSEIF ( nPartial := At( "If you do not wish that, delete this exception notice.", cLog ) ) > 0
|
|
ELSE
|
|
nPartial := 300
|
|
ENDIF
|
|
/* arbitrary size limit */
|
|
cRest := SubStr( cLog, nPartial )
|
|
cLog := Left( cLog, nPartial - 1 )
|
|
ELSE
|
|
cRest := ""
|
|
ENDIF
|
|
|
|
FOR EACH a IN hb_regexAll( "([A-Za-z] |[^A-Za-z_:]|^)([A-Za-z_][A-Za-z0-9_]+\()", cLog,,,,, .T. )
|
|
IF Len( a[ 2 ] ) != 2 .OR. !( Left( a[ 2 ], 1 ) $ "D" /* "METHOD" */ )
|
|
cProper := ProperCase( hAll, hb_StrShrink( a[ 3 ] ) ) + "("
|
|
IF !( cProper == a[ 3 ] ) .AND. ;
|
|
!( Upper( cProper ) == "FILE(" ) .AND. ; /* interacts with "file(s)" text */
|
|
!( Upper( cProper ) == "INT(" ) /* interacts with SQL statements */
|
|
cLog := StrTran( cLog, a[ 1 ], StrTran( a[ 1 ], a[ 3 ], cProper ) )
|
|
? cFileName, a[ 3 ], cProper, "|" + a[ 1 ] + "|"
|
|
nChanged++
|
|
ENDIF
|
|
ENDIF
|
|
NEXT
|
|
|
|
IF !( "hbclass.ch" $ cFileName )
|
|
FOR EACH a IN hb_regexAll( "(?:REQUEST|EXTERNAL|EXTERNA|EXTERN)[ \t]+([A-Za-z_][A-Za-z0-9_]+)", cLog,,,,, .T. )
|
|
cProper := ProperCase( hAll, a[ 2 ] )
|
|
IF !( cProper == a[ 2 ] )
|
|
cLog := StrTran( cLog, a[ 1 ], StrTran( a[ 1 ], a[ 2 ], cProper ) )
|
|
? cFileName, a[ 2 ], cProper, "|" + a[ 1 ] + "|"
|
|
nChanged++
|
|
ENDIF
|
|
NEXT
|
|
ENDIF
|
|
|
|
IF nChanged > 0
|
|
? cFileName, "changed: ", nChanged
|
|
hb_MemoWrit( cFileName, cLog + cRest )
|
|
ENDIF
|
|
|
|
RETURN
|
|
|
|
STATIC FUNCTION ProperCase( hAll, cName )
|
|
|
|
IF cName $ hAll
|
|
RETURN hb_HKeyAt( hAll, hb_HPos( hAll, cName ) )
|
|
ENDIF
|
|
|
|
RETURN cName
|
|
|
|
STATIC PROCEDURE __hbformat_BuildListOfFunctions( hFunctions )
|
|
|
|
WalkDir( hb_DirBase() + ".." + hb_ps() + "include", hFunctions )
|
|
WalkDir( hb_DirBase() + ".." + hb_ps() + "contrib", hFunctions )
|
|
WalkDir( hb_DirBase() + ".." + hb_ps() + "extras", hFunctions )
|
|
|
|
RETURN
|
|
|
|
STATIC PROCEDURE WalkDir( cDir, hFunctions )
|
|
|
|
LOCAL aFile
|
|
|
|
cDir := hb_DirSepAdd( cDir )
|
|
|
|
FOR EACH aFile IN hb_DirScan( cDir, "*.hbx" )
|
|
HBXToFuncList( hFunctions, hb_MemoRead( cDir + aFile[ F_NAME ] ) )
|
|
NEXT
|
|
|
|
RETURN
|
|
|
|
STATIC PROCEDURE HBXToFuncList( hFunctions, cHBX )
|
|
LOCAL cLine
|
|
|
|
FOR EACH cLine IN hb_ATokens( StrTran( cHBX, Chr( 13 ) ), Chr( 10 ) )
|
|
IF Left( cLine, Len( "DYNAMIC " ) ) == "DYNAMIC "
|
|
hFunctions[ SubStr( cLine, Len( "DYNAMIC " ) + 1 ) ] := NIL
|
|
ENDIF
|
|
NEXT
|
|
|
|
RETURN
|