markdown_exec 3.5.1 → 3.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.ai-agent-instructions +54 -0
  3. data/.cursorrules +198 -0
  4. data/.rubocop.wide.yml +5 -0
  5. data/.rubocop.yml +7 -2
  6. data/CHANGELOG.md +12 -1
  7. data/Gemfile.lock +1 -1
  8. data/Rakefile +2 -0
  9. data/ai-principles.md +516 -0
  10. data/architecture-decisions.md +190 -0
  11. data/bats/block-hide.bats +1 -1
  12. data/bats/block-type-bash.bats +5 -5
  13. data/bats/block-type-link.bats +1 -1
  14. data/bats/block-type-opts.bats +3 -3
  15. data/bats/block-type-port.bats +2 -2
  16. data/bats/block-type-shell-require-ux.bats +2 -2
  17. data/bats/block-type-ux-allowed.bats +4 -4
  18. data/bats/block-type-ux-auto.bats +1 -1
  19. data/bats/block-type-ux-chained.bats +1 -1
  20. data/bats/block-type-ux-default.bats +1 -1
  21. data/bats/block-type-ux-echo-hash-transform.bats +1 -1
  22. data/bats/block-type-ux-echo-hash.bats +2 -2
  23. data/bats/block-type-ux-echo.bats +3 -3
  24. data/bats/block-type-ux-exec-hash-transform.bats +1 -1
  25. data/bats/block-type-ux-exec-hash.bats +2 -2
  26. data/bats/block-type-ux-exec.bats +1 -1
  27. data/bats/block-type-ux-force.bats +1 -1
  28. data/bats/block-type-ux-formats.bats +1 -1
  29. data/bats/block-type-ux-hidden.bats +1 -1
  30. data/bats/block-type-ux-invalid.bats +1 -1
  31. data/bats/block-type-ux-readonly.bats +1 -1
  32. data/bats/block-type-ux-require-chained.bats +2 -2
  33. data/bats/block-type-ux-require-context.bats +2 -2
  34. data/bats/block-type-ux-require.bats +2 -2
  35. data/bats/block-type-ux-required-variables.bats +1 -1
  36. data/bats/block-type-ux-row-format.bats +1 -1
  37. data/bats/block-type-ux-sources.bats +4 -4
  38. data/bats/block-type-ux-transform.bats +1 -1
  39. data/bats/block-type-vars.bats +3 -3
  40. data/bats/border.bats +1 -1
  41. data/bats/cli.bats +11 -11
  42. data/bats/command-substitution-options.bats +2 -2
  43. data/bats/command-substitution.bats +1 -1
  44. data/bats/document-shell.bats +1 -1
  45. data/bats/history.bats +5 -5
  46. data/bats/import-conflict.bats +1 -1
  47. data/bats/import-directive-line-continuation.bats +1 -1
  48. data/bats/import-directive-parameter-symbols.bats +1 -1
  49. data/bats/import-duplicates.bats +6 -6
  50. data/bats/import-parameter-symbols.bats +1 -1
  51. data/bats/import-with-text-substitution.bats +1 -1
  52. data/bats/import.bats +3 -3
  53. data/bats/indented-block-type-vars.bats +1 -1
  54. data/bats/indented-multi-line-output.bats +1 -1
  55. data/bats/line-decor-dynamic.bats +1 -1
  56. data/bats/line-wrapping.bats +1 -1
  57. data/bats/load-vars-state-demo.bats +4 -4
  58. data/bats/markup.bats +4 -4
  59. data/bats/mde.bats +4 -4
  60. data/bats/option-expansion.bats +1 -1
  61. data/bats/options-collapse.bats +4 -4
  62. data/bats/options.bats +47 -17
  63. data/bats/plain.bats +1 -1
  64. data/bats/publish.bats +2 -2
  65. data/bats/table-column-truncate.bats +1 -1
  66. data/bats/table.bats +2 -2
  67. data/bats/variable-expansion-multiline.bats +1 -1
  68. data/bats/variable-expansion.bats +6 -6
  69. data/conversation-template.md +611 -0
  70. data/docs/block-execution-modes.md +177 -0
  71. data/docs/block-filtering.md +252 -0
  72. data/docs/block-naming-patterns.md +210 -0
  73. data/docs/block-scanning-patterns.md +248 -0
  74. data/docs/cli-reference.md +370 -0
  75. data/docs/dev/block-hide.md +1 -1
  76. data/docs/dev/block-type-ux-transform.md +5 -4
  77. data/docs/dev/print_bytes.md +3 -0
  78. data/docs/dev/shebang.md +6 -0
  79. data/docs/docker-testing.md +5 -0
  80. data/docs/execution-control.md +384 -0
  81. data/docs/getting-started.md +209 -0
  82. data/docs/import-options.md +391 -0
  83. data/docs/tab-completion.md +7 -0
  84. data/docs/ux-blocks.md +376 -0
  85. data/examples/linked1.md +8 -1
  86. data/implementation-decisions.md +212 -0
  87. data/lib/cached_nested_file_reader.rb +138 -1
  88. data/lib/command_result.rb +27 -6
  89. data/lib/executed_shell_command.rb +512 -0
  90. data/lib/filter.rb +7 -7
  91. data/lib/hash_delegator.rb +403 -350
  92. data/lib/link_history.rb +22 -11
  93. data/lib/markdown_exec/version.rb +1 -1
  94. data/lib/mdoc.rb +103 -44
  95. data/lib/menu.src.yml +110 -83
  96. data/lib/menu.yml +149 -83
  97. data/lib/transformed_shell_command.rb +449 -0
  98. data/lib/wl.rb +15 -0
  99. data/lib/ww.rb +16 -5
  100. data/requirements.md +111 -0
  101. data/semantic-tokens.md +132 -0
  102. data/tasks.md +69 -0
  103. metadata +26 -4
  104. data/docs/ux-blocks-examples.md +0 -120
  105. data/docs/ux-blocks-init-act.md +0 -100
