Merge branch '1.1.x' into 1.2.x
[luajson.git] / docs / ReleaseNotes-1.2.txt
blob22d319f625acda47e371d19f23c7a80618b7d56e
1 luajson v1.2 Release Notes
2 ==========================
4 Tested LPeg versions:
6  * 0.9 - pass
7  * 0.8 - pass
8  * 0.7 - pass
9  * 0.6 - fail : cannot handle 'nil' returns -> tranforms into booleans
11 Note that 0.6 passes strict mode tests and behaviors.  It just breaks
12 down when decoding the plain return value `null` or `undefined` that
13 would result in a `nil` return value.
15 User Visible Changes
16 --------------------
18 setObjectKey
19 ~~~~~~~~~~~~
20 Thanks to Alexander Gladysh, we now have the "setObjectKey"
21 hook to permit more customizable behavior during object construction.
23 There is a new 'object' option that you can set to handle custom
24 key-value setting.  If you set in the configuration table
25 .object.setObjectKey to a function with the signature
26 `(tab, key, value)`, you will override the `rawset` style behavior.
28 Example:
29     json.decode("{'1':true, x:true}")
30         --> { ["1"] = true, x = true }
31         function newSetObjectKey(tab, key, value)
32                 local numkey = tonumber(key)
33                 key = numkey or key
34                 rawset(tab, key, value)
35         end
36         json.decode("{'1':true, x:true}", { object = { setObjectKey = newSetObjectKey } })
37         --> { [1] = true, x = true }
39 require builtins update
40 ~~~~~~~~~~~~~~~~~~~~~~~
41 Also changed is the major change to `require` as many of the default
42 packages as possible to better help custom embedding scenarios where
43 'default' tables such as `io` and `os` may require on-demand loading
44 via `require`.
46 Plans for next release
47 ----------------------
48 For the next feature release, I plan on better fleshing out the enhanced
49 error handling and possibly adding in the more customizable output
50 system.  For previews of the features that might make it into the
51 next release, please see the "next" branch.  Note that this branch
52 is volatile and features may vanish rather than be reverted for cleanliness.
54 Updates since 1.1.1
55 ===================
57 Thomas Harning Jr (4):
58         all:
59                 pulls in all but base/package modules via require (io,os,string,table,math)
60         decoder:
61                 implements setObjectKey for LPeg < 0.9
62                 Moves 'setObjectKey' from root of `options` to `options.object`
63         docs:
64                 adds reference for where bug reporting should go
65 Alexander Gladysh (1):
66         decoder:
67                 configurable object key filter