On this page
libtmux.options.explode_arrays
- Module
- libtmux.options
- Package
- libtmux
- Source
- src/libtmux/options.py
- explode_arrays ( _dict : UntypedOptionsDict , force_array : bool = False ) ExplodedUntypedOptionsDict
-
Explode flat, naive options dict's option arrays.
Examples
>>> import io>>> many_more_options = io.StringIO(r''' ... terminal-features[0] xterm*:clipboard:ccolour:cstyle:focus ... terminal-features[1] screen*:title ... ''') >>> many_more_flat_dict = parse_options_to_dict(many_more_options) >>> many_more_flat_dict == { ... "terminal-features[0]": "xterm*:clipboard:ccolour:cstyle:focus", ... "terminal-features[1]": "screen*:title",} True >>> explode_arrays(many_more_flat_dict) == { ... "terminal-features": {0: "xterm*:clipboard:ccolour:cstyle:focus", ... 1: "screen*:title"}} Truetmux arrays allow non-sequential indexes, so we need to support that:
>>> explode_arrays(parse_options_to_dict(io.StringIO(r''' ... terminal-features[0] xterm*:clipboard:ccolour:cstyle:focus ... terminal-features[5] screen*:title ... '''))) == { ... "terminal-features": {0: "xterm*:clipboard:ccolour:cstyle:focus", ... 5: "screen*:title"}} TrueUse
force_array=Truefor hooks, which always use array format:>>> from libtmux._internal.sparse_array import SparseArray>>> hooks_output = io.StringIO(r''' ... session-renamed[0] display-message 'renamed' ... session-renamed[5] refresh-client ... pane-focus-in[0] run-shell 'echo focus' ... ''') >>> hooks_exploded = explode_arrays( ... parse_options_to_dict(hooks_output), ... force_array=True, ... )Each hook becomes a SparseArray preserving indices:
>>> isinstance(hooks_exploded["session-renamed"], SparseArray) True >>> hooks_exploded["session-renamed"][0] "display-message 'renamed'" >>> hooks_exploded["session-renamed"][5] 'refresh-client' >>> sorted(hooks_exploded["session-renamed"].keys()) [0, 5]
0 declared, 0 inherited