libtmux.options.explode_arrays
Python
- Python
- Ruby Unavailable
- Lua Unavailable
- TypeScript Unavailable
- Rust Unavailable
- Go Unavailable
- Java Unavailable
- .NET Unavailable
- C++ Unavailable
- Swift Unavailable
- 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