Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 1x 1x 66x 82x 64x 49x 64x 64x 64x 64x 64x 49x 49x 49x 49x 64x 64x | 'use strict' const { groupRestore, nestedRestore } = require('./modifiers') module.exports = restorer function restorer ({secret, wcLen}) { return function compileRestore () { if (this.restore) return const paths = Object.keys(secret) .filter((path) => secret[path].precensored === false) const resetters = resetTmpl(secret, paths) const hasWildcards = wcLen > 0 const state = hasWildcards ? {secret, groupRestore, nestedRestore} : {secret} /* eslint-disable-next-line */ this.restore = Function( 'o', restoreTmpl(resetters, paths, hasWildcards) ).bind(state) } } function resetTmpl (secret, paths) { return paths.map((path) => { const { circle, escPath } = secret[path] const reset = circle ? `o.${circle} = secret[${escPath}].val` : `o.${path} = secret[${escPath}].val` const clear = `secret[${escPath}].val = null` return ` try { ${reset} } catch (e) {} ${clear} ` }).join('') } function restoreTmpl (resetters, paths, hasWildcards) { const dynamicReset = hasWildcards === true ? ` const keys = Object.keys(secret) const len = keys.length for (var i = ${paths.length}; i < len; i++) { const k = keys[i] const o = secret[k] if (o.flat === true) this.groupRestore(o) else this.nestedRestore(o) secret[k] = null } ` : '' return ` const secret = this.secret ${resetters} ${dynamicReset} return o ` } |