Module std.string
Additions to the core string module.
 The module table returned by std.string also contains all of the entries
 from the core string table.  An hygienic way to import this module, then, is
 simply to override the core string locally:
local string = require "std.string"
Functions
| caps (s) | Capitalise each word in a string. | 
| chomp (s) | Remove any final newline from a string. | 
| escape_pattern (s) | Escape a string to be used as a pattern. | 
| escape_shell (s) | Escape a string to be used as a shell token. | 
| finds (s, pattern[, init=1[, plain]]) | Repeatedly string.finduntil target string is exhausted. | 
| format (f[, ...]) | Extend to work better with one argument. | 
| ltrim (s[, r="%s+"]) | Remove leading matter from a string. | 
| monkey_patch ([namespace=_G]) | Overwrite core stringmethods withstdenhanced versions. | 
| numbertosi (n) | Write a number using SI suffixes. | 
| ordinal_suffix (n) | Return the English suffix for an ordinal. | 
| pad (s, w[, p=" "]) | Justify a string. | 
| prettytostring (x[, indent="\t"[, spacing=""]]) | Pretty-print a table, or other object. | 
| render (x, open, close, elem, pair, sep[, roots]) | Turn tables into strings with recursion detection. | 
| rtrim (s[, r="%s+"]) | Remove trailing matter from a string. | 
| split (s[, sep="%s+"]) | Split a string at a given separator. | 
| tfind (s, pattern[, init=1[, plain]]) | Do string.find, returning a table of captures. | 
| trim (s[, r="%s+"]) | Remove leading and trailing matter from a string. | 
| wrap (s[, w=78[, ind=0[, ind1=ind]]]) | Wrap a string into a paragraph. | 
Fields
| __concat | String concatenation operation. | 
| __index | String subscript operation. | 
| pickle | Convert a value to a string. | 
Types
| closetablecb (t) | Signature of render close table callback. | 
| elementcb (x) | Signature of render element callback. | 
| opentablecb (t) | Signature of render open table callback. | 
| paircb (t, key, value, keystr, valuestr) | Signature of render pair callback. | 
| separatorcb (t, pk, pv, fk, fv) | Signature of render separator callback. | 
Functions
Methods- caps (s)
- 
    Capitalise each word in a string.
    Parameters:- s string any string
 Returns:- 
           string
        s with each word capitalized
    
 Usage:userfullname = caps (input_string) 
- chomp (s)
- 
    Remove any final newline from a string.
    Parameters:- s string any string
 Returns:- 
           string
        s with any single trailing newline removed
    
 Usage:line = chomp (line) 
- escape_pattern (s)
- 
    Escape a string to be used as a pattern.
    Parameters:- s string any string
 Returns:- 
           string
        s with active pattern characters escaped
    
 Usage:substr = inputstr:match (escape_pattern (literal)) 
- escape_shell (s)
- 
    Escape a string to be used as a shell token.
 Quotes spaces, parentheses, brackets, quotes, apostrophes and
 whitespace.
    Parameters:- s string any string
 Returns:- 
           string
        s with active shell characters escaped
    
 Usage:os.execute ("echo " .. escape_shell (outputstr)) 
- finds (s, pattern[, init=1[, plain]])
- 
    Repeatedly string.finduntil target string is exhausted.Parameters:- s string target string
- pattern string pattern to match in s
- init int start position (default 1)
- plain bool inhibit magic characters (optional)
 Returns:- 
        list of 
 {from, to; capt = {captures}}See also:Usage:for t in std.elems (finds ("the target string", "%S+")) do print (tostring (t.capt)) end 
- format (f[, ...])
- 
    Extend to work better with one argument.
 If only one argument is passed, no formatting is attempted.
    Parameters:- f string format string
- ... arguments to format (optional)
 Returns:- 
        formatted string
    
 Usage:print (format "100% stdlib!") 
- ltrim (s[, r="%s+"])
- 
    Remove leading matter from a string.
    Parameters:Returns:- 
           string
        s with leading r stripped
    
 Usage:print ("got: " .. ltrim (userinput)) 
- monkey_patch ([namespace=_G])
- 
    Overwrite core stringmethods withstdenhanced versions.Also adds auto-stringification to ..operator on core strings, and integer indexing of strings with[]dereferencing.Parameters:- namespace table where to install global functions (default _G)
 Returns:- 
           table
        the module table
    
 Usage:local string = require "std.string".monkey_patch () 
- numbertosi (n)
- 
    Write a number using SI suffixes.
 The number is always written to 3 s.f.
    Parameters:- n number or string any numeric value
 Returns:- 
           string
        n simplifed using largest available SI suffix.
    
 Usage:print (numbertosi (bitspersecond) .. "bps") 
- ordinal_suffix (n)
- 
    Return the English suffix for an ordinal.
    Parameters:- n int or string any integer value
 Returns:- 
           string
        English suffix for n
    
 Usage:local now = os.date "*t" print ("%d%s day of the week", now.day, ordinal_suffix (now.day)) 
