mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
57 lines
2.7 KiB
OpenEdge ABL
57 lines
2.7 KiB
OpenEdge ABL
|
|
/*------------------------------------------------------------------------
|
|
File : Util.cls
|
|
Description : Utility class for various methods that do not fit neatly into
|
|
existing class structures.
|
|
Author(s) : Abe Voelker
|
|
Created : Sat Jun 26 16:05:14 CDT 2010
|
|
Notes :
|
|
----------------------------------------------------------------------*/
|
|
|
|
USING Progress.Lang.*.
|
|
|
|
|
|
CLASS email.Util USE-WIDGET-POOL FINAL:
|
|
|
|
DEFINE PRIVATE STATIC VARIABLE cMonthMap AS CHARACTER EXTENT 12 INITIAL
|
|
["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"].
|
|
|
|
/* Converts ABL DateTime-TZ default string format (07/21/2010 21:16:47.141-05:00) */
|
|
/* to Email standard format (21 Jul 2010 21:16:47 -0500) */
|
|
METHOD PUBLIC STATIC CHARACTER ABLDateTimeToEmail(INPUT ipdttzDateTime AS DATETIME-TZ):
|
|
RETURN STRING(DAY(ipdttzDateTime)) + " " + cMonthMap[MONTH(ipdttzDateTime)] + " " +
|
|
STRING(YEAR(ipdttzDateTime)) + " " +
|
|
STRING( INTEGER( TRUNCATE( MTIME( ipdttzDateTime ) / 1000, 0 ) ), "HH:MM:SS" ) + " " +
|
|
ABLTimeZoneToString(TIMEZONE(ipdttzDateTime)).
|
|
END METHOD.
|
|
|
|
METHOD PUBLIC STATIC CHARACTER ABLDateTimeToEmail(INPUT ipdtDateTime AS DATETIME):
|
|
RETURN ABLDateTimeToEmail(DATETIME-TZ(ipdtDateTime)). /* Time zone will be session value */
|
|
END METHOD.
|
|
|
|
/* Note: ABL MODULO function returns incorrect values for negative numbers! */
|
|
METHOD PUBLIC STATIC CHARACTER ABLTimeZoneToString(INPUT ipiTimeZone AS INTEGER):
|
|
RETURN STRING(TRUNCATE(ipiTimeZone / 60, 0), "-99") + STRING(ABSOLUTE(ipiTimeZone) MODULO 60, "99").
|
|
END METHOD.
|
|
|
|
/* Converts input plain text into base64-encoded, email-standard width string data */
|
|
METHOD PUBLIC STATIC LONGCHAR ConvertDataToBase64(INPUT iplcNonEncodedData AS LONGCHAR):
|
|
DEFINE VARIABLE lcPreBase64Data AS LONGCHAR NO-UNDO.
|
|
DEFINE VARIABLE lcPostBase64Data AS LONGCHAR NO-UNDO.
|
|
DEFINE VARIABLE mptrPostBase64Data AS MEMPTR NO-UNDO.
|
|
DEFINE VARIABLE i AS INTEGER NO-UNDO.
|
|
|
|
/* Read file into MEMPTR and convert it to base-64 */
|
|
COPY-LOB FROM OBJECT iplcNonEncodedData TO mptrPostBase64Data.
|
|
lcPreBase64Data = BASE64-ENCODE(mptrPostBase64Data).
|
|
SET-SIZE(mptrPostBase64Data) = 0. /* Free memory */
|
|
|
|
/* Convert base-64 data into 77-char width lines (for email standard) */
|
|
DO i=1 TO LENGTH(lcPreBase64Data) BY 77:
|
|
ASSIGN lcPostBase64Data = lcPostBase64Data + SUBSTRING(lcPreBase64Data, i, 77) + CHR(13) + CHR(10).
|
|
END.
|
|
|
|
RETURN lcPostBase64Data.
|
|
END METHOD.
|
|
|
|
END CLASS. |