Software / code / prosody
Comparison
util/serialization.lua @ 9564:ed0090f8b709
util.serialization: Make maximum table depth configurable
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 27 Oct 2018 12:17:35 +0200 |
| parent | 9486:20aad0108999 |
| child | 9565:9a1e2f5f674f |
comparison
equal
deleted
inserted
replaced
| 9563:732314eb3258 | 9564:ed0090f8b709 |
|---|---|
| 117 local kend = opt.kend or "]"; | 117 local kend = opt.kend or "]"; |
| 118 local equals = opt.equals or " = "; | 118 local equals = opt.equals or " = "; |
| 119 local unquoted = opt.unquoted == nil and "^[%a_][%w_]*$" or opt.unquoted; | 119 local unquoted = opt.unquoted == nil and "^[%a_][%w_]*$" or opt.unquoted; |
| 120 local hex = opt.hex; | 120 local hex = opt.hex; |
| 121 local freeze = opt.freeze; | 121 local freeze = opt.freeze; |
| 122 local maxdepth = opt.maxdepth or 127; | |
| 122 | 123 |
| 123 -- serialize one table, recursively | 124 -- serialize one table, recursively |
| 124 -- t - table being serialized | 125 -- t - table being serialized |
| 125 -- o - array where tokens are added, concatenate to get final result | 126 -- o - array where tokens are added, concatenate to get final result |
| 126 -- - also used to detect cycles | 127 -- - also used to detect cycles |
| 127 -- l - position in o of where to insert next token | 128 -- l - position in o of where to insert next token |
| 128 -- d - depth, used for indentation | 129 -- d - depth, used for indentation |
| 129 local function serialize_table(t, o, l, d) | 130 local function serialize_table(t, o, l, d) |
| 130 if o[t] or d > 127 then | 131 if o[t] or d > maxdepth then |
| 131 o[l], l = fallback(t, "recursion"), l + 1; | 132 o[l], l = fallback(t, "recursion"), l + 1; |
| 132 return l; | 133 return l; |
| 133 end | 134 end |
| 134 | 135 |
| 135 o[t] = true; | 136 o[t] = true; |