data/lib/menu.src.yml CHANGED
@@ -32,21 +32,25 @@
32
32
 
33
33
  - :opt_name: block_batch_match
34
34
  :env_var: MDE_BLOCK_BATCH_MATCH
35
+ :description: Pattern to match blocks that should be executed in batch mode
35
36
  :default: '@batch'
36
37
  :procname: val_as_str
37
38
 
38
39
  - :opt_name: block_calls_scan
39
40
  :env_var: MDE_BLOCK_CALLS_SCAN
41
+ :description: Regex pattern to extract call names from block start lines (e.g., %call_name)
40
42
  :default: "%\\([^\\)]+\\)"
41
43
  :procname: val_as_str
42
44
 
43
45
  - :opt_name: block_disable_match
44
46
  :env_var: MDE_BLOCK_DISABLE_MATCH
47
+ :description: Pattern to match blocks that should be disabled (not executable)
45
48
  :default: '@disable'
46
49
  :procname: val_as_str
47
50
 
48
51
  - :opt_name: block_interactive_match
49
52
  :env_var: MDE_BLOCK_INTERACTIVE_MATCH
53
+ :description: Pattern to match blocks that should be executed in interactive mode
50
54
  :default: '@interactive'
51
55
  :procname: val_as_str
52
56
 
@@ -60,42 +64,44 @@
60
64
  :procname: val_as_str
61
65
 
62
66
  - :opt_name: block_name_hidden_match
63
- :env_var: MDE_BLOCK_NAME_HIDDEN_MATCH
64
- :description: Pattern for blocks to hide from user-selection
65
- :default: "^-.+-$"
67
+ :env_var: MDE_BLOCK_NAME_HIDE_CUSTOM_MATCH
68
+ :description: Regex pattern for block names that should be hidden from the menu
69
+ :default: "^\\(.*\\)$"
66
70
  :procname: val_as_str
67
71
 
68
- - :opt_name: block_name_include_match
69
- :env_var: MDE_BLOCK_NAME_INCLUDE_MATCH
70
- :description: Pattern for blocks to hide from user-selection
71
- :default: "^\\(.*\\)$"
72
+ - :opt_name: block_name_hide_custom_match
73
+ :env_var: MDE_BLOCK_NAME_HIDE_CUSTOM_MATCH
74
+ :description: Regex pattern for block names that should be hidden from the menu
75
+ :default: "^-.+-$"
72
76
  :procname: val_as_str
73
77
 
74
78
  - :opt_name: block_name_match
75
79
  :env_var: MDE_BLOCK_NAME_MATCH
76
- :description: Pattern for the block name in the line defining the block
80
+ :description: Regex pattern to extract the block name from the fenced code block start line
77
81
  :default: ":(?<title>\\S+)( |$)"
78
82
  :procname: val_as_str
79
83
 
80
84
  - :opt_name: block_name_nick_match
81
85
  :env_var: MDE_BLOCK_NAME_NICK_MATCH
82
- :description: Pattern for block nicknames (name is not used in menu)
86
+ :description: Regex pattern for block nicknames (alternative names not displayed in menu)
83
87
  :default: "^\\[.*\\]$"
84
88
  :procname: val_as_str
85
89
 
86
90
  - :opt_name: block_name_wrapper_match
87
91
  :env_var: MDE_BLOCK_NAME_WRAPPER_MATCH
88
- :description: Pattern for block names to use as wrappers
92
+ :description: Regex pattern for block names that act as wrappers (include other blocks)
89
93
  :default: "^{.+}$"
90
94
  :procname: val_as_str
91
95
 
92
96
  - :opt_name: block_required_scan
93
97
  :env_var: MDE_BLOCK_REQUIRED_SCAN
98
+ :description: Regex pattern to scan block body for required dependencies (e.g., +blockname)
94
99
  :default: "\\+\\S+"
95
100
  :procname: val_as_str
96
101
 
97
102
  - :opt_name: block_stdin_scan
98
103
  :env_var: MDE_BLOCK_STDIN_SCAN
104
+ :description: Regex pattern to scan block body for stdin redirection (e.g., <variable or <$variable)
99
105
  :default: "<(?<full>(?<type>\\$)?(?<name>[A-Za-z_\\-\\.\\w]+))"
100
106
  :procname: val_as_str
101
107
 
@@ -107,50 +113,52 @@
107
113
 
108
114
  - :opt_name: block_type_default
109
115
  :env_var: MDE_BLOCK_TYPE_DEFAULT
116
+ :description: Default shell type for blocks when no type is specified in the fenced code block
110
117
  :default: bash
111
118
  :procname: val_as_str
112
119
 
113
120
  - :opt_name: block_type_port_set_format
