Skip to content

Commit ecdae60

Browse files
committed
options(docs): add force_array=True doctest for hooks parsing
why: Document hook-style usage of explode_arrays with SparseArray output what: - Add doctest example showing force_array=True for hooks output - Demonstrate SparseArray type and index preservation
1 parent 7f08187 commit ecdae60

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/libtmux/options.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,31 @@ def explode_arrays(
369369
... "terminal-features": {0: "xterm*:clipboard:ccolour:cstyle:focus",
370370
... 5: "screen*:title"}}
371371
True
372+
373+
Use ``force_array=True`` for hooks, which always use array format:
374+
375+
>>> from libtmux._internal.sparse_array import SparseArray
376+
377+
>>> hooks_output = io.StringIO(r'''
378+
... session-renamed[0] display-message 'renamed'
379+
... session-renamed[5] refresh-client
380+
... pane-focus-in[0] run-shell 'echo focus'
381+
... ''')
382+
>>> hooks_exploded = explode_arrays(
383+
... parse_options_to_dict(hooks_output),
384+
... force_array=True,
385+
... )
386+
387+
Each hook becomes a SparseArray preserving indices:
388+
389+
>>> isinstance(hooks_exploded["session-renamed"], SparseArray)
390+
True
391+
>>> hooks_exploded["session-renamed"][0]
392+
"display-message 'renamed'"
393+
>>> hooks_exploded["session-renamed"][5]
394+
'refresh-client'
395+
>>> sorted(hooks_exploded["session-renamed"].keys())
396+
[0, 5]
372397
"""
373398
options: dict[str, t.Any] = {}
374399
for key, val in _dict.items():

0 commit comments

Comments
 (0)