| luajson v1.2 Release Notes |
| ========================== |
| |
| Tested LPeg versions: |
| |
| * 0.9 - pass |
| * 0.8 - pass |
| * 0.7 - pass |
| * 0.6 - fail : cannot handle 'nil' returns -> tranforms into booleans |
| |
| Note that 0.6 passes strict mode tests and behaviors. It just breaks |
| down when decoding the plain return value `null` or `undefined` that |
| would result in a `nil` return value. |
| |
| User Visible Changes |
| -------------------- |
| |
| setObjectKey |
| ~~~~~~~~~~~~ |
| Thanks to Alexander Gladysh, we now have the "setObjectKey" |
| hook to permit more customizable behavior during object construction. |
| |
| There is a new 'object' option that you can set to handle custom |
| key-value setting. If you set in the configuration table |
| .object.setObjectKey to a function with the signature |
| `(tab, key, value)`, you will override the `rawset` style behavior. |
| |
| Example: |
| json.decode("{'1':true, x:true}") |
| --> { ["1"] = true, x = true } |
| function newSetObjectKey(tab, key, value) |
| local numkey = tonumber(key) |
| key = numkey or key |
| rawset(tab, key, value) |
| end |
| json.decode("{'1':true, x:true}", { object = { setObjectKey = newSetObjectKey } }) |
| --> { [1] = true, x = true } |
| |
| require builtins update |
| ~~~~~~~~~~~~~~~~~~~~~~~ |
| Also changed is the major change to `require` as many of the default |
| packages as possible to better help custom embedding scenarios where |
| 'default' tables such as `io` and `os` may require on-demand loading |
| via `require`. |
| |
| Plans for next release |
| ---------------------- |
| For the next feature release, I plan on better fleshing out the enhanced |
| error handling and possibly adding in the more customizable output |
| system. For previews of the features that might make it into the |
| next release, please see the "next" branch. Note that this branch |
| is volatile and features may vanish rather than be reverted for cleanliness. |
| |
| Updates since 1.1.1 |
| =================== |
| |
| Thomas Harning Jr (4): |
| all: |
| pulls in all but base/package modules via require (io,os,string,table,math) |
| decoder: |
| implements setObjectKey for LPeg < 0.9 |
| Moves 'setObjectKey' from root of `options` to `options.object` |
| docs: |
| adds reference for where bug reporting should go |
| Alexander Gladysh (1): |
| decoder: |
| configurable object key filter |