114
121
  :env_var: MDE_BLOCK_TYPE_PORT_SET_FORMAT
122
+ :description: Format string for generating shell variable assignments from PORT block content
115
123
  :default: ": ${%{key}:=%{value}}"
116
124
  :procname: val_as_str
117
125
 
118
126
  - :opt_name: blocks
119
127
  :arg_name: MESSAGE
120
128
  :default:
121
- :description: List the blocks displayed
129
+ :description: List all code blocks in the document with optional message format
122
130
  :env_var: MDE_BLOCKS_LIST_MESSAGE
123
131
  :long_name: blocks
124
132
  :procname: val_as_str
125
133
 
126
134
  - :opt_name: clear_screen_for_select_block
127
135
  :env_var: MDE_CLEAR_SCREEN_FOR_SELECT_BLOCK
128
- :description: clear_screen_for_select_block
136
+ :description: Clear the screen before displaying the block selection menu
129
137
  :arg_name: BOOL
130
138
  :default: true
131
139
  :procname: val_as_bool
132
140
 
133
141
  - :opt_name: command_substitution_name_capture_group
134
142
  :env_var: MDE_COMMAND_SUBSTITUTION_NAME_CAPTURE_GROUP
135
- :description: command_substitution_name_capture_group
143
+ :description: Named capture group name that extracts the command from command substitution matches
136
144
  :default: command
137
145
  :procname: val_as_str
138
146
 
139
147
  - :opt_name: command_substitution_regexp
140
148
  :env_var: MDE_COMMAND_SUBSTITUTION_REGEXP
141
- :description: command_substitution_regexp
149
+ :description: Regex pattern that matches command substitutions (e.g., $(command))
142
150
  :default: "(?<expression>\\$\\((?<command>([^()]*(\\([^()]*\\))*[^()]*)*)\\))"
143
151
  :procname: val_as_str
144
152
 
145
153
  - :long_name: config
146
- :description: Read configuration file
154
+ :description: Read configuration file from specified path
147
155
  :arg_name: PATH
148
156
  :default: "."
149
157
  :procname: path
150
158
 
151
159
  - :opt_name: debounce_execution
152
160
  :env_var: MDE_DEBOUNCE_EXECUTION
153
- :description: debounce_execution
161
+ :description: Whether to prompt before re-executing the same block multiple times
154
162
  :arg_name: BOOL
155
163
  :default: true
156
164
  :procname: val_as_bool
@@ -158,24 +166,25 @@
158
166
  - :long_name: debug
159
167
  :short_name: d
160
168
  :env_var: MDE_DEBUG
161
- :description: Debug output
169
+ :description: Enable debug output with detailed internal information
162
170
  :arg_name: BOOL
163
171
  :default: false
164
172
  :procname: debug
165
173
 
166
174
  - :opt_name: default_find_select_open
167
175
  :env_var: MDE_DEFAULT_FIND_SELECT_OPEN
168
- :description: default_find_select_open
176
+ :description: Whether to search for files when a filename argument doesn't exist
169
177
  :arg_name: BOOL
170
178
  :default: true
171
179
  :procname: val_as_bool
172
180
 
173
181
  - :opt_name: dig
174
182
  :long_name: dig
175
- :description: Dig history (Present menu of history)
183
+ :description: Present interactive menu of execution history
176
184
 
177
185
  - :opt_name: display_level_xbase_prefix
178
186
  :env_var: MDE_DISPLAY_LEVEL_XBASE_PREFIX
187
+ :description: Text prefix prepended to output lines when display level is above base level
179
188
  :default: "> "
180
189
  :procname: val_as_str
181
190
 
@@ -241,6 +250,7 @@
241
250
 
242
251
  - :opt_name: document_play_bin
243
252
  :env_var: MDE_DOCUMENT_PLAY_BIN
253
+ :description: Binary used for default block execution mode
244
254
  :default: play
245
255
  :procname: val_as_str
246
256
 
@@ -261,7 +271,7 @@
261
271
  - :opt_name: dump_blocks_in_file
262
272
  :long_name: dump-blocks-in-file
263
273
  :env_var: MDE_DUMP_BLOCKS_IN_FILE
264
- :description: Dump BlocksInFile (stage 1)
274
+ :description: Display parsed blocks from file (debug/diagnostic output, stage 1)
265
275
  :arg_name: BOOL
266
276
  :default: false
267
277
  :procname: val_as_bool
@@ -269,7 +279,7 @@
269
279
  - :opt_name: dump_delegate_object
270
280
  :long_name: dump-delegate-object
271
281
  :env_var: MDE_DUMP_DELEGATE_OBJECT
272
- :description: Dump @delegate_object
282
+ :description: Display internal delegate object state (debug/diagnostic output)
273
283
  :arg_name: BOOL
274
284
  :default: false
275
285
  :procname: val_as_bool
@@ -277,7 +287,7 @@
277
287
  - :opt_name: dump_dependencies
278
288
  :long_name: dump-dependencies
279
289
  :env_var: MDE_DUMP_DEPENDENCIES
280
- :description: Dump dependencies
290
+ :description: Display block dependency relationships (debug/diagnostic output)
281
291
  :arg_name: BOOL
282
292
  :default: false
283
293
  :procname: val_as_bool
@@ -285,7 +295,7 @@
285
295
  - :opt_name: dump_inherited_block_names
286
296
  :long_name: dump-inherited-block-names
