Mercurial > wow > askmrrobot
comparison Libs/AceSerializer-3.0/AceSerializer-3.0.lua @ 106:e635cd648e01 v49
7.2 update
| author | yellowfive |
|---|---|
| date | Tue, 28 Mar 2017 16:10:00 -0700 |
| parents | 01b63b8ed811 |
| children |
comparison
equal
deleted
inserted
replaced
| 105:3ce266c86bd3 | 106:e635cd648e01 |
|---|---|
| 8 -- and can be accessed directly, without having to explicitly call AceSerializer itself.\\ | 8 -- and can be accessed directly, without having to explicitly call AceSerializer itself.\\ |
| 9 -- It is recommended to embed AceSerializer, otherwise you'll have to specify a custom `self` on all calls you | 9 -- It is recommended to embed AceSerializer, otherwise you'll have to specify a custom `self` on all calls you |
| 10 -- make into AceSerializer. | 10 -- make into AceSerializer. |
| 11 -- @class file | 11 -- @class file |
| 12 -- @name AceSerializer-3.0 | 12 -- @name AceSerializer-3.0 |
| 13 -- @release $Id: AceSerializer-3.0.lua 1038 2011-10-03 01:39:58Z mikk $ | 13 -- @release $Id: AceSerializer-3.0.lua 1135 2015-09-19 20:39:16Z nevcairiel $ |
| 14 local MAJOR,MINOR = "AceSerializer-3.0", 4 | 14 local MAJOR,MINOR = "AceSerializer-3.0", 5 |
| 15 local AceSerializer, oldminor = LibStub:NewLibrary(MAJOR, MINOR) | 15 local AceSerializer, oldminor = LibStub:NewLibrary(MAJOR, MINOR) |
| 16 | 16 |
| 17 if not AceSerializer then return end | 17 if not AceSerializer then return end |
| 18 | 18 |
| 19 -- Lua APIs | 19 -- Lua APIs |
| 25 | 25 |
| 26 -- quick copies of string representations of wonky numbers | 26 -- quick copies of string representations of wonky numbers |
| 27 local inf = math.huge | 27 local inf = math.huge |
| 28 | 28 |
| 29 local serNaN -- can't do this in 4.3, see ace3 ticket 268 | 29 local serNaN -- can't do this in 4.3, see ace3 ticket 268 |
| 30 local serInf = tostring(inf) | 30 local serInf, serInfMac = "1.#INF", "inf" |
| 31 local serNegInf = tostring(-inf) | 31 local serNegInf, serNegInfMac = "-1.#INF", "-inf" |
| 32 | 32 |
| 33 | 33 |
| 34 -- Serialization functions | 34 -- Serialization functions |
| 35 | 35 |
| 36 local function SerializeStringHelper(ch) -- Used by SerializeValue for strings | 36 local function SerializeStringHelper(ch) -- Used by SerializeValue for strings |
| 60 res[nres+2] = gsub(v,"[%c \94\126\127]", SerializeStringHelper) | 60 res[nres+2] = gsub(v,"[%c \94\126\127]", SerializeStringHelper) |
| 61 nres=nres+2 | 61 nres=nres+2 |
| 62 | 62 |
| 63 elseif t=="number" then -- ^N = number (just tostring()ed) or ^F (float components) | 63 elseif t=="number" then -- ^N = number (just tostring()ed) or ^F (float components) |
| 64 local str = tostring(v) | 64 local str = tostring(v) |
| 65 if tonumber(str)==v --[[not in 4.3 or str==serNaN]] or str==serInf or str==serNegInf then | 65 if tonumber(str)==v --[[not in 4.3 or str==serNaN]] then |
| 66 -- translates just fine, transmit as-is | 66 -- translates just fine, transmit as-is |
| 67 res[nres+1] = "^N" | 67 res[nres+1] = "^N" |
| 68 res[nres+2] = str | 68 res[nres+2] = str |
| 69 nres=nres+2 | |
| 70 elseif v == inf or v == -inf then | |
| 71 res[nres+1] = "^N" | |
| 72 res[nres+2] = v == inf and serInf or serNegInf | |
| 69 nres=nres+2 | 73 nres=nres+2 |
| 70 else | 74 else |
| 71 local m,e = frexp(v) | 75 local m,e = frexp(v) |
| 72 res[nres+1] = "^F" | 76 res[nres+1] = "^F" |
| 73 res[nres+2] = format("%.0f",m*2^53) -- force mantissa to become integer (it's originally 0.5--0.9999) | 77 res[nres+2] = format("%.0f",m*2^53) -- force mantissa to become integer (it's originally 0.5--0.9999) |
| 145 end | 149 end |
| 146 | 150 |
| 147 local function DeserializeNumberHelper(number) | 151 local function DeserializeNumberHelper(number) |
| 148 --[[ not in 4.3 if number == serNaN then | 152 --[[ not in 4.3 if number == serNaN then |
| 149 return 0/0 | 153 return 0/0 |
| 150 else]]if number == serNegInf then | 154 else]]if number == serNegInf or number == serNegInfMac then |
| 151 return -inf | 155 return -inf |
| 152 elseif number == serInf then | 156 elseif number == serInf or number == serInfMac then |
| 153 return inf | 157 return inf |
| 154 else | 158 else |
| 155 return tonumber(number) | 159 return tonumber(number) |
| 156 end | 160 end |
| 157 end | 161 end |
