diff --git a/harbour/ChangeLog.txt b/harbour/ChangeLog.txt index 65c358e102..8c4357c191 100644 --- a/harbour/ChangeLog.txt +++ b/harbour/ChangeLog.txt @@ -10,6 +10,13 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2013-02-11 21:51 UTC+0100 Viktor Szakats (harbour syenar.net) + * utils/hbmk2/hbmk2.prg + + ability to output help text in MarkDown format: + hbmk2 --longhelpmd > man.md + view it with any MarkDown compatible viewer, or + convert to HTML/PDF/MANPAGE/TROFF/etc. + 2013-02-11 14:51 UTC+0100 Viktor Szakats (harbour syenar.net) * utils/hbmk2/hbmk2.prg ! same internal typo in another name diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 4412df3402..2a8aef6d46 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -74,9 +74,9 @@ Requires Ruby. Install with: gem install md2man Convert with: - md2man help.md > help.1 - (help.md should come out from this executable as output, - so the help does not have to be updated in two disctinct places) + md2man man.md > man.1 + (man.md should come out from this executable as output, so + the manual does not have to be updated in two disctinct places) Man page HOWTO: http://www.schweikhardt.net/man_page_howto.html @@ -505,8 +505,9 @@ EXTERNAL hbmk_KEYW #define _HBMK_cCPPRG 150 #define _HBMK_lDumpInfo 151 +#define _HBMK_lMarkDown 152 -#define _HBMK_MAX_ 151 +#define _HBMK_MAX_ 152 #define _HBMK_DEP_CTRL_MARKER ".control." /* must be an invalid path */ @@ -934,6 +935,7 @@ STATIC FUNCTION hbmk_new() hbmk[ _HBMK_aLIBPATH ] := {} hbmk[ _HBMK_lDumpInfo ] := .F. + hbmk[ _HBMK_lMarkDown ] := .F. RETURN hbmk @@ -1484,6 +1486,15 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ShowHelp( hbmk, .T., .T. ) RETURN _ERRLEV_HELP + CASE cParamL == "-longhelpmd" .OR. ; + cParamL == "--longhelpmd" + + hbmk[ _HBMK_lMarkDown ] := .T. + + ShowHeader( hbmk ) + ShowHelp( hbmk, .T., .T. ) + RETURN _ERRLEV_HELP + CASE Left( cParamL, 8 ) == "-hbmake=" convert_hbmake_to_hbp( hbmk, SubStr( cParam, 9 ) ) @@ -14701,14 +14712,52 @@ INIT PROCEDURE ClipInit() RETURN +STATIC FUNCTION ToMarkDown( cText ) + + cText := StrTran( cText, "&", "&" ) /* keep it at top */ + cText := StrTran( cText, "<", "<" ) + cText := StrTran( cText, ">", ">" ) + + cText := StrTran( cText, "\", "\\" ) /* keep it at top */ + cText := StrTran( cText, "`", "\`" ) + cText := StrTran( cText, "*", "\*" ) + cText := StrTran( cText, "_", "\_" ) + cText := StrTran( cText, "{", "\{" ) + cText := StrTran( cText, "}", "\}" ) + cText := StrTran( cText, "[", "\[" ) + cText := StrTran( cText, "]", "\]" ) + cText := StrTran( cText, "(", "\(" ) + cText := StrTran( cText, ")", "\)" ) + cText := StrTran( cText, "#", "\#" ) + cText := StrTran( cText, "+", "\+" ) + cText := StrTran( cText, "-", "\-" ) + cText := StrTran( cText, ".", "\." ) + cText := StrTran( cText, "!", "\!" ) + + cText := StrTran( cText, "(c)", "©" ) + cText := StrTran( cText, "--", "\-\-" ) + + RETURN cText + STATIC PROCEDURE ShowHeader( hbmk ) LOCAL cTrsText LOCAL cTrsTextI - OutStd( "Harbour Make (" + _SELF_NAME_ + ") " + HBRawVersion() + _OUT_EOL +; - "Copyright (c) 1999-2013, Viktor Szakáts" + _OUT_EOL +; - "http://harbour-project.org/" + _OUT_EOL ) + LOCAL cURL := "http://harbour-project.org/" + + LOCAL cText := ; + "Harbour Make (" + _SELF_NAME_ + ") " + HBRawVersion() + _OUT_EOL +; + "Copyright (c) 1999-2013, Viktor Szakáts" + _OUT_EOL +; + "%1$s" + _OUT_EOL + + IF hbmk[ _HBMK_lMarkDown ] + hb_SetTermCP( "UTF8EX" ) /* UTF-8 output for MarkDown */ + cText := StrTran( ToMarkDown( cText ), _OUT_EOL, " " + _OUT_EOL ) + cURL := "<" + cURL + ">" + ENDIF + + OutStd( hb_StrFormat( cText, cURL ) ) IF !( hbmk[ _HBMK_cUILNG ] == "en" ) .AND. ; !( hbmk[ _HBMK_cUILNG ] == "en-GB" ) .AND. ; @@ -14716,7 +14765,11 @@ STATIC PROCEDURE ShowHeader( hbmk ) cTrsText := hb_i18n_gettext_noop( "Translation (%1$s): (add your name here)" ) cTrsTextI := I_( cTrsText ) IF !( cTrsText == cTrsTextI ) .AND. ! Empty( cTrsTextI ) - OutStd( hb_StrFormat( cTrsTextI, hbmk[ _HBMK_cUILNG ] ) + _OUT_EOL ) + cText := hb_StrFormat( cTrsTextI, hbmk[ _HBMK_cUILNG ] ) + _OUT_EOL + IF hbmk[ _HBMK_lMarkDown ] + cText := StrTran( ToMarkDown( cText ), _OUT_EOL, " " + _OUT_EOL ) + ENDIF + OutStd( cText ) ENDIF ENDIF @@ -14729,36 +14782,39 @@ STATIC FUNCTION HBRawVersion() STATIC PROCEDURE ShowHelp( hbmk, lFull, lLong ) - LOCAL aText_Basic := { ; + LOCAL aHdr_Opt := { ; I_( "Syntax:" ), ; "", ; hb_StrFormat( I_( " %1$s [options] [] " ), _SELF_NAME_ ), ; "", ; I_( "Options:" ) } - LOCAL aText_Supp := { ; + LOCAL aHdr_Supp := { ; "", ; - I_( "Supported values for each supported value:" ), ; - " - linux : gcc, clang, icc, watcom, sunpro, open64", ; - " - darwin : gcc, clang, icc", ; - " - win : mingw, msvc, clang, bcc, bcc64, watcom, icc, pocc, xcc,", ; - " mingw64, msvc64, msvcia64, iccia64, pocc64", ; - " - wce : mingwarm, mingw, msvcarm, poccarm", ; - " - os2 : gcc, gccomf, watcom", ; - " - dos : djgpp, watcom", ; - " - bsd : gcc, clang, pcc", ; - " - hpux : gcc", ; - " - beos : gcc", ; - " - qnx : gcc", ; - " - android : gcc, gccarm", ; - " - vxworks : gcc, diab", ; - " - symbian : gcc", ; - " - cygwin : gcc", ; - " - minix : gcc, clang, ack", ; - " - aix : gcc", ; - " - sunos : gcc, sunpro" } + I_( "Supported values for each supported value:" ) } - LOCAL aOpt_Basic := { ; + LOCAL aLst_Supp := { ; + NIL, ; + { "linux" , "gcc, clang, icc, watcom, sunpro, open64" }, ; + { "darwin" , "gcc, clang, icc" }, ; + { "win" , "mingw, msvc, clang, bcc, bcc64, watcom, icc, pocc, xcc, mingw64, msvc64, msvcia64, iccia64, pocc64" }, ; + { "wce" , "mingwarm, mingw, msvcarm, poccarm" }, ; + { "os2" , "gcc, gccomf, watcom" }, ; + { "dos" , "djgpp, watcom" }, ; + { "bsd" , "gcc, clang, pcc" }, ; + { "hpux" , "gcc" }, ; + { "beos" , "gcc" }, ; + { "qnx" , "gcc" }, ; + { "android" , "gcc, gccarm" }, ; + { "vxworks" , "gcc, diab" }, ; + { "symbian" , "gcc" }, ; + { "cygwin" , "gcc" }, ; + { "minix" , "gcc, clang, ack" }, ; + { "aix" , "gcc" }, ; + { "sunos" , "gcc, sunpro" } } + + LOCAL aLst_Opt_Basic := { ; + NIL, ; { "-o" , I_( "output file name" ) }, ; { "-l" , I_( "link with library. should be without path, extension and 'lib' prefix (unless part of libname). Do not add core Harbour libraries, they are automatically added as needed." ) }, ; { "-L" , I_( "additional path to search for libraries" ) }, ; @@ -14773,10 +14829,10 @@ STATIC PROCEDURE ShowHelp( hbmk, lFull, lLong ) { "-hbdynvm" , I_( "create dynamic library" ) }, ; { "-hbimplib" , I_( "create import library" ) }} - LOCAL aOpt_Help := { ; + LOCAL aLst_Opt_Help := { ; { "-help|--help" , I_( "long help" ) } } - LOCAL aOpt_Long := { ; + LOCAL aLst_Opt_Long := { ; NIL, ; { "-gui|-std" , I_( "create GUI/console executable" ) }, ; { "-main=" , I_( "override the name of starting function/procedure" ) }, ; @@ -14870,9 +14926,13 @@ STATIC PROCEDURE ShowHelp( hbmk, lFull, lLong ) NIL, ; { "-plugin=" , I_( "add plugin. can be: .hb, .prg, .hrb" ) }, ; { "-pi=" , I_( "pass input file to plugins" ) }, ; - { "-pflag=" , I_( "pass single flag to plugins" ) }, ; - NIL, ; - { "Options below are available on command line only:" }, ; + { "-pflag=" , I_( "pass single flag to plugins" ) } } + + LOCAL aHdr_Opt_LongCmd := { ; + "", ; + I_( "Options below are available on command line only:" ) } + + LOCAL aLst_Opt_LongCmd := { ; NIL, ; { "-target=