287
297
  :env_var: MDE_DUMP_INHERITED_BLOCK_NAMES
288
- :description: Dump inherited block_names
298
+ :description: Display inherited block names from imported documents (debug/diagnostic output)
289
299
  :arg_name: BOOL
290
300
  :default: false
291
301
  :procname: val_as_bool
@@ -293,7 +303,7 @@
293
303
  - :opt_name: dump_inherited_dependencies
294
304
  :long_name: dump-inherited-dependencies
295
305
  :env_var: MDE_DUMP_INHERITED_DEPENDENCIES
296
- :description: Dump inherited dependencies
306
+ :description: Display inherited dependencies from imported documents (debug/diagnostic output)
297
307
  :arg_name: BOOL
298
308
  :default: false
299
309
  :procname: val_as_bool
@@ -301,7 +311,7 @@
301
311
  - :opt_name: dump_inherited_lines
302
312
  :long_name: dump-inherited-lines
303
313
  :env_var: MDE_DUMP_INHERITED_LINES
304
- :description: Dump inherited lines
314
+ :description: Display inherited code lines from imported documents (debug/diagnostic output)
305
315
  :arg_name: BOOL
306
316
  :default: false
307
317
  :procname: val_as_bool
@@ -309,7 +319,7 @@
309
319
  - :opt_name: dump_menu_blocks
310
320
  :long_name: dump-menu-blocks
311
321
  :env_var: MDE_DUMP_MENU_BLOCKS
312
- :description: Dump MenuBlocks (stage 2)
322
+ :description: Display blocks formatted for menu display (debug/diagnostic output, stage 2)
313
323
  :arg_name: BOOL
314
324
  :default: false
315
325
  :procname: val_as_bool
@@ -317,7 +327,7 @@
317
327
  - :opt_name: dump_selected_block
318
328
  :long_name: dump-selected-block
319
329
  :env_var: MDE_DUMP_SELECTED_BLOCK
320
- :description: Dump selected block
330
+ :description: Display selected block details (debug/diagnostic output)
321
331
  :arg_name: BOOL
322
332
  :default: false
323
333
  :procname: val_as_bool
@@ -348,21 +358,21 @@
348
358
 
349
359
  - :opt_name: exclude_by_name_regex
350
360
  :env_var: MDE_EXCLUDE_BY_NAME_REGEX
351
- :description: Exclude blocks with name matching
361
+ :description: Regex pattern to exclude blocks whose names match
352
362
  :arg_name: REGEX
353
363
  :default:
354
364
  :procname: val_as_str
355
365
 
356
366
  - :opt_name: exclude_by_shell_regex
357
367
  :env_var: MDE_EXCLUDE_BY_SHELL_REGEX
358
- :description: Exclude blocks with shell matching
368
+ :description: Regex pattern to exclude blocks whose shell type matches
359
369
  :arg_name: REGEX
360
370
  :default:
361
371
  :procname: val_as_str
362
372
 
363
373
  - :opt_name: exclude_expect_blocks
364
374
  :env_var: MDE_EXCLUDE_EXPECT_BLOCKS
365
- :description: Hide all blocks of type "expect"
375
+ :description: Whether to exclude all blocks of type "expect" from menus
366
376
  :arg_name: BOOL
367
377
  :default: true
368
378
  :procname: val_as_bool
@@ -414,23 +424,23 @@
414
424
 
415
425
  - :opt_name: execution_report_preview_frame_color
416
426
  :env_var: MDE_EXECUTION_REPORT_PREVIEW_FRAME_COLOR
417
- :description: execution_report_preview_frame_color
427
+ :description: Text color for the frame around execution report previews
418
428
  :default: fg_rgbh_90_e0_90 # Light green - consistent with allow/success colors
419
429
  :procname: val_as_str
420
430
 
421
431
  - :opt_name: execution_report_preview_head
422
432
  :env_var: MDE_EXECUTION_REPORT_PREVIEW_HEAD
423
- :description: execution_report_preview_head
433
+ :description: Text displayed before execution report preview content
424
434
  :procname: val_as_str
425
435
 
426
436
  - :opt_name: execution_report_preview_tail
427
- :description: execution_report_preview_tail
437
+ :description: Text displayed after execution report preview content
428
438
  :default: " -v-"
429
439
  :procname: val_as_str
430
440
 
431
441
  - :long_name: exit
432
442
  :short_name: x
433
- :description: Exit app
443
+ :description: Exit the application immediately
434
444
  :procname: exit
435
445
 
436
446
  ## match fenced code indented by spaces
@@ -458,7 +468,7 @@
458
468
 
459
469
  - :long_name: find
460
470
  :short_name: "?"
461
- :description: Find argument in documents
471
+ :description: Search for keyword across documents, block names, and file contents
462
472
  :arg_name: FIND
463
473
  :default: ''
464
474
  :procname: find
@@ -466,7 +476,7 @@
466
476
  - :opt_name: find_path
467
477
  :long_name: find-path
468
478
  :env_var: MDE_FIND_PATH
469
- :description: Path for find (uses PATH if empty)
479
+ :description: Directory path to search when using find command (uses path option if empty)
470
480
  :arg_name: FIND_PATH
471
481
  :default: ''
472
482
  :procname: val_as_str
@@ -534,21 +544,26 @@
534
544
 
535
545
  - :long_name: help
