UNPKG

lua-types

Version:

TypeScript definitions for Lua standard library

213 lines (197 loc) 9.21 kB
// Based on https://www.lua.org/manual/5.3/manual.html#6.4 /** @noSelfInFile */ /** * This library provides generic functions for string manipulation, such as * finding and extracting substrings, and pattern matching. When indexing a * string in Lua, the first character is at position 1 (not at 0, as in C). * Indices are allowed to be negative and are interpreted as indexing backwards, * from the end of the string. Thus, the last character is at position -1, and * so on. * * The string library provides all its functions inside the table string. It * also sets a metatable for strings where the __index field points to the * string table. Therefore, you can use the string functions in object-oriented * style. For instance, string.byte(s,i) can be written as s:byte(i). * * The string library assumes one-byte character encodings. */ declare namespace string { /** * Returns the internal numeric codes of the characters s[i], s[i+1], ..., * s[j]. The default value for i is 1; the default value for j is i. These * indices are corrected following the same rules of function string.sub. * * Numeric codes are not necessarily portable across platforms. */ function byte(s: string, i?: number): number; function byte(s: string, i?: number, j?: number): LuaMultiReturn<number[]>; /** * Receives zero or more integers. Returns a string with length equal to the * number of arguments, in which each character has the internal numeric code * equal to its corresponding argument. * * Numeric codes are not necessarily portable across platforms. */ function char(...args: number[]): string; /** * Returns a string containing a binary representation of the given function, * so that a later load on this string returns a copy of the function (but * with new upvalues). */ function dump(func: Function): string; /** * Looks for the first match of pattern (see §6.4.1) in the string s. If it * finds a match, then find returns the indices of s where this occurrence * starts and ends; otherwise, it returns nil. A third, optional numeric * argument init specifies where to start the search; its default value is 1 * and can be negative. A value of true as a fourth, optional argument plain * turns off the pattern matching facilities, so the function does a plain * "find substring" operation, with no characters in pattern being considered * magic. Note that if plain is given, then init must be given as well. * * If the pattern has captures, then in a successful match the captured values * are also returned, after the two indices. */ function find( s: string, pattern: string, init?: number, plain?: boolean ): LuaMultiReturn<[number, number, ...string[]] | []>; /** * Returns a formatted version of its variable number of arguments following * the description given in its first argument (which must be a string). The * format string follows the same rules as the ISO C function sprintf. The * only differences are that the options/modifiers *, h, L, l, n, and p are * not supported and that there is an extra option, q. * * The q option formats a string between double quotes, using escape sequences * when necessary to ensure that it can safely be read back by the Lua * interpreter. For instance, the call * * `string.format('%q', 'a string with "quotes" and \n new line')` * * may produce the string: * * `"a string with \"quotes\" and \ * new line"` Options A, a, E, e, f, G, and g all expect a number as * argument. Options c, d, i, o, u, X, and x expect an integer. When Lua is * compiled with a C89 compiler, options A and a (hexadecimal floats) do not * support any modifier (flags, width, length). * * Option s expects a string; if its argument is not a string, it is converted * to one following the same rules of tostring. If the option has any modifier * (flags, width, length), the string argument should not contain embedded * zeros. */ function format(formatstring: string, ...args: any[]): string; /** * Returns an iterator function that, each time it is called, returns the next * captures from pattern (see §6.4.1) over the string s. If pattern specifies * no captures, then the whole match is produced in each call. * * As an example, the following loop will iterate over all the words from * string s, printing one per line: * * ``` * s = "hello world from Lua" * for w in string.gmatch(s, "%a+") do * print(w) * end * ``` * * The next example collects all pairs key=value from the given string into a * table: * * ``` * t = {} * s = "from=world, to=Lua" * for k, v in string.gmatch(s, "(%w+)=(%w+)") do * t[k] = v * end * ``` * * For this function, a caret '^' at the start of a pattern does not work as * an anchor, as this would prevent the iteration. */ function gmatch(s: string, pattern: string): LuaIterable<LuaMultiReturn<string[]>>; /** * Returns a copy of s in which all (or the first n, if given) occurrences of * the pattern (see §6.4.1) have been replaced by a replacement string * specified by repl, which can be a string, a table, or a function. gsub also * returns, as its second value, the total number of matches that occurred. * The name gsub comes from Global SUBstitution. * * If repl is a string, then its value is used for replacement. The character * % works as an escape character: any sequence in repl of the form %d, with d * between 1 and 9, stands for the value of the d-th captured substring. The * sequence %0 stands for the whole match. The sequence %% stands for a single * %. * * If repl is a table, then the table is queried for every match, using the * first capture as the key. * * If repl is a function, then this function is called every time a match * occurs, with all captured substrings passed as arguments, in order. * * In any case, if the pattern specifies no captures, then it behaves as if * the whole pattern was inside a capture. * * If the value returned by the table query or by the function call is a * string or a number, then it is used as the replacement string; otherwise, * if it is false or nil, then there is no replacement (that is, the original * match is kept in the string). */ function gsub( s: string, pattern: string, repl: string | Record<string, string> | ((...matches: string[]) => string), n?: number ): LuaMultiReturn<[string, number]>; /** * Receives a string and returns its length. The empty string "" has length 0. * Embedded zeros are counted, so "a\000bc\000" has length 5. */ function len(s: string): number; /** * Receives a string and returns a copy of this string with all uppercase * letters changed to lowercase. All other characters are left unchanged. The * definition of what an uppercase letter is depends on the current locale. */ function lower(s: string): string; /** * Looks for the first match of pattern (see §6.4.1) in the string s. If it * finds one, then match returns the captures from the pattern; otherwise it * returns nil. If pattern specifies no captures, then the whole match is * returned. A third, optional numeric argument init specifies where to start * the search; its default value is 1 and can be negative. */ function match(s: string, pattern: string, init?: number): LuaMultiReturn<string[]>; /** * Returns a string that is the concatenation of `n` copies of the string `s`. */ function rep(s: string, n: number): string; /** * Returns a string that is the string s reversed. */ function reverse(s: string): string; /** * Returns the substring of s that starts at i and continues until j; i and j * can be negative. If j is absent, then it is assumed to be equal to -1 * (which is the same as the string length). In particular, the call * string.sub(s,1,j) returns a prefix of s with length j, and string.sub(s, * -i) (for a positive i) returns a suffix of s with length i. * * If, after the translation of negative indices, i is less than 1, it is * corrected to 1. If j is greater than the string length, it is corrected to * that length. If, after these corrections, i is greater than j, the function * returns the empty string. */ function sub(s: string, i: number, j?: number): string; /** * Receives a string and returns a copy of this string with all lowercase * letters changed to uppercase. All other characters are left unchanged. The * definition of what a lowercase letter is depends on the current locale. */ function upper(s: string): string; }