- pad (s, w[, p=" "])
- 
    Justify a string.
 When the string is longer than w, it is truncated (left or right
 according to the sign of w).
    Parameters:- s string a string to justify
- w int width to justify to (-ve means right-justify; +ve means left-justify)
- p string string to pad with (default " ")
 Returns:- 
           string
        s justified to w characters wide
    
 Usage:print (pad (trim (outputstr, 78)) .. "\n") 
- prettytostring (x[, indent="\t"[, spacing=""]])
- 
    Pretty-print a table, or other object.
    Parameters:- x object to convert to string
- indent string indent between levels (default "\t")
- spacing string space before every line (default "")
 Returns:- 
           string
        pretty string rendering of x
    
 Usage:print (prettytostring (std, " ")) 
- render (x, open, close, elem, pair, sep[, roots])
- 
    Turn tables into strings with recursion detection.
 N.B. Functions calling render should not recurse, or recursion
 detection will not work.
    Parameters:- x object to convert to string
- open opentablecb open table rendering function
- close closetablecb close table rendering function
- elem elementcb element rendering function
- pair paircb pair rendering function
- sep separatorcb separator rendering function
- roots table accumulates table references to detect recursion (optional)
 Returns:- 
        string representation of x
    
 Usage:function tostring (x) return render (x, lambda '="{"', lambda '="}"', tostring, lambda '=_4.."=".._5', lambda '= _4 and "," or ""', lambda '=","') end 
- rtrim (s[, r="%s+"])
- 
    Remove trailing matter from a string.
    Parameters:Returns:- 
           string
        s with trailing r stripped
    
 Usage:print ("got: " .. rtrim (userinput)) 
- split (s[, sep="%s+"])
- 
    Split a string at a given separator.
 Separator is a Lua pattern, so you have to escape active characters,
 ^$()%.[]*+-?with a%prefix to match a literal character in s.Parameters:Returns:- 
        list of strings
    
 Usage:words = split "a very short sentence"
- tfind (s, pattern[, init=1[, plain]])
- 
    Do string.find, returning a table of captures.Parameters:- s string target string
- pattern string pattern to match in s
- init int start position (default 1)
- plain bool inhibit magic characters (optional)
 Returns:- int start of match
- int end of match
- table list of captured strings
 See also:Usage:b, e, captures = tfind ("the target string", "%s", 10) 
- trim (s[, r="%s+"])
- 
    Remove leading and trailing matter from a string.
    Parameters:Returns:- 
           string
        s with leading and trailing r stripped
    
 Usage:print ("got: " .. trim (userinput)) 
- wrap (s[, w=78[, ind=0[, ind1=ind]]])
- 
    Wrap a string into a paragraph.
    Parameters:- s string a paragraph of text
- w int width to wrap to (default 78)
- ind int indent (default 0)
- ind1 int indent of first line (default ind)
 Returns:- 
           string
        s wrapped to w columns
    
 Usage:print (wrap (copyright, 72, 4)) 
Fields
- __concat
- 
    String concatenation operation.
    - s string initial string
- o object to stringify and concatenate
 Usage:local string = require "std.string".monkey_patch () concatenated = "foo" .. {"bar"} 
- __index
- 
    String subscript operation.
    
    Usage:getmetatable ("").__index = require "std.string".__index third = ("12345")[3] 
- pickle
- 
    Convert a value to a string.
 The string can be passed to functional.evalto retrieve the value.- x object to pickle
 See also:Usage:function slow_identity (x) return functional.eval (pickle (x)) end 
Types
- closetablecb (t)
- 
    Signature of render close table callback.
    Parameters:- t table table just rendered
 Returns:- 
           string
        close table rendering
    
 See also:Usage:function close (t) return "}" end 
- elementcb (x)
- 
    Signature of render element callback.
    Parameters:- x element to render
 Returns:- 
           string
        element rendering
    
 See also:Usage:function element (e) return require "std".tostring (e) end 
- opentablecb (t)
- 
    Signature of render open table callback.
    Parameters:- t table table about to be rendered
 Returns:- 
           string
        open table rendering
    
 See also:Usage:function open (t) return "{" end 
- paircb (t, key, value, keystr, valuestr)
- 
    Signature of render pair callback.
 Trying to re-render key or value here will break recursion
 detection, use strkey and strvalue pre-rendered values instead.
    Parameters:- t table table containing pair being rendered
- key key part of key being rendered
- value value part of key being rendered
- keystr string prerendered key
- valuestr string prerendered value
 Returns:- 
           string
        pair rendering
    
 See also:Usage:function pair (_, _, _, key, value) return key .. "=" .. value end 
- separatorcb (t, pk, pv, fk, fv)
- 
    Signature of render separator callback.
    Parameters:- t table table currently being rendered
- pk
         t key preceding separator, or nilfor first key
- pv
         t value preceding separator, or nilfor first value
- fk
         t key following separator, or nilfor last key
- fv
         t value following separator, or nilfor last value
 Returns:- 
           string
        separator rendering
    
 Usage:function separator (_, _, _, fk) return fk and "," or "" end