536
546
  :short_name: h
537
- :description: App help
547
+ :description: Display help message with usage and available options
538
548
  :procname: help
539
549
 
540
550
  - :opt_name: hide_blocks_by_name
541
551
  :env_var: MDE_HIDE_BLOCKS_BY_NAME
542
- :description: |-
543
- Exclude blocks with name matching expression " \
544
- "`block_name_hidden_match`
552
+ :description: Whether to hide blocks whose names match block_name_hide_custom_match pattern
553
+ :arg_name: BOOL
554
+ :default: true
555
+ :procname: val_as_bool
556
+
557
+ - :opt_name: hide_shebang
558
+ :env_var: MDE_HIDE_SHEBANG
559
+ :description: Hide shebang lines in document output
545
560
  :arg_name: BOOL
546
561
  :default: true
547
562
  :procname: val_as_bool
548
563
 
549
564
  - :opt_name: history
550
565
  :long_name: history
551
- :description: History
566
+ :description: Display execution history (saved scripts and output files)
552
567
 
553
568
  - :opt_name: history_document_separator
554
569
  :env_var: MDE_HISTORY_DOCUMENT_SEPARATOR
@@ -562,55 +577,64 @@
562
577
 
563
578
  - :long_name: how
564
579
  :short_name: "?"
565
- :description: Find keyword in YAML configuration options
580
+ :description: Search for keyword in YAML configuration option names and descriptions
566
581
  :arg_name: HOW
567
582
  :default: ''
568
583
  :procname: how
569
584
 
570
585
  - :opt_name: import_paths
571
586
  :env_var: MDE_IMPORT_PATHS
587
+ :description: Colon-separated list of directory paths to search when resolving imported file names in @import directives
572
588
  :default:
573
589
  :procname: val_as_str
574
590
 
575
591
  - :opt_name: import_directive_line_pattern
576
592
  :env_var: MDE_IMPORT_PATTERN
593
+ :description: Regular expression pattern that matches @import directive lines, capturing indentation, filename, and optional parameters
577
594
  :default: >-
