Peter Melnichenko
ecf3b48c83
Fixed incorrect sref name used for tables within table keys
...
`insref` argument of `val2str` explicitly sets name to use for a value
within the self reference section when it is seen again.
It's necessary to provide it for table keys, as they can only be
referenced through the `iname` storage table. For values sref name
can be calculated based on sref of the parent table and the key.
When serializing normal values (key is not a table or another special type),
`insref` was passed as is to the recursive `val2str` call. This is incorrect
when `insref` is actually present (i.e. parent table is a table key
or a value for a table key), the values should get their own sref names
instead of the parent name. Passing `nil` instead is enough to fix this.
Fixes #28 , closes #30 .
2018-04-23 20:57:22 -07:00
Paul Kulchenko
679a5a3bca
Added metatostring
option to disable __tostring
processing during serialization.
...
Ref pkulchenko/MobDebug#27 , pkulchenko/MobDebug#29 .
2017-09-01 21:35:04 -07:00
Paul Kulchenko
06a575ed69
Added numeric format to preserve floating point precision ( closes #17 ).
2015-05-07 22:55:21 -07:00
Paul Kulchenko
664b6eebea
Improved handling of failures in __tostring
( pkulchenko/ZeroBraneStudio#446 ).
2015-05-07 09:03:58 -07:00
Paul Kulchenko
d78f212b71
Switched to a method proposed by @SoniEx2 to disallow function calls ( #15 ).
2015-01-24 13:56:33 -08:00
Paul Kulchenko
3fcbb72531
Added setting env to protect against assigning global functions ( closes #15 ).
2015-01-20 20:54:33 -08:00
Paul Kulchenko
ce5281c1f5
Updated tests to work with Lua 5.3.
2015-01-20 20:30:36 -08:00
Paul Kulchenko
f2fc9e7517
Improved Lua 5.2 support for serialized functions.
2014-01-19 21:40:03 -08:00
Paul Kulchenko
ca4140a2d1
Fixed (properly this time) order of elements in the array part ( fixes #13 ).
2014-01-10 16:05:19 -08:00
Paul Kulchenko
7d56d50a9c
Fixed order of elements in the array part with sortkeys=true
( fixes #13 ).
2014-01-10 10:27:26 -08:00
Paul Kulchenko
4e4a19df1d
Added load
function to deserialize; updated documentation ( closes #9 ).
2013-11-05 11:52:05 -08:00
Paul Kulchenko
a4e258cb77
Fixed an issue with mixed tables that may be missing keys.
...
Earlier optimization depended on incorrect assumption that `next` can be
started by using #t, which is not the case.
2013-10-01 20:52:34 -07:00
Paul Kulchenko
29d2e11920
Optimized processing of tables with numeric indexes.
2013-09-30 21:17:59 -07:00
Paul Kulchenko
115b30ea77
Added maxnum
option to limit the number of elements in tables.
2013-09-29 14:33:15 -07:00
Paul Kulchenko
f7b2a819c0
Fixed an issue missing numerical keys ( fixes #8 ).
2013-06-12 11:04:56 -07:00
Paul Kulchenko
a36b3fec71
Added support for metatables with __serialize method.
2013-03-05 10:38:06 -08:00
Paul Kulchenko
7f58e5899c
Added handling of metatables with __tostring method.
2013-03-05 10:28:26 -08:00
Paul Kulchenko
4883768d13
Fixed an issue with having too many locals in self-reference section.
2013-03-04 11:18:29 -08:00
Paul Kulchenko
9db92970d3
Fixed emitting premature circular reference in self-reference section, which caused invalid serialization.
2013-02-27 23:19:53 -08:00
Paul Kulchenko
16c5599903
Added ability to process __tostring results that may be non-string values.
2013-01-15 11:53:07 -08:00
Paul Kulchenko
bb73826310
Renamed ignore
option to valignore
for consistency.
2013-01-08 10:09:12 -08:00
Jess Telford
fb1f135674
Added valtypeignore option
2013-01-04 19:24:30 +11:00
Jess Telford
6892d907ec
rename keywhitelist to keyallow for consistency with ignore
2013-01-04 13:37:49 +11:00
Jess Telford
832af701d3
Allow serialization of only whitelisted keys
...
Example:
local a = {
foo = 'bar',
[1] = 2,
[true] = 'only me'
}
local options = {
keywhitelist = {
['foo'] = true,
[true] = true
},
ignore = {
['bar'] = true
}
}
print(serpent.block(a, options))
-- output:
{
[true] = "only me"
}
2013-01-04 00:19:20 +11:00
Paul Kulchenko
07e85484df
Added serialization of metatables using __tostring (when present).
2012-11-16 21:21:42 -08:00
Paul Kulchenko
d8e92a3388
Fixed an issue with serializing functions as keys when the keys are created as part of the delayed shared reference processing.
2012-11-16 15:07:04 -08:00
Paul Kulchenko
6f0b9e75e0
Fixed an issue with serializing data structures with circular references.
...
Fixed an issue with serializing keys that point to shared references.
Optimized overall serialization to inline values when possible.
2012-09-14 14:31:37 -07:00
Paul Kulchenko
e72ca380f9
Removed confusing comment from serialized results
2012-08-28 21:42:28 -07:00
Paul Kulchenko
3471396adb
Added 'comment=num' option to limit comments up to particular depth level
2012-06-19 12:29:42 -07:00
Paul Kulchenko
ad84a79966
Added 'ignore' parameter to allow ignoring table values
2012-06-16 19:43:15 -07:00
Paul Kulchenko
d9e1055bd0
Fixed an issue with negative and real value numeric keys being misplaced
2012-06-13 21:06:23 -07:00
Paul Kulchenko
82a4aee176
Fixed an issue with string keys with numeric values ['3']
getting mixed with real numeric keys
2012-06-13 11:07:59 -07:00
Paul Kulchenko
428061f498
Fixed key sorting and removed addresses from names of temp variables for a more stable output.
2012-06-13 10:21:44 -07:00
Paul Kulchenko
e89d8b8a9b
Added options to configure serialization process
2012-06-12 23:17:44 -07:00
Paul Kulchenko
7be5ecd21a
Fixed comments in the test
2012-06-06 08:24:14 -07:00
Paul Kulchenko
9bc76dc20c
Initial commit
2012-06-03 22:34:39 -07:00