WoW:API format: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
m (Added note on outputting a % character within the format string)
({{luaapi}})
Line 1: Line 1:
{{:Lua/Libshortcut|format|string.format}}
{{luaapi}}
  string.format(formatstring, e1, e2, ...)
  string.format(formatstring, e1, e2, ...)
format(formatstring, e1, e2, ...)


Create a formatted string from the format and arguments provided. This is similar to the printf("format",...) function in C. An additional option %q returns string in a format that can safely be read back by Lua interpreter (puts quotes around a string and escapes special characters), it has little or no use in addon programming, but used by World of Warcraft to preparse all strings before saving them between sessions.
Create a formatted string from the format and arguments provided. This is similar to the printf("format",...) function in C. An additional option %q returns string in a format that can safely be read back by Lua interpreter (puts quotes around a string and escapes special characters), it has little or no use in addon programming, but used by World of Warcraft to preparse all strings before saving them between sessions.
Line 35: Line 36:
== External links ==
== External links ==
* http://www.gnu.org/software/libc/manual/html_node/Formatted-Output.html#Formatted-Output
* http://www.gnu.org/software/libc/manual/html_node/Formatted-Output.html#Formatted-Output
{{LUA}}

Revision as of 22:39, 25 March 2010

WoW Lua

string.format(formatstring, e1, e2, ...)
format(formatstring, e1, e2, ...)

Create a formatted string from the format and arguments provided. This is similar to the printf("format",...) function in C. An additional option %q returns string in a format that can safely be read back by Lua interpreter (puts quotes around a string and escapes special characters), it has little or no use in addon programming, but used by World of Warcraft to preparse all strings before saving them between sessions.

  • c, d, E, e, f, g, G, i, o, u, X, and x all expect a number as argument.
  • q and s expect a string.
> = string.format("%s %q", "Hello", "Lua user!")   -- string and quoted string
Hello "Lua user!"
> = string.format("%c%c%c", 76,117,97)             -- char
Lua
> = string.format("%e, %E", math.pi,math.pi)       -- exponent
3.141593e+000, 3.141593E+000
> = string.format("%f, %g, %.2f", math.pi, math.pi, math.pi)       -- float and compact float
3.141593, 3.14159, 3.14
> = string.format("%d, %i, %u", -100,-100,-100)    -- signed, signed, unsigned integer
-100, -100, 4294967196
> = string.format("%o, %x, %X", -100,-100,-100)    -- octal, hex, hex
37777777634, ffffff9c, FFFFFF9C


Note: if you want a % character to be output as part of your format string, you need to enter %%. ie.

> = string.format("Ratio is %u %%",12)
Ratio is 12 %


Macro Example

This macro prints out the time remaining on the Polymorph debuff in seconds, rounded to the nearest whole number:

/run for i=1,40 do local n,_,_,_,_,_,x,_,_=UnitDebuff("focus",i);if (n=="Polymorph")or (n=="Polymorph(Pig)")or (n=="Polymorph(Turtle)")then SendChatMessage('''format("%.0f"''',-1*(GetTime()-x)).." secs left on "..UnitName("focus").."'s CC!","EMOTE");end end 

External links