578
595
  ^(?<indention> *)@import +(?<name>\S+)(?<params>(?: +\w+(?::(?:[ceqv]|[ceqv]{2})=|=)(?:"[^"]*"|'[^']*'|\S+))*) *\\?$
579
596
  :procname: val_as_str
580
597
 
581
598
  - :opt_name: import_directive_parameter_scan
582
599
  :env_var: MDE_IMPORT_PATTERN_SCAN
600
+ :description: Regular expression pattern that extracts individual parameters (key, operator, value) from the params portion of an @import line
583
601
  :default: >-
584
602
  (\w+)(:[ceqv]{1,2}=|=)(?:"([^"]*)"|'([^']*)'|(\S+))
585
603
  :procname: val_as_str
586
604
 
587
605
  - :opt_name: import_parameter_variable_assignment
588
606
  :env_var: MDE_IMPORT_PARAMETER_VARIABLE_ASSIGNMENT
607
+ :description: Format string used to generate shell variable assignments when parameters require command substitution or expression evaluation
589
608
  :default: "%{key}=%{value}"
590
609
  :procname: val_as_str
591
610
 
592
611
  - :opt_name: import_symbol_command_substitution
593
612
  :env_var: MDE_IMPORT_SYMBOL_COMMAND_SUBSTITUTION
613
+ :description: Symbol/operator (default ':c=') that indicates a parameter value should be treated as a shell command to execute, using the command output as the substitution value
594
614
  :default: ':c='
595
615
  :procname: val_as_str
596
616
 
597
617
  - :opt_name: import_symbol_evaluated_expression
598
618
  :env_var: MDE_IMPORT_SYMBOL_EVALUATED_EXPRESSION
619
+ :description: Symbol/operator (default ':e=') that indicates a parameter value should be treated as a shell expression to evaluate with variable expansion
599
620
  :default: ':e='
600
621
  :procname: val_as_str
601
622
 
602
623
  - :opt_name: import_symbol_raw_literal
603
624
  :env_var: MDE_IMPORT_SYMBOL_RAW_LITERAL
625
+ :description: Symbol/operator (default '=') that indicates a parameter value should be used as a raw literal string without any processing
604
626
  :default: '='
605
627
  :procname: val_as_str
606
628
 
607
629
  - :opt_name: import_symbol_force_quoted_literal
608
630
  :env_var: MDE_IMPORT_SYMBOL_FORCE_QUOTED_LITERAL
631
+ :description: Symbol/operator (default ':q=') that indicates a parameter value should be treated as a literal string and automatically wrapped in double quotes during substitution
609
632
  :default: ':q='
610
633
  :procname: val_as_str
611
634
 
612
635
  - :opt_name: import_symbol_variable_reference
613
636
  :env_var: MDE_IMPORT_SYMBOL_VARIABLE_REFERENCE
637
+ :description: Symbol/operator (default ':v=') that indicates a parameter value should be treated as a reference to an existing variable from the importing document
614
638
  :default: ':v='
615
639
  :procname: val_as_str
616
640
 
@@ -651,12 +675,12 @@
651
675
 
652
676
  - :opt_name: list_blocks
653
677
  :long_name: list-blocks
654
- :description: List blocks
678
+ :description: List all available code blocks in the document
655
679
 
656
680
  - :opt_name: list_blocks_eval
657
681
  :long_name: list-blocks-eval
658
682
  :env_var: MDE_LIST_BLOCKS_EVAL
659
- :description: Eval block, supercedes Message, for report
683
+ :description: Ruby expression to evaluate on each block for list output (overrides list-blocks-message)
660
684
  :arg_name: EVAL
661
685
  :default:
662
686
  :procname: val_as_str
@@ -664,7 +688,7 @@
664
688
  - :opt_name: list_blocks_message
665
689
  :long_name: list-blocks-message
666
690
  :env_var: MDE_LIST_BLOCKS_MESSAGE
667
- :description: Message to blocks, for report
691
+ :description: Block method or property to display for each block in list output
668
692
  :arg_name: MESSAGE
669
693
  :default: oname
670
694
  :procname: val_as_sym
@@ -672,7 +696,7 @@
672
696
  - :opt_name: list_blocks_type
673
697
  :long_name: list-blocks-type
674
698
  :env_var: MDE_LIST_BLOCKS_TYPE
675
- :description: Block type to report
699
+ :description: Filter blocks by type for list output (0=all, 1=bash, 2=ux, etc.)
676
700
  :arg_name: TYPE
677
701
  :default: 0
678
702
  :procname: val_as_int
@@ -687,37 +711,37 @@
687
711
 
688
712
  - :opt_name: list_default_env
689
713
  :long_name: list-default-env
690
- :description: List default configuration as environment variables
714
+ :description: Display all default configuration options as environment variable assignments
691
715
 
692
716
  - :opt_name: list_default_yaml
693
717
  :long_name: list-default-yaml
694
- :description: List default configuration as YAML
718
+ :description: Display all default configuration options in YAML format
695
719
 
696
720
  - :opt_name: list_docs
697
721
  :long_name: list-docs
698
- :description: List docs in current folder
722
+ :description: List all markdown documents in the current directory or specified path
699
723
 
700
724
  - :opt_name: list_output_format
701
725
  :long_name: format
702
726
  :env_var: MDE_OUTPUT_LIST_FORMAT
703
- :description: Format for list
727
+ :description: Output format for list commands (text, json, yaml, etc.)
704
728
  :arg_name: FORMAT
705
729
  :default: text
706
730
  :procname: val_as_sym
707
731
 
708
732
  - :opt_name: list_recent_output
709
733
  :long_name: list-recent-output
710
- :description: List recent saved output
734
+ :description: List recently saved execution output files
711
735
 
712
736
  - :opt_name: list_recent_scripts
713
737
  :long_name: list-recent-scripts
714
- :description: List recent saved scripts
738
+ :description: List recently saved executed scripts
715
739
 
716
740
  - :opt_name: load_code
717
741
  :long_name: load-code
718
742
  :short_name: l
719
743
  :env_var: MDE_LOAD_CODE
720
- :description: Load code
744
+ :description: Load code from external file into document context as inherited lines
721
745
  :arg_name: PATH
722
746
  :default: ''
723
747
  :procname: val_as_str
@@ -747,7 +771,7 @@
747
771
 
748
772
  - :opt_name: menu_active_color_pastel_messages
749
773
  :env_var: MDE_MENU_ACTIVE_COLOR_PASTEL_MESSAGES
750
- :description: menu_active_color_pastel_messages
774
+ :description: Pastel color methods to apply to active menu item text
751
775
  :default:
752
776
  - inverse
753
777
 
@@ -798,13 +822,13 @@
798
822
 
799
823
  - :opt_name: menu_collapsible_symbol_collapsed
800
824
  :env_var: MDE_MENU_COLLAPSIBLE_SYMBOL_COLLAPSED
801
- :description: menu_collapsible_symbol_collapsed
825
+ :description: Symbol displayed for collapsed collapsible menu items
802
826
  :default: '⬢' # ∆ ⬢ +
803
827
  :procname: val_as_str
804
828
 
805
829
  - :opt_name: menu_collapsible_symbol_expanded
806
- :env_var: MDE_MENU_COLLAPSIBLE_SYMBOL_expandED
807
- :description: menu_collapsible_symbol_expanded
830
+ :env_var: MDE_MENU_COLLAPSIBLE_SYMBOL_EXPANDED
831
+ :description: Symbol displayed for expanded collapsible menu items
808
832
  :default: '⬡' # … ⬡ -
809
833
  :procname: val_as_str
810
834
 
@@ -1198,7 +1222,7 @@
1198
1222
 
1199
1223
  - :opt_name: mine
1200
1224
  :long_name: mine
1201
- :description: Mine history (List lines matched by probe)
1225
+ :description: Display matching lines from execution history files when used with probe pattern
1202
1226
 
1203
1227
  - :opt_name: no_chrome
1204
1228
  :env_var: MDE_NO_CHROME
@@ -1209,20 +1233,20 @@
1209
1233
 
1210
1234
  - :long_name: open
1211
1235
  :short_name: o
1212
- :description: Find argument in documents, present list, and open user selection
1236
+ :description: Search for keyword in documents, present selection menu, and open chosen document
1213
1237
  :arg_name: OPEN
1214
1238
  :default: ''
1215
1239
  :procname: open
1216
1240
 
1217
1241
  - :opt_name: option_expansion_expression_regexp
1218
1242
  :env_var: MDE_OPTION_EXPANSION_EXPRESSION_REGEXP
1219
- :description: option_expansion_expression_regexp
1243
+ :description: Regex pattern that matches option expansions (e.g., &{option.property})
1220
1244
  :default: '(?<expression>&{(?<payload>(?<option>[A-Z0-9a-z_]+)(?:\.(?<property>[A-Z0-9a-z_]+))?)})'
1221
1245
  :procname: val_as_str
1222
1246
 
1223
1247
  - :opt_name: option_expansion_payload_regexp
1224
1248
  :env_var: MDE_OPTION_EXPANSION_PAYLOAD_REGEXP
1225
- :description: option_expansion_payload_regexp
1249
+ :description: Regex pattern that extracts the option and property names from option expansion payloads
1226
1250
  :default: '^(?<option>[A-Z0-9a-z_]+)(?:\.(?<property>[A-Z0-9a-z_]+))?$'
1227
1251
  :procname: val_as_str
1228
1252
 
@@ -1329,18 +1353,20 @@
1329
1353
 
1330
1354
  - :opt_name: play_bin_batch
1331
1355
  :env_var: MDE_PLAY_BIN_BATCH
1356
+ :description: Binary used for batch mode block execution
1332
1357
  :default: play
1333
1358
  :procname: val_as_str
1334
1359
 
1335
1360
  - :opt_name: play_bin_interactive
1336
1361
  :env_var: MDE_PLAY_BIN_INTERACTIVE
1362
+ :description: Binary used for interactive mode block execution
1337
1363
  :default: play_interactive
1338
1364
  :procname: val_as_str
1339
1365
 
1340
1366
  - :opt_name: probe
1341
1367
  :long_name: probe
1342
1368
  :env_var: MDE_PROBE
1343
- :description: Probe history (Filter history to files with lines matching a pattern)
1369
+ :description: Filter execution history to files containing lines matching the specified pattern
1344
1370
  :procname: val_as_str
1345
1371
 
1346
1372
  - :opt_name: prompt_after_script_execution
@@ -1399,7 +1425,7 @@
1399
1425
 
1400
1426
  - :opt_name: prompt_margin_left_text
1401
1427
  :env_var: MDE_PROMPT_MARGIN_LEFT_TEXT
1402
- :description: prompt_margin_left_text
1428
+ :description: Text prefix displayed at the left margin of prompts
1403
1429
  :default: "» "
1404
1430
  :procname: val_as_str
1405
1431
 
@@ -1453,7 +1479,7 @@
1453
1479
 
1454
1480
  - :opt_name: prompt_show_expr_format
1455
1481
  :env_var: MDE_PROMPT_SHOW_EXPR_FORMAT
1456
- :description: prompt_show_expr_format
1482
+ :description: Format string for displaying expression values in prompts
1457
1483
  :default: 'Expr: %{expr}'
1458
1484
  :procname: val_as_str
1459
1485
 
@@ -1471,27 +1497,27 @@
1471
1497
 
1472
1498
  - :opt_name: publish_block_name_format
1473
1499
  :env_var: MDE_PUBLISH_BLOCK_NAME_FORMAT
1474
- :description: format for block name published
1500
+ :description: Format string for block execution events published to file
1475
1501
  :default: "%{time} Blc %{document} / %{block}\n"
1476
1502
  :procname: val_as_str
1477
1503
 
1478
1504
  - :opt_name: publish_document_file_mode
1479
1505
  :long_name: publish-document-file-mode
1480
1506
  :env_var: MDE_PUBLISH_DOCUMENT_FILE_MODE
1481
- :description: Published file mode (fifo/append/write)
1507
+ :description: File mode for publishing document events (fifo=pipe, append=append to file, write=overwrite file)
1482
1508
  :default: fifo
1483
1509
  :procname: val_as_str
1484
1510
 
1485
1511
  - :opt_name: publish_document_file_name
1486
1512
  :long_name: publish-document-file-name
1487
1513
  :env_var: MDE_PUBLISH_DOCUMENT_FILE_NAME
1488
- :description: File path for publishing
1514
+ :description: File path where document execution events are published
1489
1515
  :default: ''
1490
1516
  :procname: val_as_str
1491
1517
 
1492
1518
  - :opt_name: publish_document_name_format
1493
1519
  :env_var: MDE_PUBLISH_DOCUMENT_NAME_FORMAT
1494
- :description: format for document name published
1520
+ :description: Format string for document load events published to file
1495
1521
  :default: "%{time} Doc %{document}\n"
1496
1522
  :procname: val_as_str
1497
1523
 
@@ -1622,20 +1648,20 @@
1622
1648
 
1623
1649
  - :opt_name: script_execution_frame_color
1624
1650
  :env_var: MDE_SCRIPT_EXECUTION_FRAME_COLOR
1625
- :description: script_execution_frame_color
1651
+ :description: Text color for the frame around script execution output
1626
1652
  :default: fg_rgbh_80_d0_a0 # Sage green - calmer frame color for execution context
1627
1653
  :procname: val_as_str
1628
1654
 
1629
1655
  - :opt_name: script_execution_head
1630
1656
  :env_var: MDE_SCRIPT_EXECUTION_HEAD
1631
- :description: script_execution_head
1657
+ :description: Text displayed before script execution output
1632
1658
  :default: "\n -^-"
1633
1659
 
1634
1660
  :procname: val_as_str
1635
1661
 
1636
1662
  - :opt_name: script_execution_tail
1637
1663
  :env_var: MDE_SCRIPT_EXECUTION_TAIL
1638
- :description: script_execution_tail
1664
+ :description: Text displayed after script execution output
1639
1665
  :default: " -v-\n"
1640
1666
  :procname: val_as_str
1641
1667
 
@@ -1647,26 +1673,26 @@
1647
1673
 
1648
1674
  - :opt_name: script_preview_head
1649
1675
  :env_var: MDE_SCRIPT_PREVIEW_HEAD
1650
- :description: script_preview_head
1676
+ :description: Text displayed before script preview content
1651
1677
  :default: "\n -^-"
1652
1678
  :procname: val_as_str
1653
1679
 
1654
1680
  - :opt_name: script_preview_tail
1655
1681
  :env_var: MDE_SCRIPT_PREVIEW_TAIL
1656
- :description: script_preview_tail
1682
+ :description: Text displayed after script preview content
1657
1683
  :default: " -v-\n"
1658
1684
  :procname: val_as_str
1659
1685
 
1660
1686
  - :opt_name: select_by_name_regex
1661
1687
  :env_var: MDE_SELECT_BY_NAME_REGEX
1662
- :description: Select blocks with name matching
1688
+ :description: Regex pattern to include only blocks whose names match
1663
1689
  :arg_name: REGEX
1664
1690
  :default:
1665
1691
  :procname: val_as_str
1666
1692
 
1667
1693
  - :opt_name: select_by_shell_regex
1668
1694
  :env_var: MDE_SELECT_BY_SHELL_REGEX
1669
- :description: Select blocks with shell matching
1695
+ :description: Regex pattern to include only blocks whose shell type matches
1670
1696
  :arg_name: REGEX
1671
1697
  :default:
1672
1698
  :procname: val_as_str
@@ -1703,13 +1729,13 @@
1703
1729
 
1704
1730
  - :opt_name: shell_code_label_format_above
1705
1731
  :env_var: MDE_SHELL_CODE_LABEL_FORMAT_ABOVE
1706
- :description: shell_code_label_format_above
1732
+ :description: Format string for label text displayed above code blocks in generated scripts
1707
1733
  :default:
1708
1734
  :procname: val_as_str
1709
1735
 
1710
1736
  - :opt_name: shell_code_label_format_below
1711
1737
  :env_var: MDE_SHELL_CODE_LABEL_FORMAT_BELOW
1712
- :description: shell_code_label_format_below
1738
+ :description: Format string for label text displayed below code blocks in generated scripts
1713
1739
  :default:
1714
1740
  :procname: val_as_str
1715
1741
 
@@ -1729,12 +1755,12 @@
1729
1755
  - :opt_name: sift
1730
1756
  :long_name: sift
1731
1757
  :env_var: MDE_SIFT
1732
- :description: Sift history (Filter history to file names matching a pattern)
1758
+ :description: Filter execution history to file names matching the specified pattern
1733
1759
  :procname: val_as_str
1734
1760
 
1735
1761
  - :opt_name: tab_completions
1736
1762
  :long_name: tab-completions
1737
- :description: List tab completions
1763
+ :description: List available tab completion options for shell integration
1738
1764
 
1739
1765
  - :opt_name: table_border_color
1740
1766
  :env_var: MDE_TABLE_BORDER_COLOR
@@ -1817,19 +1843,20 @@
1817
1843
 
1818
1844
  - :opt_name: ux_auto_load_force_default
1819
1845
  :env_var: MDE_UX_AUTO_LOAD_FORCE_DEFAULT
1846
+ :description: Whether to force default values for UX blocks during auto-load, even if variables already exist
1820
1847
  :arg_name: BOOL
1821
1848
  :default: true
1822
1849
  :procname: val_as_bool
1823
1850
 
1824
1851
  - :opt_name: variable_expansion_name_capture_group
1825
1852
  :env_var: MDE_VARIABLE_EXPANSION_NAME_CAPTURE_GROUP
1826
- :description: variable_expansion_name_capture_group
1853
+ :description: Named capture group name that extracts the variable name from variable expansion matches
1827
1854
  :default: variable
1828
1855
  :procname: val_as_str
1829
1856
 
1830
1857
  - :opt_name: variable_expansion_regexp
1831
1858
  :env_var: MDE_VARIABLE_EXPANSION_REGEXP
1832
- :description: variable_expansion_regexp
1859
+ :description: Regex pattern that matches variable expansions (e.g., ${variable})
1833
1860
  :default: "(?<expression>\\${(?<variable>[A-Z0-9a-z_]+)})"
1834
1861
  :procname: val_as_str
1835
1862
 
@@ -1841,8 +1868,8 @@
1841
1868
  :procname: val_as_str
1842
1869
 
1843
1870
  - :opt_name: vars_block_filename_pattern
1844
- :env_var: MDE_VARS_BLOCK_filename_pattern
1845
- :description: vars_block_filename_pattern
1871
+ :env_var: MDE_VARS_BLOCK_FILENAME_PATTERN
1872
+ :description: Regex pattern that parses filenames into path, base, and extension components for vars blocks
1846
1873
  :arg_name: PATTERN
1847
1874
  :default: '^(?<path>.*/)(?<base>[^/]+?)(?<extension>\.?[^./]*)?$'
1848
1875
  :procname: val_as_str