ow.format
ow.format.addNumberSeparator
ow.format.addNumberSeparator(aNumber, aSeparator) : String
Returns a formatted number with decimal separators (default is comma but you can provide a custom aSeparator).
(available after ow.loadFormat())
ow.format.bool
ow.format.bool(aBoolValue, isLight, anExtra) : String
Given aBoolValue will return a green checkmark or a red cross character. If necessary anExtra ansiColor attributes can be added.
ow.format.cron.howManyAgo
ow.format.cron.howManyAgo(aCron, lastUpdate, aLimit) : Map
Given aCron expression and a date/unix time of a lastUpdate will return a map with a boolean isDelayed, number of ms delayedAtLeast, if delayed howManyAgo executions missed and the corresponding missed executions dates in missedTimes. When calculating the missed times there is aLimit (defaults to 100).
ow.format.cron.isCronMatch
ow.format.cron.isCronMatch(aDate, aCronExpression) : boolean
Returns trues if the provided aDate is a match for the provided aCronExpression. Otherwise returns false.
ow.format.cron.nextScheduled
ow.format.cron.nextScheduled(expr, count, start, end) : Date
Given a cron expr returns the next Date object when it will occur. If count > 1 it will provide an array of Dates with the next n Dates. If start and end Date are defined they will limit the range on which to provide dates.
ow.format.cron.parse
ow.format.cron.parse(aCronExpression) : Map
Parses aCronExpression and produces a Map with a schedules array and a exceptions array (if any error is found). Each schedules array item map has a key with all the number possibilities for the given aCronExpression provided:
s - seconds (0-59)
m - minutes (0-59)
h - hours (0-23)
D - month day (1-31)
M - month (1-12)
d - week day (1-7)
Example:
ow.format.cron.parse("0 5 * * *"); // 5am
ow.format.cron.prevScheduled
ow.format.cron.prevScheduled(expr, count, start, end) : Date
Given a cron expr returns the previous Date object when it will occur. If count > 1 it will provide an array of Dates with the previous n Dates. If start and end Date are defined they will limit the range on which to provide dates.
ow.format.cron.set2LocalTime
ow.format.cron.set2LocalTime()
Sets the default system-wide cron expression evaluation to the local time (default is UTC).
ow.format.cron.set2UTC
ow.format.cron.set2UTC()
Sets the default system-wide cron expression evaluation to UTC (the default).
ow.format.cron.sleepUntilNext
ow.format.cron.sleepUntilNext(expr)
Sleeps until the cron expr is expected to be true.
ow.format.cron.timeUntilNext
ow.format.cron.timeUntilNext(expr) : Number
Returns a number of ms until the cron expr is expected to be true.
ow.format.dateDiff.inDays
ow.format.dateDiff.inDays(dateBefore, dateAfter, shouldRound) : Number
Difference between dateAfter and dateBefore in days. If shouldRound = true will round from the previous time unit.
ow.format.dateDiff.inHours
ow.format.dateDiff.inHours(dateBefore, dateAfter, shouldRound) : Number
Difference between dateAfter and dateBefore in hours. If shouldRound = true will round from the previous time unit.
ow.format.dateDiff.inMinutes
ow.format.dateDiff.inMinutes(dateBefore, dateAfter, shouldRound) : Number
Difference between dateAfter and dateBefore in minutes. If shouldRound = true will round from the previous time unit.
ow.format.dateDiff.inMonths
ow.format.dateDiff.inMonths(dateBefore, dateAfter) : Number
Difference between dateAfter and dateBefore in months.
ow.format.dateDiff.inSeconds
ow.format.dateDiff.inSeconds(dateBefore, dateAfter, shouldRound) : Number
Difference between dateAfter and dateBefore in seconds. If shouldRound = true will round from the previous time unit.
ow.format.dateDiff.inWeeks
ow.format.dateDiff.inWeeks(dateBefore, dateAfter, shouldRound) : Number
Difference between dateAfter and dateBefore in weeks. If shouldRound = true will round from the previous time unit.
ow.format.dateDiff.inYears
ow.format.dateDiff.inYears(dateBefore, dateAfter) : Number
Difference between dateAfter and dateBefore in years.
ow.format.dateTimeTransition
ow.format.dateTimeTransition(aZone, aDate) : Map
Given aZone (defaults to Europe/London) and aDate (defaults to now) will return a map with the previous and next date/time transition.
ow.format.dateTimeZones
ow.format.dateTimeZones() : Array
List all available Java zone ids.
ow.format.elapsedTime
ow.format.elapsedTime(aStartTime, aEndTime, aFormat) : String
Shortcut for ow.format.elapsedTime4ms calculating the absolute difference, in ms, between aStartTime and aEndTime.
ow.format.elapsedTime4ms
ow.format.elapsedTime4ms(aMs, aFormat) : String
Given aMs (milleseconds) will convert into a string with the corresponding human-readable time and date components up to years. This is usually helpful when comparing dates (see also ow.format.elapsedTime). You can control the output format by adding options to aFormat:
Example:
aFormat = {
full : false, // when true outputs everything even if it's 0 value
abrev: false, // when true outputs smaller "1h2m3s" instead of "1 hour, 2 minutes and 3 seconds"
pad : false, // when true pads values with 0 on the left
colon: false, // when true outputs just values separated by ":"
sep : ", ", // customizes the values separator, defaults to ", " or "" (in case of abrev = true)
maxLeft : 7, // the maximum number of time units to show counting from the left
maxRight: 7 // the maximum number of time units to show counting from the right
}
ow.format.escapeHTML
ow.format.escapeHTML(aString) : String
Will escape, and return, aString for HTML/XML special characters.
(available after ow.loadFormat())
ow.format.escapeHTML4
ow.format.escapeHTML4(aString) : String
Uses Apache Commons Lang escape HTML4 functionality to convert aString into HTML4 entities where needed.
ow.format.escapeRE
ow.format.escapeRE(aString) : String
Tries to escape in aString all characters that make up a RegExp.
ow.format.escapeString
ow.format.escapeString(aString, aExceptString) : String
Will escape, and return, aString for RegExp special characters with the exception of any characters in aExceptString.
(available after ow.loadFormat())
ow.format.fromBase16
ow.format.fromBase16(aString) : bytes
Given a base 16 aString transforms it back to the original array of bytes.
ow.format.fromBase32
ow.format.fromBase32(aString) : bytes
Given a base 32 aString transforms it back to the original array of bytes.
ow.format.fromBase36
ow.format.fromBase36(aString) : Number
Converts a provided base36 aString into the corresponding number.
ow.format.fromBinary
ow.format.fromBinary(aString) : Number
Converts a provided binary aString into the decimal number.
ow.format.fromByte
ow.format.fromByte(aByte) : Number
Converts a byte info a decimal number.
ow.format.fromBytesAbbreviation
ow.format.fromBytesAbbreviation(aStr, useDecimal) : Number
Tries to reverse the ow.format.toBytesAbbreviation from aStr (string) back to the original value in bytes. Use useDecimal=true to interpret KB as 1000 instead of 1024 (see more in https://en.wikipedia.org/wiki/Byte#Multiple-byte_units)
(available after ow.loadFormat())
ow.format.fromDate
ow.format.fromDate(aDate, aFormat, aTimeZone) : String
Will convert a javascript aDate into a String representation given aFormat:
G - Era descriptor (AD)
y - Year (1996; 96)
Y - Week year (2009; 09)
M - Month in year (July; Jul; 07)
w - Week in year (27)
W - Week in month (2)
D - Day in year (189)
d - Day in month (10)
F - Day of week in month (2)
E - Day name in week (Tuesday; Tue)
u - Day number of week (1 = Monday, ..., 7 = Sunday) (1)
a - Am/pm number (PM)
H - Hour in day (0-23)
k - Hour in day (1-24)
K - Hour in am/pm (0-11)
h - Hour in am/pm (1-12)
m - Minute in hour (30)
s - Second in minute (55)
S - Millisecond (978)
z - Time zone (Pacific Standard Time; PST; GMT-08:00)
Z - Time zone (-0800)
X - Time zone (-08; -0800; -08:00)
Optionally you can also provide aTimeZone (like 'America/New_York', 'Europe/London', 'UTC', ...)
(available after ow.loadFormat())
ow.format.fromHex
ow.format.fromHex(aString) : Number
Converts a provided hexadecimal aString into the decimal number.
ow.format.fromLDAPDate
ow.format.fromLDAPDate(aLDAPDate) : Date
Converts a numeric aLDAPDate (also known as Windows NT time format, Active Directory timestamps) into a javascript Date.
ow.format.fromOctal
ow.format.fromOctal(aString) : Number
Converts a provided octal aString into the decimal number.
ow.format.fromSIAbbreviation
ow.format.fromSIAbbreviation(aString) : Number
Converts the provided string using SI notationp prefix (do previously make the necessary conversions: 5mV -> 5m, 5cm -> 5c, 9km -> 9k) to the corresponding number. Uses the current approved SI prefix list (https://en.wikipedia.org/wiki/Metric_prefix)
ow.format.fromTimeAbbreviation
ow.format.fromTimeAbbreviation(aStr) : Number
From aStr time abbreviation (e.g. 1h2m3s (1 hour, 2 minutes and 3 seconds)) will return the corresponding amount of time in ms.
ow.format.fromUnixDate
ow.format.fromUnixDate(aUnixDate) : Date
Converts aUnixDate timestamp into a javascript Date.
ow.format.fromWedoDate
ow.format.fromWedoDate(aWedoDate, aFormat) : String
Shortcut for ow.format.fromDate but using a wedo date. See ow.format.fromDate for more help.
(available after ow.loadFormat())
ow.format.fromWedoDateToDate
ow.format.fromWedoDateToDate(aWedoDate) : Date
Returns a date object from a wedo date. (available after ow.loadFormat())
ow.format.getActualTime
ow.format.getActualTime(useAlternative) : Date
Retrieves the current actual time from worldtimeapi.org (through https). The current actual time will be returned in a Date. If useAlternative = true it will use worldclockapi.com (through http)
ow.format.getClasspath
ow.format.getClasspath() : String
Returns the current java classpath.
ow.format.getCurrentDirectory
ow.format.getCurrentDirectory() : String
Returns the current working directory.
ow.format.getDoH
ow.format.getDoH(aAddr, aType, aProvider) : Array
Performs a DNS over HTTPs query with aAddr. Optionally you can provide the aType of record (defaults to 'a') and the DNS over HTTPs aProvider between 'google' and 'cloudflare'.
ow.format.getHostAddress
ow.format.getHostAddress() : String
Returns the current host ip address.
ow.format.getHostName
ow.format.getHostName() : String
Returns the current hostname.
ow.format.getJavaHome
ow.format.getJavaHome() : String
Returns the current java home directory.
ow.format.getJavaVersion
ow.format.getJavaVersion() : String
Returns the current java version.
ow.format.getOS
ow.format.getOS() : String
Returns the current operating system identifier string.
ow.format.getOSArch
ow.format.getOSArch() : String
Returns the current operating system architecture string.
ow.format.getOSVersion
ow.format.getOSVersion() : String
Returns the current operating system version string.
ow.format.getPublicIP
ow.format.getPublicIP() : Map
Uses the functionality provided by http://ifconfig.co to return a map with the apparent current public ip address, public hostname and a guess of country and city. Please be aware of the request limits of the service (around 1 request per minute).
ow.format.getReverseDoH
ow.format.getReverseDoH(aIP, aProvider) : Array
Tries to retrieve the reverse DNS of aIP using DNS over HTTPs. Optionally you can choose the aProvider between 'google' and 'cloudflare'.
ow.format.getTLSCertificates
ow.format.getTLSCertificates(aHost, aPort, withJava, aPath, aPass, aSoTimeout) : Array
Tries to retreive the TLS certificates from aHost, aPort (defaults to 443). Optionally if withJava=true the original certificate Java object will also be included. If the CA certificates is in a different location you can provide aPath and the corresponding aPass. Additionally you can specificy aSoTimeout (socket timeout in ms) which defaults to 10s.
ow.format.getTmpDir
ow.format.getTmpDir() : String
Returns the current temporary directory.
ow.format.getUserHome
ow.format.getUserHome() : String
Returns the current user home path.
ow.format.getUserName
ow.format.getUserName() : String
Returns the current user name.
ow.format.int2IP
ow.format.int2IP(aIPInt) : String
Converts the decimal IP address representation aIPInt into an IP address.
ow.format.IP2Int
ow.format.IP2Int(aIP) : String
Converts an IP address into it's decimal IP address representation.
ow.format.isEmail
ow.format.isEmail(aEmail) : boolean
Tries to determine if aEmail seems a syntactic valid email.
ow.format.isHost
ow.format.isHost(aHost) : boolean
Tries to determine if aHost seems a syntactic valid host.
ow.format.isIPv4
ow.format.isIPv4(aIP) : boolean
Tries to determine if aIP is a syntactic valid IPv4.
ow.format.isIPv6
ow.format.isIPv6(aIP) : boolean
Tries to determine if aIP is a syntactic valid IPv6.
ow.format.isURL
ow.format.isURL(aURL) : boolean
Tries to determine if aURL seems a syntactic valid URL.
ow.format.isWedoDate
ow.format.isWedoDate(aWedoDate) : boolean
Determines if the aWedoDate object is a wedo date type (returns true if yes, false otherwise).
(available after ow.loadFormat())
ow.format.isWindows
ow.format.isWindows() : Boolean
Returns true if the operating system is identified as Windows otherwise returns false.
ow.format.logErrWithFooter
ow.format.logErrWithFooter(aMessage, aFooter)
Equivalent to ow.format.printWithFooter (see help ow.format.printWithFooter) using the logErr function.
ow.format.logErrWithProgressFooter
ow.format.logErrWithProgressFooter(aMessage, aTemplate, aPerc, aSize, aUnixBlock, aWindowsBlock, aSpace)
Equivalent to ow.format.printWithProgressFooter (see help ow.format.printWithProgressFooter) using the logErr function.
ow.format.logWarnWithFooter
ow.format.logWarnWithFooter(aMessage, aFooter)
Equivalent to ow.format.printWithFooter (see help ow.format.printWithFooter) using the logWarn function.
ow.format.logWarnWithProgressFooter
ow.format.logWarnWithProgressFooter(aMessage, aTemplate, aPerc, aSize, aUnixBlock, aWindowsBlock, aSpace)
Equivalent to ow.format.printWithProgressFooter (see help ow.format.printWithProgressFooter) using the logWarn function.
ow.format.logWithFooter
ow.format.logWithFooter(aMessage, aFooter)
Equivalent to ow.format.printWithFooter (see help ow.format.printWithFooter) using the log function.
ow.format.logWithProgressFooter
ow.format.logWithProgressFooter(aMessage, aTemplate, aPerc, aSize, aUnixBlock, aWindowsBlock, aSpace)
Equivalent to ow.format.printWithProgressFooter (see help ow.format.printWithProgressFooter) using the log function.
ow.format.logWithWaiting
ow.format.logWithWaiting(aMainFunc, aPrefixMsg, aCompleteMsg, aErrorMsg, aWaitSpeed, aTheme)
Executes aMainFunc while log aPrefixMsg with a waiting aTheme (defaults to a sequence of chars with a rotating bar). When aMainFunc ends it will replace the log with aCompleteMsg or aErrorMsg in case an exception is thrown. Optionally you can provide a different aWaitSpeed while cycling between the aTheme sequence of chars increasing/decreasing the "animation" effect.
ow.format.percentile
ow.format.percentile(aArray, aPercentile) : Number
Will return the percentile (aPercentile between 0 and 1) for the provided aArray of numbers.
ow.format.percProgressReport
ow.format.percProgressReport(aMainFunc, aProgressFunc, aTimeout)
Percentage progress report help function over a function on aMainFunc calling aProgressFunc in parallel with a percentage function parameter (receiving target and source numbers). You can also provide an alternative aTimeout between aProgressFunc calls (defaults to 150ms).
Example:
ow.format.percProgressReport(() => {
ioStreamCopy(io.writeFileStream("target.file"), io.readFileStream("source.file"));
}, (percFunc) => {
var perc = percFunc(io.fileInfo("target.file").size, io.fileInfo("source.file").size);
...
});
ow.format.printWithFooter
ow.format.printWithFooter(aMessage, aFooter)
Prints aMessage (if defined) with a aTemplate (template compiled function or string).
ow.format.printWithProgressFooter
ow.format.printWithProgressFooter(aMessage, aTemplate, aPerc, aSize, aUnixBlock, aWindowsBlock, aSpace)
Prints aMessage (if defined) with a aTemplate (template compiled function or string) as a footer for percentage progress information with the percentage value aPerc, for a given optional aSize (defaults to 50), an optional aUnixBlock or aWindowsBlock (depending on the current operating system) and aSpace. Example:
ow.loadTemplate();
var fn = ow.template.execCompiled(ow.template.compile("(%) progress: ||"));
ow.format.printWithProgressFooter("processing xyz...", fn, aPerc);
ow.format.printWithFooter("Done.", "");
ow.format.printWithWaiting
ow.format.printWithWaiting(aMainFunc, aPrefixMsg, aCompleteMsg, aErrorMsg, aWaitSpeed, aTheme, printNLFn, useAsSuffix)
Executes aMainFunc while priting aPrefixMsg with a waiting aTheme (defaults to a sequence of chars with a rotating bar). When aMainFunc ends it will replace the priting with aCompleteMsg or aErrorMsg in case an exception is thrown. Optionally you can provide a different aWaitSpeed while cycling between the aTheme sequence of chars increasing/decreasing the "animation" effect.
ow.format.progressReport
ow.format.progressReport(aMainFunc, aProgressFunc, aTimeout)
Executes aMainFunc to execute some synchronous function while aProgressFunc is called asynchronously to keep track of progress. You can also provide an alternative aTimeout between aProgressFunc calls (defaults to 150ms).
ow.format.round
ow.format.round(aNumber, aDigits) : String
Will return aNumber rounded to 0 decimal digits or aDigits decimal digits.
(available after ow.loadFormat())
ow.format.semver
ow.format.semver(aVersion) : ow.format.semver
Creates a new instance of ow.format.semver for the provided aVersion:
- nextMajor
- nextMinor
- nextPatch
- getMajor
- getMinor
- getPatch
- greater(aVersion)
- lower(aVersion)
- greaterEquals(aVersion)
- lowerEquals(aVersion)
- equals(aVersion)
ow.format.sortSemanticVersions
ow.format.sortSemanticVersions(aArray) : Array
Will sort the provided aArray of semantic versions (e.g. 1.0.0, 1.0.1, 1.1.0, 2.0.0, ...)
(available after ow.loadFormat())
ow.format.sqlFormat
ow.format.sqlFormat(aSQL, aMap) : String
Will format aSQL using the sql-formatter library. Optionally you can provide aMap with the following options:
- indent: the indentation string (defaults to " ")
- uppercase: if true will uppercase the SQL (defaults to false)
- linesBetweenQueries: number of lines between queries (defaults to 1)
- maxColumnLength: maximum column length (defaults to 50)
- skipWhitespaceNearBlockParentheses: if true will whitespace near block parentheses (defaults to false)
- language: the SQL language dialect (defaults to "StandardSql")
The language can be one of the following:
- Db2
- MariaDb
- MySql
- N1ql
- PlSql
- PostgreSql
- Redshift
- SparkSql
- StandardSql
- TSql
ow.format.sshProgress
ow.format.sshProgress(aFn) : Object
Returns a SSH Java progress monitor callback object to be use with the SSH plugin functions. Expects callback aFn that will be called with state (e.g. begin, count, end) and an Info map. The Info map is composed of: source - the reported source of the transfer
target - the reported target of the transfer
op - the operation being performed (get or put)
start - reported unix epoch when the transfer started
end - reported unix epoch when the transfer stopped
count - the last reported byte count
speed - the calculated speed of transfer
If the returned value is false the transfer will be cancelled.
ow.format.streamHandle
ow.format.streamHandle(aHandle, inHandle, errHandle, outHandle, bufferSize) : Function
Returns a function to help automated interaction with a running process. The function aHandle receives: aType (in/err); aTxt, inHandle (function), errHandle (function) and an outHandle (function). Optionally you can provide an alternative inHandle function to print stdout text, an errHandle function to print stderr text, an outHandle function to send text to stdin and/or a non default bufferSize.
Example:
var res = $sh("myProcess.sh --something")
.cb(expect((aType, aTxt, inHandle, errHandle, outHandle) => {
if (aType == "in") {
inHandle(aTxt)
if (/ name\?/.test(aTxt)) return outHandle("Scott\n")
if (aTxt.indexOf("Anything else?") >= 0) return outHandle("nope!\n")
}
}))
.get(0)
ow.format.streamSH
ow.format.streamSH(aFunction, anEncoding) : Function
To be used with sh, af.sh or ssh.exec as the callbackFunc. Returns a function that will call aFunction for each line and used the returned string with print and printErr.
ow.format.streamSHLog
ow.format.streamSHLog(aFunction) : Function
To be used with sh, af.sh or ssh.exec as the callbackFunc. Returns a function that will call aFunction for each line and used the returned string with log and logErr.
ow.format.streamSHPrefix
ow.format.streamSHPrefix(aPrefix, anEncoding, aSeparator, aTemplate, aFnHandler, infoFn, errorFn) : Function
To be used with sh, af.sh or ssh.exec as the callbackFunc. Returns a function that will prefix each line with aPrefix and used the returned string with print and printErr. Optionally you can provide aTemplate to add "prefix" (defaults to "[]") and/or provide aFnHandler to chain another streaming handling function (receives a stream and a boolean to indicate if its stdout or stderr). It's also possible to provide a infoFn and errorFn to handle the output. If infoFn or errorFn are not provided they will default to print and printErr or to log and logErr if __flags.SH.prefixLog is true.
ow.format.string.ansiMoveDown
ow.format.string.ansiMoveDown(nLines)
Moves the cursor nLines down.
ow.format.string.ansiMoveLeft
ow.format.string.ansiMoveLeft(nChars)
Moves the cursor left chars.
ow.format.string.ansiMoveRight
ow.format.string.ansiMoveRight(nChars)
Moves the cursor right chars.
ow.format.string.ansiMoveUp
ow.format.string.ansiMoveUp(nLines)
Moves the cursor nLines up.
ow.format.string.ansiScrollDown
ow.format.string.ansiScrollDown(nLines)
Scrolls the screen down by nLines.
ow.format.string.ansiScrollUp
ow.format.string.ansiScrollUp(nLines)
Scrolls the screen up by nLines.
ow.format.string.bestPrefix
ow.format.string.bestPrefix(aString, anArrayOfStrings) : aString
Given anArrayOfStrings will try to find the best prefix string on that array for the provided aString. See ow.format.string.closest if you don't want to be based on the prefix.
Example:
var anArrayOfStrings = [ "/user", "/use", "/username", "/u" ];
ow.format.string.bestPrefix("/user/1", anArrayOfStrings); // Returns /user
ow.format.string.bestPrefix("/u1", anArrayOfStrings); // Returns /u
ow.format.string.bestPrefix("/userna", anArrayOfStrings); // Returns /user
ow.format.string.bool
ow.format.string.bool(aBoolValue, isLight, anExtra) : String
Given aBoolValue will return a green checkmark or a red cross character. If necessary anExtra ansiColor attributes can be added.
ow.format.string.chart
ow.format.string.chart(aName, aDataPoint, aHSIze, aVSize, aMin, aMax, aTheme) : String
Given data aName will store, between calls, aDataPoint provided to plot a chart with a horizontal aHSize and a vertical aVSize. Optionally aMin value and aMax value can be provided. aTheme can optionally also be provided containing the map entries space (char), bar (char), point (char), vertical (boolean) and axis (boolean)
ow.format.string.closest
ow.format.string.closest(aString, anArrayOfStrings, aThreshold) : aString
Given anArrayOfStrings will try to find the closest string on that array for the provided aString. If aThreshold is not provided a default value of 3 will be used. See ow.format.string.bestPrefix if you want to be based on the prefix.
Example:
var anArrayOfStrings = [ "/user", "/use", "/username", "/u" ];
ow.format.string.closest("/user/1", anArrayOfStrings); // Returns /user
ow.format.string.closest("/u1", anArrayOfStrings); // Returns /u
ow.format.string.closest("/userna", anArrayOfStrings); // Returns /user
ow.format.string.closest("/usernam", anArrayOfStrings); // Returns /username
ow.format.string.dataClean
ow.format.string.dataClean(aName)
Given aName for data points entered using ow.format.string.chart and ow.format.string.dataLineChart will effectively delete all cached data. If aName is not provided it will eliminate of cached data.
ow.format.string.dataLineChart
ow.format.string.dataLineChart(aName, aDataPoint, aHSIze, aVSize, aOptions) : String
Given data aName will store, between calls, aDataPoint (number or array of numbers) provided to plot a line chart with a horizontal aHSize and a vertical aVSize. Optionally aOptions, equivalent to ow.format.string.lineChart options, can optionally also be provided.
ow.format.string.distance
ow.format.string.distance(aStringA, aStringB, maxOffset) : Number
Calculates the distance between aStringA and aStringB into the number of inserts, deletions and updates needed. If the maxOffset is not provided a value of 5 maximum characters difference will be used. (Currently based on Sift4)
ow.format.string.genPass
ow.format.string.genPass(aSize, aSets, aExclude, aWeights) : String
Tries to generate a random password with aSize (defaults to 12) optionally given an array of aSets (between lowercase, uppercase, numbers, symbols and symbols2) and also aExclude a string of characters given an optional percentage of aWeights probability for each aSets.
ow.format.string.getAstralCodePoint
ow.format.string.getAstralCodePoint(aHighSurrogate, aLowSurrogate) : Number
Given a 8-bit aHighSurrogate code and a 8-bit aLowSurogate code returns a 16-bit unicode code
ow.format.string.getSurrogatePair
ow.format.string.getSurrogatePair(astralCodePoint) : Array
Returns an array of two 8 bit codes given an unicode astralCodePoint of 16 bits
ow.format.string.grid
ow.format.string.grid(aMatrix, aX, aY, aBgPattern, shouldReturn) : String
Will generate a aX per aY grid to be displayed with aBgPattern (defaults to " "). Each grid cell with use the contents on aMatrix array of an array. Each cell content can be a map with obj (a Map), a xspan/yspan for in cell spacing, a type (either map, table, chart, area, bar, func or string) and a title. If shouldReturn = true it will just return the string content instead of trying to print it.
Extra options per type:
chart: the 'obj' check printChart format string
bar : the 'obj' check printBar format stirng; 'max'; 'min'; 'indicator'; 'space'
ow.format.string.leftPad
ow.format.string.leftPad(aString, length, padExpression) : String
Using a padExpression will left pad aString for the given length.
ow.format.string.lineChart
ow.format.string.lineChart(aSeries, aOptions) : String
Given an array of values (1 series) or an array of arrays of values (multiple series) will plot a line chart in ascii, with the provided aOptions, a return the corresponding string. Available options:
min (number) The minimum value to use in the chart
max (number) The maximum value to use in the chart
height (number) The line chart lines height to use
width (number) The maxium width of the line chart
colors (array) Array of color names to use for each series
label (boolean) Boolean value to indicate if y labels should be included (default true)
format (function) Custom functions that receives a value and returns a formatted string for labels
dColor (string) The default color to use
offset (number) The offset to assume (default 2)
padding (string) The chart padding string (default "")
fixed (number) If no custom format function is provided will be the fixed decimals to use (default 2)
symbols (array) An array of 10 characters to replace the default symbols
ow.format.string.lineChartLegend
ow.format.string.lineChartLegend(titles, options) : Array
Given an array of titles and the options provided to ow.format.string.lineChart will return an array with each "symbol" and color used for each series and the corresponding "title".
ow.format.string.lsHash
ow.format.string.lsHash(aStringA, aStringB, dontCareDiffSize) : String
Generates a locality sensitive hash for aStringA. If aStringB is provided it will compute the hash difference between aStringA and aStringB returning a number (if 0 means the strings are almost identical; if 200 or higher means the strings are very different). Optionally you can indicate that the difference should care about differences in size dontCareDiffSize = true. This is based on https://github.com/trendmicro/tlsh/blob/master/js_ext.
Note: A aStringA and aStringB should be, at least, 512 characters long and have enough randomness to generate a proper hash.
ow.format.string.lsHashDiff
ow.format.string.lsHashDiff(aHashA, aHashB, dontCareDiffSize) : String
From a previously created, with ow.format.string.lsHash, aHashA and aHashB will calculate the difference between them returning a number (if 0 means the strings are almost identical; if 200 or higher means the strings are very different). Optionally you can indicate that the difference should care about differences in size dontCareDiffSize = true. This is based on https://github.com/trendmicro/tlsh/blob/master/js_ext.
ow.format.string.nLinesTemplate
ow.format.string.nLinesTemplate(aSourceTemplate, initMap, alternativeTemplate, alternativePrintFunction) : Function
Returns a function to print multiple lines at the same time (using ansi cursor up). The function accepts a map parameter since it's based on the aSourceTemplate (handlebars). The initial render is performed using initMap. If ansi support is not available and if alternativeTemplate is defined (and different of "" otherwise it defaults to aSourceTemplate) it will use it as alternative. Optionally it's also possible to define a different print function (alternativePrintFunction) to print (like log, for example).
ow.format.string.pauseString
ow.format.string.pauseString(aString, aMsg)
Given aString starts an interactive paging of the contents of aString. Optionally aMsg can be provided to be displayed with the paging percentage (use \ to be replaced by the percentage).
ow.format.string.printable
ow.format.string.printable(aByteArray, aDefaultChar) : String
Tries to convert aByteArray into a printable string. If aDefaultChar to replace the non-printable characters is not provided it will default to ".".
ow.format.string.progress
ow.format.string.progress(aNumericValue, aMax, aMin, aSize, aIndicator, aSpace) : String
Outputs an in-line progress bar given aNumericValue, aMax value, aMin value, the aSize of the bar and the aIndicator to use. If not provided, aMax defaults to aValue, aMin defaults to 0, aSize defaults to the current screen width (or 5 if if can be determined), aIndicator defaults to "#" and aSpace defaults to " ". If aSize is a negative value and it's possible to determine the current screen width it will subtract to the screen width. Example:
loadLodash(); ow.loadFormat();
var arr = [-30, -25, -10, 0, 3, 5], max = _.max(arr), min = _.min(arr);
for(let i in arr) {
print(ow.format.string.progress(arr[i], max, min, 5, '-'));
}
ow.format.string.renderLines
ow.format.string.renderLines(aMatrix, numberOfLines, aWidth, aBgPattern, shouldReturn) : String
Tries to render a string grid (if shouldReturn = true won't print it but jsut return it) for a specific aWidth for a numberOfLines with aBgPattern background pattern (defaults to " ") with aMatrix contents (divided by "\n").
ow.format.string.rightPad
ow.format.string.rightPad(aString, length, padExpression) : String
Using a padExpression will right pad aString for the given length.
ow.format.string.separatorsToUnix
ow.format.string.separatorsToUnix(aFilenamePath) : String
Tries to convert the provided aFilenamePath into a path with unix folder separators.
ow.format.string.separatorsToWindows
ow.format.string.separatorsToWindows(aFilenamePath) : String
Tries to convert the provided aFilenamePath into a path with windows folder separators.
ow.format.string.tabExpand
ow.format.string.tabExpand(aStr, aTabSize) : String
Given an input aStr and, optionally, aTabSize will expand the tabs in the string to the provided aTabSize ( similar to the unix expand command). If aTabSize is not provided it will default to 8.
ow.format.string.toHex
ow.format.string.toHex(aByteArray, aSeparator) : String
Tries to convert aByteArray into a string of hex values separated by aSeparator (defaults to " ").
ow.format.string.toHexArray
ow.format.string.toHexArray(aByteArray, perLine) : String
Returns an array with the ow.format.string.toHex of aByteArray and ow.format.string.printable with a maximum of perLine (defaults to 30) characters per array element.
ow.format.string.unicode
ow.format.string.unicode(aCodeNumber) : String
Given a unicode aCodeNumber (8 or 16 bits) will convert to the necessary sequence of 8 bit. For example: ow.format.string.unicode(0x1F37A)
ow.format.string.updateLine
ow.format.string.updateLine(aPrintNLFn) : Function
Facilitates updating a message in the same line without entering new-lines. It will use the aPrintNLFn (if not defined uses printnl). Returns an object with two functions: line(aMessage) and end(). The function line() should be called to change the current line message. On the end calling the function end() will clean-up a return the cursor to the beginning of the line.
ow.format.string.wildcardRE
ow.format.string.wildcardRE(aPattern, caseSensitive) : RegExp
Given aPattern using '*' wildcards (to match zero or more characters) or '?' question-mark to match a single character will return the corresponding RegExp. Optionally if caseSensitive=true the RegExp will include case sensitive option.
ow.format.string.wildcardTest
ow.format.string.wildcardTest(aString, aPattern, caseSensitive) : Boolean
Given aString will try to apply aPattern using '*' wildcards (to match zero or more characters) or '?' question-mark to match a single character. Will return true if the aPattern can be applied to aString. Optionally if caseSensitive=true the pattern will be tested with case sensitive.
ow.format.string.wordWrap
ow.format.string.wordWrap(aString, maxWidth, newLineSeparator, tabDefault) : String
Given aString word wraps the text on it given the maxWidth length per line. Optionally you can provide a newLineSeparator otherwise '\n' will be used. Optionally tabDefault determines how many spaces a tab represents (default 4) (available after ow.loadFormat())
ow.format.string.wordWrapArray
ow.format.string.wordWrapArray(anArray, maxTableSize, sepLen, sepFunc, useIndex) : Array
Given anArray of maps will return an array suitable to use with printTable for a maxTableSize, a separator length (sepLen (which defaults to 1)) and an optional line separator function (sepFunc that receives the max length of a column). Word-wrap is achieved by creating new map array entries whenever the calculated max size of each line with sepLen is achieved. The boolean flag useIndex changes the result to a map with lines and idx (array of the positions on the lines array that are a new anArray entry). Example of usage:
__initializeCon()
var maxS = __con.getTerminal().getWidth()
print(printTable(ow.format.string.wordWrapArray(io.listFiles("js").files, maxS, 1, s => ansiColor("FAINT", repeat(s, "-"))), maxS))
ow.format.testHost
ow.format.testHost(aAddress, aTimeout) : Map
Uses the java implementation (e.g. usually ICMP ping) for testing reachability to an aAddress. It timeouts after aTimeout (defaults to 4000ms). Returns a map with the "time" spent trying to get an answer from aAddress and a boolean "reachable" with the result.
ow.format.testPort
ow.format.testPort(aAddress, aPort, aCustomTimeout) : boolean
Tries to connect to aPort (e.g. 1234) on aAddress (e.g. 1.2.3.4). If the connection is successfull it will disconnect and return true, otherwise it will return false. If aCustomTimeout (in ms) is defined, it will use that value as the timeout instead of the 1,5 seconds by default.
ow.format.testPortLatency
ow.format.testPortLatency(aHost, aPort, aCustomTimeout) : Number
Test establishing a TCP socket connection with aHost on aPort. Optionally aCustomTimeout can be provided (defaults to 60000 ms). The test will be timed and the time in ms will be returned. If returned a time < 0 then an error occurred or the host:port couldn't be reached.
ow.format.testPublicPort
ow.format.testPublicPort(aPort) : Map
Uses the functionality provided by http://ifconfig.co to return a map with the result of testing if aPort is within public reach from your apparent current public ip address. Please be aware of the request limits of the service (around 1 request per minute).
ow.format.testURLLatency
ow.format.testURLLatency(aURL, aCustomTimeout) : Number
Test sending a HTTP(s) GET to aURL. Optionally aCustomTimeout can be provided. The test will be timed and the time in ms will be returned. If returned a time < 0 then an error occurred or the host:port couldn't be reached.
ow.format.timeago
ow.format.timeago(aDate, isAbv) : String
Will output how much time ago aDate is (e.g. 2 years ago, 30 minutes ago, etc...).
Optionally isAbv = true for abbreviated output. (available after ow.loadFormat())
ow.format.toAbbreviation
ow.format.toAbbreviation(aNumber, aDigits) : String
Returns a number abbreviation to "k", "m", "b", "t". Will round number to 2 decimals if aDigits doesn't provide a different decimal digits to round to.
(available after ow.loadFormat())
ow.format.toBase16
ow.format.toBase16(aString) : String
Given aString or array of bytes transforms the contents to base 16.
ow.format.toBase32
ow.format.toBase32(aString) : String
Given aString or array of bytes transforms the contents to base 32.
ow.format.toBase36
ow.format.toBase36(aNumber, aLength) : String
Converts a provided aNumber to the base36 representation. Optionally you can provide a length for 0 left pad.
ow.format.toBinary
ow.format.toBinary(aNumber, aLength) : String
Converts a provided aNumber to the binary representation. Optionally you can provide a length for 0 left pad.
ow.format.toBytesAbbreviation
ow.format.toBytesAbbreviation(aNumber, aDigits) : String
Returns a number abbreviation to "bytes", "KB", "MB", "GB", "TB", etc. Will round number to 3 significant digits if aDigits doesn't provide a different number of precision digits to convert to.
(available after ow.loadFormat())
ow.format.toCSLON
ow.format.toCSLON(aObj, cTheme) : String
Equivalent to ow.fornat.toSLON but includes ansi color.
ow.format.toDate
ow.format.toDate(aStringDate, aFormat, aTimeZone) : Date
Will convert aStringDate into a javascript Date given aFormat:
G - Era descriptor (AD)
y - Year (1996; 96)
Y - Week year (2009; 09)
M - Month in year (July; Jul; 07)
w - Week in year (27)
W - Week in month (2)
D - Day in year (189)
d - Day in month (10)
F - Day of week in month (2)
E - Day name in week (Tuesday; Tue)
u - Day number of week (1 = Monday, ..., 7 = Sunday) (1)
a - Am/pm number (PM)
H - Hour in day (0-23)
k - Hour in day (1-24)
K - Hour in am/pm (0-11)
h - Hour in am/pm (1-12)
m - Minute in hour (30)
s - Second in minute (55)
S - Millisecond (978)
z - Time zone (Pacific Standard Time; PST; GMT-08:00)
Z - Time zone (-0800)
X - Time zone (-08; -0800; -08:00)
Optionally you can also provide the original aTimeZone (like 'America/New_York', 'Europe/London', 'UTC', ...)
(available after ow.loadFormat())
ow.format.toHex
ow.format.toHex(aNumber, aLength) : String
Converts a provided aNumber to the hexadecimal representation. Optionally you can provide a length for 0 left pad.
ow.format.toLDAPDate
ow.format.toLDAPDate(aDate) : Number
Converts a javascript Date into a LDAP date (also known as Windows NT time format, Active Directory timestamps)
ow.format.toOctal
ow.format.toOctal(aNumber, aLength) : String
Converts a provided aNumber to the octal representation. Optionally you can provide a length for 0 left pad.
ow.format.toSLON
ow.format.toSLON(aObj, cTheme) : String
Stringifies aObj into a Single Line Object Notation using a default scheme for human readability or a custom cTheme map composed of:
startMap "("
sepMap ", "
endMap ")"
sepKV ": "
startArr "["
sepArr " | "
endArr "]"
strQuote "'"
ow.format.toUnixDate
ow.format.toUnixDate(aDate) : Number
Returns a unix timestamp from the provided javascript aDate.
ow.format.toWedoDate
ow.format.toWedoDate(aStringDate, aFormat) : Map
Shortcut for using ow.format.toDate but converting the output into a wedo date.
(available after ow.loadFormat())
ow.format.transposeArrayLines
ow.format.transposeArrayLines(anLineArray) : Array
Given anLineArray transposes into a new array of lines.
ow.format.unescapeHTML4
ow.format.unescapeHTML4(aString) : String
Uses Apache Commons Lang unescape HTML4 functionality to unconvert aString with HTML4 entities to the original string
ow.format.withMD
ow.format.withMD(aString, defaultAnsi) : String
Use aString with simple markdown and convert it to ANSI. Optionally you can add a defaultAnsi string to return back after applying the ansi styles for markdown (use ansiColor function to provide the defaultAnsi). Currently supports only: bold, italic, tables, simple code blocks, line rule, bullets, numbered lines, links and blocks.
ow.format.withSideLine
ow.format.withSideLine(aString, aSize, ansiLine, ansiText, aTheme, aExtra) : String
Generates a ansi escaped line with a "left side line" to display aString which will be word-wrap given aSize (default to the current console size). Optionally ansi colors for ansiLine and ansiText can be provided (see ansiColor for possible values) and aTheme (using ow.format.withSideLineThemes, for example). For closed rectangle themes aExtra map can include a header, footer, headerAlign ( left or right or center) and footerAlign (left or right or center).
ow.format.xls.autoFilter
ow.format.xls.autoFilter(aXLS, aXLSSheet, aRange)
Applies a auto filter on the provided aXLS and aXLSSheet object (from XLS.getSheet) to aRange.
Example:
ow.format.xls.autoFilter(sheet, "A1:D1");
ow.format.xls.getStyle
ow.format.xls.getStyle(aXLS, aStyleMap)
Creates a cell styler object, for the aXLS object (XLS plugin object instance), given the provided aStyleMap. The aStyleMap can have the following keys to define a style:
- bold (boolean)
- italic (boolean)
- underline (boolean)
- strikeout (boolean)
- fontPoints (number)
- fontName (string)
- fontColor (string)
- wrapText (boolean)
- shrinkToFit (boolean)
- backgroundColor (string)
- foregroundColor (string)
- borderBottom (string)
- borderLeft (string)
- borderRight (string)
- borderTop (string)
- borderBottom (string)
- borderLeftColor (string)
- borderRightColor (string)
- borderTopColor (string)
- borderBottomColor (string)
- rotation (number)
- indention (number)
- valign ("top", "bottom", "center", "justify")
- align ("center", "centerSelection", "fill", "general", "justify", "left", "right")
Color names:\
aqua,auto,black,blue,blue_grey,bright_green,brown,coral,cornflower_blue,dark_blue,dark_green,dark_red,dark_teal, dark_yellow,gold,green,grey25,grey40,grey50,grey80,indigo,lavender,lemon_chiffon,light_blue,light_cornflower_blue, light_green,light_orange,light_turquoise,light_yellow,lime,maroon,olive_green,orange,orchid,pale_blue,pink,plum, red,rose,royal_blue,sea_green,sky_blue,tan,teal,turquoise,violet,white,yellow
Border names:
dash_dot,dash_dot_dot,dashed,dotted,double,hair,medium,medium_dash_dot,medium_dash_dot_dot,medium_dashed,none, slanted_dash_dot,thick,thin
Fill patterns:
solid_foreground
ow.format.xls.setTable
ow.format.xls.setTable(aXLS, aSheet, aColumn, aRow, anArray, shouldAutoFilter, headerStyle, linesStyle)
Shortcut for xls.setTable that given aXLS object, a corresponding aSheet object will try to set the contents of anArray of maps starting in aColumn and aRow performing auto size for all columns. If shouldAutoFilter = true is will also add an autofilter to all columns. It's possible also to customize the headerStyle and linesStyle.