markdown_exec 2.6.0 → 2.7.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -2
- data/Gemfile.lock +2 -2
- data/Rakefile +36 -0
- data/bats/command-substitution.bats +8 -0
- data/bats/options.bats +4 -4
- data/bats/plain.bats +8 -0
- data/bats/table.bats +6 -1
- data/bats/variable-expansion.bats +4 -4
- data/bin/bmde +46 -2
- data/bin/tab_completion.sh +1 -1
- data/docs/dev/command-substitution.md +24 -0
- data/docs/dev/load_code.md +14 -0
- data/docs/dev/no-active-elements.md +6 -0
- data/docs/dev/screen-width.md +21 -0
- data/docs/dev/table-invalid.md +20 -0
- data/examples/bash-blocks.md +2 -1
- data/examples/block-names.md +2 -1
- data/examples/block-types.md +2 -1
- data/examples/data-files.md +1 -0
- data/examples/document_options.md +1 -0
- data/examples/example-document-opts.md +6 -0
- data/examples/index.md +1 -1
- data/examples/interrupt.md +1 -0
- data/examples/link-blocks-load-save.md +8 -10
- data/examples/link-blocks-vars.md +12 -9
- data/examples/linked.md +9 -12
- data/examples/linked1.md +7 -6
- data/examples/linked2.md +6 -7
- data/examples/linked3.md +6 -5
- data/examples/linked_show.md +5 -4
- data/examples/nickname.md +1 -0
- data/examples/opts-blocks-require.md +1 -0
- data/examples/opts-blocks.md +1 -0
- data/examples/opts_output_execution.md +1 -0
- data/examples/pass-through-arguments.md +1 -0
- data/examples/pause-after-execution.md +1 -0
- data/examples/port-blocks.md +14 -10
- data/examples/save.md +1 -0
- data/examples/text-markup.md +2 -1
- data/examples/variable-expansion-save-block.md +48 -0
- data/examples/variable-expansion.md +3 -1
- data/examples/vars-blocks.md +14 -24
- data/examples/wrap.md +2 -1
- data/lib/collapser.rb +83 -47
- data/lib/evaluate_shell_expressions.rb +3 -2
- data/lib/fcb.rb +8 -2
- data/lib/hash_delegator.rb +214 -118
- data/lib/input_sequencer.rb +0 -7
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +6 -1
- data/lib/menu.src.yml +22 -9
- data/lib/menu.yml +22 -7
- data/lib/ww.rb +1 -1
- metadata +16 -9
- data/docs/dev/table-crash.md +0 -39
- data/examples/load_code.md +0 -10
- /data/{examples → docs/dev}/load1.sh +0 -0
data/lib/input_sequencer.rb
CHANGED
@@ -94,18 +94,13 @@ class InputSequencer
|
|
94
94
|
break if exit_when_bq_empty && bq_is_empty? && !now_menu.prior_block_was_link
|
95
95
|
|
96
96
|
if now_menu.display_menu
|
97
|
-
# !!b
|
98
97
|
break if run_yield(:end_of_cli, &block) == :exit
|
99
|
-
# !!b
|
100
98
|
|
101
99
|
exit_when_bq_empty = false
|
102
100
|
run_yield :display_menu, &block
|
103
|
-
# !!b
|
104
101
|
|
105
102
|
choice = run_yield :user_choice, &block
|
106
|
-
# !!b
|
107
103
|
break if choice == :break
|
108
|
-
# !!b
|
109
104
|
|
110
105
|
raise BlockMissing, 'Block not recognized.' if choice.nil?
|
111
106
|
# Exit loop and method to terminate the app
|
@@ -120,9 +115,7 @@ class InputSequencer
|
|
120
115
|
if now_menu.block_name && !now_menu.block_name.empty?
|
121
116
|
block_name = now_menu.block_name
|
122
117
|
else
|
123
|
-
# break if bq_is_empty? # Exit loop if no more blocks to process
|
124
118
|
if bq_is_empty? # Exit loop if no more blocks to process
|
125
|
-
# !!b
|
126
119
|
run_yield :end_of_cli, &block
|
127
120
|
break
|
128
121
|
end
|
data/lib/markdown_exec.rb
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
require 'English'
|
7
7
|
require 'clipboard'
|
8
8
|
require 'fileutils'
|
9
|
+
require 'io/console'
|
9
10
|
require 'open3'
|
10
11
|
require 'optparse'
|
11
12
|
require 'shellwords'
|
@@ -405,6 +406,7 @@ module MarkdownExec
|
|
405
406
|
#
|
406
407
|
def execute_block_with_error_handling
|
407
408
|
finalize_cli_argument_processing
|
409
|
+
@options.register_console_attributes(@options)
|
408
410
|
execute_initial_commands_and_main_loop(@options, @options.run_state)
|
409
411
|
rescue FileMissingError
|
410
412
|
warn "File missing: #{$!}"
|
@@ -991,6 +993,7 @@ module MarkdownExec
|
|
991
993
|
end
|
992
994
|
|
993
995
|
def select_document_if_multiple(files = list_markdown_files_in_path,
|
996
|
+
cycle: true,
|
994
997
|
prompt: options[:prompt_select_md].to_s)
|
995
998
|
return files[0] if (count = files.count) == 1
|
996
999
|
|
@@ -1004,7 +1007,9 @@ module MarkdownExec
|
|
1004
1007
|
:prompt_color_after_script_execution
|
1005
1008
|
),
|
1006
1009
|
files,
|
1007
|
-
opts.merge(
|
1010
|
+
HashDelegator.options_for_tty_menu(opts).merge(
|
1011
|
+
cycle: cycle
|
1012
|
+
)
|
1008
1013
|
)
|
1009
1014
|
end
|
1010
1015
|
|
data/lib/menu.src.yml
CHANGED
@@ -102,11 +102,11 @@
|
|
102
102
|
:default: true
|
103
103
|
:procname: val_as_bool
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
105
|
+
- :opt_name: command_substitution_regexp
|
106
|
+
:env_var: MDE_COMMAND_SUBSTITUTION_REGEXP
|
107
|
+
:description: command_substitution_regexp
|
108
|
+
:default: "(?<expression>\\$\\((?<command>([^()]*(\\([^()]*\\))*[^()]*)*)\\))"
|
109
|
+
:procname: val_as_str
|
110
110
|
|
111
111
|
- :long_name: config
|
112
112
|
:description: Read configuration file
|
@@ -462,7 +462,7 @@
|
|
462
462
|
|
463
463
|
- :opt_name: heading1_match
|
464
464
|
:env_var: MDE_HEADING1_MATCH
|
465
|
-
:default: "
|
465
|
+
:default: "^(?<indent>[ \t]*)#(?<collapse>[+-~]?)(?<leading>[ \t]*)(?<line>(?!#)(?<text>.*?))?(?<trailing>[ \t]*)$"
|
466
466
|
:procname: val_as_str
|
467
467
|
|
468
468
|
- :opt_name: heading2_center
|
@@ -482,7 +482,8 @@
|
|
482
482
|
|
483
483
|
- :opt_name: heading2_match
|
484
484
|
:env_var: MDE_HEADING2_MATCH
|
485
|
-
:default: "
|
485
|
+
:default: "^(?<indent>[ \t]*)#{2}(?<collapse>[+-~]?)(?<leading>[ \t]*)(?<line>(?!#)(?<text>.*?))?(?<trailing>[ \t]*)$"
|
486
|
+
|
486
487
|
:procname: val_as_str
|
487
488
|
|
488
489
|
- :opt_name: heading3_center
|
@@ -502,7 +503,7 @@
|
|
502
503
|
|
503
504
|
- :opt_name: heading3_match
|
504
505
|
:env_var: MDE_HEADING3_MATCH
|
505
|
-
:default: "
|
506
|
+
:default: "^(?<indent>[ \t]*)#{3}(?<collapse>[+-~]?)(?<gap>[ \t]*)(?<line>(?!#)(?<text>.*?))?(?<trailing>[ \t]*)$"
|
506
507
|
:procname: val_as_str
|
507
508
|
|
508
509
|
- :long_name: help
|
@@ -994,7 +995,7 @@
|
|
994
995
|
- :opt_name: menu_table_rows_match
|
995
996
|
:env_var: MDE_MENU_TABLE_ROWS_MATCH
|
996
997
|
:description: Pattern for table rows
|
997
|
-
:default: '^(?<
|
998
|
+
:default: '^(?<indent>[ \t]*)(?<line>(?<text>\|.*?)(?<trailing>[ \t]*))$'
|
998
999
|
:procname: val_as_str
|
999
1000
|
|
1000
1001
|
- :opt_name: menu_task_color
|
@@ -1256,6 +1257,12 @@
|
|
1256
1257
|
:default: Other
|
1257
1258
|
:procname: val_as_str
|
1258
1259
|
|
1260
|
+
- :opt_name: prompt_margin_left_text
|
1261
|
+
:env_var: MDE_PROMPT_MARGIN_LEFT_TEXT
|
1262
|
+
:description: prompt_margin_left_text
|
1263
|
+
:default: "» "
|
1264
|
+
:procname: val_as_str
|
1265
|
+
|
1259
1266
|
- :opt_name: prompt_no
|
1260
1267
|
:env_var: MDE_PROMPT_NO
|
1261
1268
|
:description: Prompt for no
|
@@ -1455,6 +1462,12 @@
|
|
1455
1462
|
:default: mde_*.out.txt
|
1456
1463
|
:procname: val_as_str
|
1457
1464
|
|
1465
|
+
- :opt_name: screen_width
|
1466
|
+
:env_var: MDE_SCREEN_WIDTH
|
1467
|
+
:description: Screen width for document and interface. 0 to use the actual dimension.
|
1468
|
+
:default: 0
|
1469
|
+
:procname: val_as_int
|
1470
|
+
|
1458
1471
|
- :opt_name: script_execution_frame_color
|
1459
1472
|
:env_var: MDE_SCRIPT_EXECUTION_FRAME_COLOR
|
1460
1473
|
:description: script_execution_frame_color
|
data/lib/menu.yml
CHANGED
@@ -83,6 +83,11 @@
|
|
83
83
|
:arg_name: BOOL
|
84
84
|
:default: true
|
85
85
|
:procname: val_as_bool
|
86
|
+
- :opt_name: command_substitution_regexp
|
87
|
+
:env_var: MDE_COMMAND_SUBSTITUTION_REGEXP
|
88
|
+
:description: command_substitution_regexp
|
89
|
+
:default: "(?<expression>\\$\\((?<command>([^()]*(\\([^()]*\\))*[^()]*)*)\\))"
|
90
|
+
:procname: val_as_str
|
86
91
|
- :long_name: config
|
87
92
|
:description: Read configuration file
|
88
93
|
:arg_name: PATH
|
@@ -386,8 +391,8 @@
|
|
386
391
|
:procname: val_as_bool
|
387
392
|
- :opt_name: heading1_match
|
388
393
|
:env_var: MDE_HEADING1_MATCH
|
389
|
-
:default: "
|
390
|
-
\t]*)
|
394
|
+
:default: "^(?<indent>[ \t]*)#(?<collapse>[+-~]?)(?<leading>[ \t]*)(?<line>(?!#)(?<text>.*?))?(?<trailing>[
|
395
|
+
\t]*)$"
|
391
396
|
:procname: val_as_str
|
392
397
|
- :opt_name: heading2_center
|
393
398
|
:env_var: MDE_HEADING2_CENTER
|
@@ -403,8 +408,8 @@
|
|
403
408
|
:procname: val_as_bool
|
404
409
|
- :opt_name: heading2_match
|
405
410
|
:env_var: MDE_HEADING2_MATCH
|
406
|
-
:default: "
|
407
|
-
\t]*)
|
411
|
+
:default: "^(?<indent>[ \t]*)#{2}(?<collapse>[+-~]?)(?<leading>[ \t]*)(?<line>(?!#)(?<text>.*?))?(?<trailing>[
|
412
|
+
\t]*)$"
|
408
413
|
:procname: val_as_str
|
409
414
|
- :opt_name: heading3_center
|
410
415
|
:env_var: MDE_HEADING3_CENTER
|
@@ -420,8 +425,8 @@
|
|
420
425
|
:procname: val_as_bool
|
421
426
|
- :opt_name: heading3_match
|
422
427
|
:env_var: MDE_HEADING3_MATCH
|
423
|
-
:default: "
|
424
|
-
\t]*)
|
428
|
+
:default: "^(?<indent>[ \t]*)#{3}(?<collapse>[+-~]?)(?<gap>[ \t]*)(?<line>(?!#)(?<text>.*?))?(?<trailing>[
|
429
|
+
\t]*)$"
|
425
430
|
:procname: val_as_str
|
426
431
|
- :long_name: help
|
427
432
|
:short_name: h
|
@@ -833,7 +838,7 @@
|
|
833
838
|
- :opt_name: menu_table_rows_match
|
834
839
|
:env_var: MDE_MENU_TABLE_ROWS_MATCH
|
835
840
|
:description: Pattern for table rows
|
836
|
-
:default: "^(?<
|
841
|
+
:default: "^(?<indent>[ \\t]*)(?<line>(?<text>\\|.*?)(?<trailing>[ \\t]*))$"
|
837
842
|
:procname: val_as_str
|
838
843
|
- :opt_name: menu_task_color
|
839
844
|
:env_var: MDE_MENU_TASK_COLOR
|
@@ -1059,6 +1064,11 @@
|
|
1059
1064
|
:description: User wants a custom file name
|
1060
1065
|
:default: Other
|
1061
1066
|
:procname: val_as_str
|
1067
|
+
- :opt_name: prompt_margin_left_text
|
1068
|
+
:env_var: MDE_PROMPT_MARGIN_LEFT_TEXT
|
1069
|
+
:description: prompt_margin_left_text
|
1070
|
+
:default: "» "
|
1071
|
+
:procname: val_as_str
|
1062
1072
|
- :opt_name: prompt_no
|
1063
1073
|
:env_var: MDE_PROMPT_NO
|
1064
1074
|
:description: Prompt for no
|
@@ -1237,6 +1247,11 @@
|
|
1237
1247
|
:arg_name: GLOB
|
1238
1248
|
:default: mde_*.out.txt
|
1239
1249
|
:procname: val_as_str
|
1250
|
+
- :opt_name: screen_width
|
1251
|
+
:env_var: MDE_SCREEN_WIDTH
|
1252
|
+
:description: Screen width for document and interface. 0 to use the actual dimension.
|
1253
|
+
:default: 0
|
1254
|
+
:procname: val_as_int
|
1240
1255
|
- :opt_name: script_execution_frame_color
|
1241
1256
|
:env_var: MDE_SCRIPT_EXECUTION_FRAME_COLOR
|
1242
1257
|
:description: script_execution_frame_color
|
data/lib/ww.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markdown_exec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fareed Stevenson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: yaml
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.2
|
75
|
+
version: '0.2'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.2
|
82
|
+
version: '0.2'
|
83
83
|
description: Interactively select and execute fenced code blocks in markdown files.
|
84
84
|
Build complex scripts by naming and requiring blocks. Log resulting scripts and
|
85
85
|
output. Re-run scripts.
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- bats/bats.bats
|
110
110
|
- bats/block-types.bats
|
111
111
|
- bats/cli.bats
|
112
|
+
- bats/command-substitution.bats
|
112
113
|
- bats/fail.bats
|
113
114
|
- bats/history.bats
|
114
115
|
- bats/import.bats
|
@@ -116,6 +117,7 @@ files:
|
|
116
117
|
- bats/mde.bats
|
117
118
|
- bats/options-collapse.bats
|
118
119
|
- bats/options.bats
|
120
|
+
- bats/plain.bats
|
119
121
|
- bats/publish.bats
|
120
122
|
- bats/table.bats
|
121
123
|
- bats/test_helper.bash
|
@@ -132,20 +134,25 @@ files:
|
|
132
134
|
- docs/dev/block-type-opts.md
|
133
135
|
- docs/dev/block-type-port.md
|
134
136
|
- docs/dev/block-type-vars.md
|
137
|
+
- docs/dev/command-substitution.md
|
135
138
|
- docs/dev/data-blocks.md
|
136
139
|
- docs/dev/disable.md
|
137
140
|
- docs/dev/import-missing.md
|
138
141
|
- docs/dev/import.md
|
139
142
|
- docs/dev/linked-file.md
|
143
|
+
- docs/dev/load1.sh
|
144
|
+
- docs/dev/load_code.md
|
140
145
|
- docs/dev/manage-saved-documents.md
|
141
146
|
- docs/dev/menu-cli.md
|
147
|
+
- docs/dev/no-active-elements.md
|
142
148
|
- docs/dev/options-collapse.md
|
143
149
|
- docs/dev/pass-through-arguments.md
|
144
150
|
- docs/dev/requiring-blocks.md
|
151
|
+
- docs/dev/screen-width.md
|
145
152
|
- docs/dev/specs-import.md
|
146
153
|
- docs/dev/specs.md
|
147
|
-
- docs/dev/table-crash.md
|
148
154
|
- docs/dev/table-indent.md
|
155
|
+
- docs/dev/table-invalid.md
|
149
156
|
- docs/dev/text-decoration.md
|
150
157
|
- docs/dev/variable-expansion.md
|
151
158
|
- examples/bash-blocks.md
|
@@ -156,6 +163,7 @@ files:
|
|
156
163
|
- examples/data-files.md
|
157
164
|
- examples/document_options.md
|
158
165
|
- examples/duplicate_block.md
|
166
|
+
- examples/example-document-opts.md
|
159
167
|
- examples/import0.md
|
160
168
|
- examples/import1.md
|
161
169
|
- examples/include.md
|
@@ -172,9 +180,7 @@ files:
|
|
172
180
|
- examples/linked3.md
|
173
181
|
- examples/linked_show.md
|
174
182
|
- examples/llm.md
|
175
|
-
- examples/load1.sh
|
176
183
|
- examples/load2.sh
|
177
|
-
- examples/load_code.md
|
178
184
|
- examples/nickname.md
|
179
185
|
- examples/opts-blocks-require.md
|
180
186
|
- examples/opts-blocks.md
|
@@ -188,6 +194,7 @@ files:
|
|
188
194
|
- examples/table-markup.md
|
189
195
|
- examples/text-markup.md
|
190
196
|
- examples/title.md
|
197
|
+
- examples/variable-expansion-save-block.md
|
191
198
|
- examples/variable-expansion.md
|
192
199
|
- examples/vars-blocks.md
|
193
200
|
- examples/wrap.md
|
data/docs/dev/table-crash.md
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
/ The lines below are an invalid table
|
2
|
-
| Region| VPC ID| VPC Name
|
3
|
-
-
|
4
|
-
# Demonstrate Tables
|
5
|
-
|
6
|
-
Table flush at left.
|
7
|
-
Centered columns.
|
8
|
-
| Common Name| Species| Genus| Family| Year Discovered
|
9
|
-
|:-:|:-:|:-:|:-:|:-:
|
10
|
-
| Tapanuli Orangutan| Pongo tapanuliensis| Pongo| Hominidae| 2017
|
11
|
-
| Psychedelic Frogfish| Histiophryne psychedelica| Histiophryne| Antennariidae| 2009
|
12
|
-
| Ruby Seadragon| Phyllopteryx dewysea| Phyllopteryx| Syngnathidae| 2015
|
13
|
-
|
14
|
-
Table indented with two spaces.
|
15
|
-
Left-justified columns.
|
16
|
-
| Common Name| Species| Genus| Family| Year Discovered
|
17
|
-
|:-|:-|:-|:-|:-
|
18
|
-
| Illacme tobini (Millipede)| Illacme tobini| Illacme| Siphonorhinidae| 2016
|
19
|
-
| Cappuccino Snake| Hydrodynastes bicinctus| Hydrodynastes| Colubridae| 2021
|
20
|
-
| Homo luzonensis| Homo luzonensis| Homo| Hominidae| 2019
|
21
|
-
|
22
|
-
Table indented with one tab.
|
23
|
-
Right-justified columns.
|
24
|
-
| Common Name| Species| Genus| Family| Year Discovered
|
25
|
-
|-:|-:|-:|-:|-:
|
26
|
-
| Spiny Dandelion| Taraxacum japonicum| Taraxacum| Asteraceae| 2022
|
27
|
-
| Mythical Monkey| Cercopithecus lomamiensis| Cercopithecus| Cercopithecidae| 2012
|
28
|
-
| Yeti Crab| Kiwa hirsuta| Kiwa| Kiwaidae| 2005
|
29
|
-
|
30
|
-
## Non-table text is not modified
|
31
|
-
1. |
|
32
|
-
2. ||
|
33
|
-
|
|
34
|
-
||
|
35
|
-
|
36
|
-
## markup with table
|
37
|
-
| Common Name| Species| Genus| Family| Year Discovered
|
38
|
-
|:-:|:-:|:-:|:-:|:-:
|
39
|
-
| `Tapanuli Orangutan`| **Pongo tapanuliensis**| __Pongo__| Hominidae| 2017
|
data/examples/load_code.md
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
Demonstrate loading inherited code via the command line.
|
2
|
-
|
3
|
-
Run this command to display the inherited code.
|
4
|
-
`mde --load-code examples/load1.sh examples/load_code.md display_variables`
|
5
|
-
|
6
|
-
```bash :display_variables
|
7
|
-
source bin/colorize_env_vars.sh
|
8
|
-
echo The current value of environment variables:
|
9
|
-
colorize_env_vars '' var1 var2
|
10
|
-
```
|
File without changes
|