-
Notifications
You must be signed in to change notification settings - Fork 19
Functions
Sometimes you might need a variable value just slightly modified. For such cases, you can use a couple of functions on variables (feel free to suggest more). They are used like this: {variablename:function:argument1:argument2}
Name | Description | Version Required |
---|---|---|
directory | Extracts the directory name of an URL/file path | 1.1 |
empty | Returns an empty string always | 1.1 |
ext | Extracts the file extension (without dot) of an URL/file path | 1.1 |
filename | Returns the file name (with extension) from a file path | 1.1 |
formatfilesize | Nicely formats a file size (given in bytes) | 1.1 |
ifempty | Uses the value of another variable (first argument) if the resolved variable content is empty. | 1.8.5 |
ifemptythenerror | Throw an error if the variable is empty. | 1.8.6b1 |
multireplace | Replaces multiple subjects within a string. Usage | 1.1 |
multireplacei | Replaces multiple subjects within a string (case insensitive). Usage | 1.1 |
padleft | Right-aligns the variable content by padding it on the left with a specified character (second argument), for a specified total length (first argument). The number of characters in the resulting string is equal to the number of original characters plus any additional padding characters. When the second (optional) argument is omitted a space character is used for padding. | 1.8.8b1 |
padright | Left-aligns the variable content by padding it on the right with a specified character (second argument), for a specified total length (first argument). The number of characters in the resulting string is equal to the number of original characters plus any additional padding characters. When the second (optional) argument is omitted a space character is used for padding. | 1.8.8b1 |
ps | Executes the textual content as a PowerShell script. | 1.8.6b3 |
regex | Returns the value which is matched by the regular expression (first argument). If groups exist, you can also select a group's value with the second argument. 0 is the whole match, 1 the first group, 2 the second group and so on. | 1.1 |
regexreplace | Replaces the content matched with the regular expression (first argument) with the second argument. The second argument may contain $n as references to groups of the regular expression. | 1.1 |
replace | Replaces all occurrences of argument1 with argument2 | 1.1 |
split | Splits the variable content at each occurrence of the first argument and returns the part of the string with the number specified in the second argument (zero based). Since 1.5 a negative number can be given to select a part from the end of a string (-1 is the last part for example). | 1.1 / 1.5 |
startuppath | Returns the startup path of the current Ketarin instance (without exe file) | 1.1 |
toupper | Outputs only uppercase characters | 1.1 |
tolower | Outputs only lowercase characters | 1.1 |
trim | Removes all white-space at the start and end of a variable. If an argument is given, all characters of that string will be removed (consider the string as list of chars to remove, not as string to remove). | 1.1 |
trimstart | Like trim, but only for the beginning of a word | 1.1 |
trimend | Like trim, but only for the end of a word | 1.1 |
urldecode | Replaces all encoded characters in URLs (like %20) with the actual characters. | 1.6 |
urlencode | Replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits. | 1.6.1b2 |
Regular expressions in Ketarin are evaluated with the options "single line" and "ignore case". So your regular expressions will treat .
as any char including the newline character \n
and will be case insensitive. Sample usage on the forum.
If it becomes necessary to apply two functions to a variable, do the following:
- Create the variable
x
you would like to apply a function to. - Create a new
textual
variabley
with the content{x:function1:...}
. - Then use
{y:function2:...}
You can add as many textual variables for additional functions as you like.
Cleaning up a version number: {myvar:multireplace:|:, Build| Build | part | beta | b:.|.|.|.|-}
This would convert:
Original | Result |
---|---|
Picasa 3.6, Build 3622 | Picasa 3.6.3622 |
Audacity 1.3 beta 22 | Audacity 1.3.22 |
MyApp 2.9 b4 | MyApp 2.9-4 |
Adjusting dates:
This converts abbreviated month names to their numerical counterpart:
{myvar:multireplace:,:Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec:01,02,03,04,05,06,07,08,09,10,11,12}
With a variable named dateRaw
with a value of January 2nd, 2003
the following sample functions demonstrate how you can manipulate the output. Note that some of these may require multiple variables in order to effect multiple replacements or changes.
Variable | Function | Result |
---|---|---|
dateDigitsOnly | {dateRaw:multireplace:|:January|February|March|April|May|June|July|August|September|October|November|December|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|,|st|nd|rd|th:1|2|3|4|5|6|7|8|9|10|11|12|1|2|3|4|5|6|7|8|9|10|11|12|||||} | 1 2 2003 |
dateLeadingZero | {dateDigitsOnly:regexreplace:(?<=^|\D)(\d)(?=$|\D):0$1} | 01 02 2003 |
dateISO | {dateLeadingZero:regexreplace:(\d{2})\s(\d{2})\s(\d{4}):$3$1$2} | 20030102 |
As of version 1.8.6 beta3 / Build 1.8.6.700
, Ketarin has the ability to execute Powershell scripts that have been stored, as plain text, in variables. This includes both url-variables
and global variables
.
This feature requires two steps:
- Define a
textual
variable as per usual, entering Powershell script as plain text - To execute the contained powershell script append the suffix
:ps
(eg.{myvar:ps}
) to the variable name
For effective use, one must keep in mind the following:
- Contained powershell scripts will not be executed unless used. Thus value is determined at moment of use.
- The return value is the last line of the executed script, which would otherwise produce a line of output in a Powershell console: A literal value, variable name or command/function which resolves to a value.
This feature brings many new possibilities to Ketarin:
- Execution of Powershell scripts before
pre-download
scripts, during checks for updates - Execution of Powershell scripts to determine the download url
- Execution of Powershell scripts to determine the storage path and file name of download file
- Execution of Powershell scripts in custom columns
Example 1: Shows the use of a url-variable as script, used within the download URL. Note that in this specific case, the script returns nothing. Its purpose is just to execute a script before all others, and to do so every update-check. (refer to following image)
Example 2: This example demonstrates a ketarin-global-variable as a script, used within the download path. In this case it references a system-global-variable. (refer to following image)
Example 3: In this example a global variable stores a Powershell script which has no return value. The variable/function is inserted into the job url text. This means the script will execute before any attempt at update or download. (refer to following image)