markdown_exec 1.8.8 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9fb4c6a799eb433c1df5b2a5b9969757bc7073bcd8ce410a341f8714dc4dd5dd
4
- data.tar.gz: 385a8fe67c4cb460b43ae1263c7643d819fe5c236e572e3d3a6c04f26fb64666
3
+ metadata.gz: 9bab8478298e4304b710d35a6c5c0d931635678d038a4a16f4714f9347f38aa6
4
+ data.tar.gz: 2a57f5bc25681718a5c23ec313a8c8767209d1422431348e310d311524e5d66c
5
5
  SHA512:
6
- metadata.gz: 658083cad39ed6e9e2caf0243b9aa2d33d9c8b881ed370938cee3f062ba4d9f2fa4f940de7d1dfe2066c0afe285c562f1caefef367d18eacfa4a9d295061f0fb
7
- data.tar.gz: 244c774edf797545ad63326caa39014b23cf3ed53622cdffcd2d37d37012be972ae3f538b619f6895c3ae72fcd80cafd0b9e9428bbd20788bb267307e5168a8d
6
+ metadata.gz: c6c4fcb0963a71d89968ff195bb963e31d4f887a7f97d524aeea29bcad5e359e698b89928d00f85cf6ad7cd99d768f2a7152a086fb32abf91e3477751b0979ba
7
+ data.tar.gz: 85631dcaa941169ae08527a2d2f185a82b5a296337aa78e2f50994f7cf2ecaa69966d4a647cafc7c772abd97f0ddc2fc7b2ff0ef298e30f6ff2f46d28eb12d12
data/.rubocop.yml CHANGED
@@ -13,7 +13,8 @@ Layout/LeadingCommentSpace:
13
13
  Layout/LineContinuationLeadingSpace:
14
14
  Enabled: false
15
15
 
16
- Layout/LineLength:
16
+ Layout/LineLength: # 2024-01-21 temp disable
17
+ Enabled: false
17
18
  Max: 96
18
19
 
19
20
  Lint/Debugger:
@@ -58,6 +59,9 @@ Security/YAMLLoad:
58
59
  Style/CommentedKeyword:
59
60
  Enabled: false
60
61
 
62
+ Style/Documentation: # 2024-01-21 temp disable
63
+ Enabled: false
64
+
61
65
  Style/DoubleNegation:
62
66
  Enabled: false
63
67
 
data/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.0] - 2024-02-07
4
+
5
+ ### Added
6
+
7
+ - Process format and glob to load, save script code.
8
+
9
+ - Provide ENV and batch variables to formatting function.
10
+
11
+ - Find files matching glob and present for user selection.
12
+
13
+ - Allow for entry of new file name when saving.
14
+
15
+ ## [1.8.9] - 2024-01-20
16
+
17
+ ### Added
18
+
19
+ - Variables set in inherited lines for use in scripts.
20
+
21
+ - Link key `save` to write inherited lines to disk.
22
+
3
23
  ## [1.8.8] - 2024-01-15
4
24
 
5
25
  ### Added
data/Gemfile CHANGED
@@ -9,7 +9,7 @@ gemspec
9
9
  gem 'clipboard'
10
10
  gem 'debug'
11
11
  gem 'erb'
12
- gem 'httparty' # 2024-01-01 for ChatGPI API
12
+ # gem 'httparty' # 2024-01-01 for ChatGPI API
13
13
  gem 'irb', '>= 1.8.0'
14
14
  gem 'mocha', require: false
15
15
  gem 'minitest', require: false
@@ -24,5 +24,6 @@ gem 'rubocop-minitest', require: false
24
24
  gem 'rubocop-rake', require: false
25
25
  gem 'rubocop-rspec', require: false
26
26
  gem 'shellwords'
27
- gem 'uri'
27
+ # gem 'tty-file'
28
+ gem 'uri', '0.12.2'
28
29
  gem 'yaml', '~> 0.2.1'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- markdown_exec (1.8.8)
4
+ markdown_exec (2.0.0)
5
5
  clipboard (~> 1.3.6)
6
6
  open3 (~> 0.1.1)
7
7
  optparse (~> 0.1.1)
@@ -47,9 +47,6 @@ GEM
47
47
  erb (4.0.3)
48
48
  cgi (>= 0.3.3)
49
49
  erubi (1.12.0)
50
- httparty (0.21.0)
51
- mini_mime (>= 1.0.0)
52
- multi_xml (>= 0.5.2)
53
50
  i18n (1.14.1)
54
51
  concurrent-ruby (~> 1.0)
55
52
  io-console (0.7.1)
@@ -63,11 +60,9 @@ GEM
63
60
  crass (~> 1.0.2)
64
61
  nokogiri (>= 1.12.0)
65
62
  method_source (1.0.0)
66
- mini_mime (1.1.5)
67
63
  minitest (5.20.0)
68
64
  mocha (2.1.0)
69
65
  ruby2_keywords (>= 0.0.5)
70
- multi_xml (0.6.0)
71
66
  nokogiri (1.15.4-arm64-darwin)
72
67
  racc (~> 1.4)
73
68
  open3 (0.1.2)
@@ -187,7 +182,6 @@ DEPENDENCIES
187
182
  clipboard
188
183
  debug
189
184
  erb
190
- httparty
191
185
  irb (>= 1.8.0)
192
186
  markdown_exec!
193
187
  minitest
@@ -203,7 +197,7 @@ DEPENDENCIES
203
197
  rubocop-rake
204
198
  rubocop-rspec
205
199
  shellwords
206
- uri
200
+ uri (= 0.12.2)
207
201
  yaml (~> 0.2.1)
208
202
 
209
203
  BUNDLED WITH
@@ -13,7 +13,7 @@ __filedirs_all()
13
13
  }
14
14
 
15
15
  _mde_echo_version() {
16
- echo "1.8.8"
16
+ echo "2.0.0"
17
17
  }
18
18
 
19
19
  _mde() {
@@ -40,6 +40,10 @@ _mde() {
40
40
 
41
41
  --dump-blocks-in-file) COMPREPLY="0"; return 0 ;;
42
42
 
43
+ --dump-dump-inherited-block_names) COMPREPLY="0"; return 0 ;;
44
+
45
+ --dump-dump-inherited-dependencies) COMPREPLY="0"; return 0 ;;
46
+
43
47
  --dump-dump-inherited-lines) COMPREPLY="0"; return 0 ;;
44
48
 
45
49
  --dump-menu-blocks) COMPREPLY="0"; return 0 ;;
@@ -94,7 +98,7 @@ _mde() {
94
98
  # present matching option names
95
99
  #
96
100
  if [[ ${cur} == -* ]] ; then
97
- opts=("--block-name" "--config" "--debug" "--dump-dump-delegate-object" "--dump-blocks-in-file" "--dump-dump-inherited-lines" "--dump-menu-blocks" "--dump-selected-block" "--exit" "--filename" "--find" "--find-path" "--help" "--how" "--list-blocks" "--list-count" "--list-default-env" "--list-default-yaml" "--list-docs" "--list-recent-output" "--list-recent-scripts" "--output-execution-summary" "--output-script" "--output-stdout" "--path" "--pwd" "--run-last-script" "--save-executed-script" "--save-execution-output" "--saved-script-folder" "--saved-stdout-folder" "--select-recent-output" "--select-recent-script" "--tab-completions" "--user-must-approve" "--version" "--display-level")
101
+ opts=("--block-name" "--config" "--debug" "--dump-dump-delegate-object" "--dump-blocks-in-file" "--dump-dump-inherited-block_names" "--dump-dump-inherited-dependencies" "--dump-dump-inherited-lines" "--dump-menu-blocks" "--dump-selected-block" "--exit" "--filename" "--find" "--find-path" "--help" "--how" "--list-blocks" "--list-count" "--list-default-env" "--list-default-yaml" "--list-docs" "--list-recent-output" "--list-recent-scripts" "--output-execution-summary" "--output-script" "--output-stdout" "--path" "--pwd" "--run-last-script" "--save-executed-script" "--save-execution-output" "--saved-script-folder" "--saved-stdout-folder" "--select-recent-output" "--select-recent-script" "--tab-completions" "--user-must-approve" "--version" "--display-level")
98
102
  COMPREPLY=( $(compgen -W "$(printf "'%s' " "${opts[@]}")" -- "${cur}") )
99
103
 
100
104
  return 0
@@ -121,6 +125,10 @@ _mde() {
121
125
 
122
126
  --dump-blocks-in-file) COMPREPLY=".BOOL."; return 0 ;;
123
127
 
128
+ --dump-dump-inherited-block_names) COMPREPLY=".BOOL."; return 0 ;;
129
+
130
+ --dump-dump-inherited-dependencies) COMPREPLY=".BOOL."; return 0 ;;
131
+
124
132
  --dump-dump-inherited-lines) COMPREPLY=".BOOL."; return 0 ;;
125
133
 
126
134
  --dump-menu-blocks) COMPREPLY=".BOOL."; return 0 ;;
@@ -178,4 +186,4 @@ _mde() {
178
186
 
179
187
  complete -o filenames -o nospace -F _mde mde
180
188
  # _mde_echo_version
181
- # echo "Updated: 2024-01-18 17:32:47 UTC"
189
+ # echo "Updated: 2024-02-08 17:51:16 UTC"
data/examples/colors.md CHANGED
@@ -4,23 +4,45 @@
4
4
 
5
5
  <https://en.wikipedia.org/wiki/Complementary_colors#/media/File:RGB_color_wheel.svg>
6
6
 
7
- ff0000 red - exception text
8
- ff7f00 orange - warning text
9
- ffff00 yellow - notification text
10
- 7fff00 chartreuse green - output frame
11
- 00ff00 green - prompt
12
- 00ff7f spring green - input frame
13
- 00ffff cyan - menu text
14
- 007fff azure - menu frame
15
- 0000ff blue
16
- 7f00ff violet - opts frame
17
- ff00ff magenta - opts text
18
- ff007f rose - exception frame
7
+ / ff0000 red - exception text
8
+ / ff7f00 orange - warning text
9
+ / ffff00 yellow - notification text
10
+ / 7fff00 chartreuse green - output frame
11
+ / 00ff00 green - prompt
12
+ / 00ff7f spring green - input frame
13
+ / 00ffff cyan - menu text
14
+ / 007fff azure - menu frame
15
+ / 0000ff blue
16
+ / 7f00ff violet - opts frame
17
+ / ff00ff magenta - opts text
18
+ / ff007f rose - exception frame
19
19
 
20
20
  ```opts :(document_options)
21
21
  ```
22
22
 
23
23
  ```opts :load_colors
24
+ exception_color_detail: fg_rgbh_1f_00_7f
25
+ exception_color_name: fg_rgbh_1f_00_00
26
+ execution_report_preview_frame_color: fg_rgbh_7f_1f_00
27
+ menu_bash_color: fg_rgbh_00_c0_c0
28
+ menu_chrome_color: fg_rgbh_40_c0_c0
29
+ menu_divider_color: fg_rgbh_80_d0_c0
30
+ menu_link_color: fg_rgbh_e0_e0_20
31
+ menu_note_color: fg_rgbh_b0_b0_b0
32
+ menu_opts_color: fg_rgbh_1f_00_1f
33
+ menu_opts_set_color: fg_rgbh_7f_00_1f
34
+ menu_task_color: fg_rgbh_1f_1f_1f
35
+ menu_vars_color: fg_rgbh_1f_a0_1f
36
+ menu_vars_set_color: fg_rgbh_00_1f_1f
37
+ output_execution_label_name_color: fg_rgbh_00_1f_00
38
+ output_execution_label_value_color: fg_rgbh_00_1f_00
39
+ prompt_color_after_script_execution: fg_rgbh_00_1f_00
40
+ script_execution_frame_color: fg_rgbh_00_1f_7f
41
+ script_preview_frame_color: fg_rgbh_7f_1f_00
42
+ warning_color: fg_rgbh_1f_7f_00
43
+ ```
44
+
45
+ ```opts :load_colors2
24
46
  exception_color_detail: fg_rgbh_ff_00_7f
25
47
  exception_color_name: fg_rgbh_ff_00_00
26
48
  execution_report_preview_frame_color: fg_rgbh_7f_ff_00
@@ -57,10 +79,10 @@ warning_color: fg_rgbh_ff_7f_00
57
79
  ```
58
80
  [ ] Task1
59
81
 
60
- blue; fg_rgbh_00_00_FF
61
- green; fg_rgbh_00_FF_00
62
- indigo; fg_rgbh_4B_00_82
63
- orange; fg_rgbh_FF_7F_00
64
- red; fg_rgbh_FF_00_00
65
- violet; fg_rgbh_94_00_D3
66
- yellow; fg_rgbh_FF_FF_00
82
+ / blue; fg_rgbh_00_00_FF
83
+ / green; fg_rgbh_00_FF_00
84
+ / indigo; fg_rgbh_4B_00_82
85
+ / orange; fg_rgbh_FF_7F_00
86
+ / red; fg_rgbh_FF_00_00
87
+ / violet; fg_rgbh_94_00_D3
88
+ / yellow; fg_rgbh_FF_FF_00
@@ -0,0 +1,8 @@
1
+ This document demonstrates the automatic loading of options in a block with a reserved name.
2
+
3
+ ```opts :(document_options)
4
+ menu_divider_format: "=> %{line} == %{line} <="
5
+ ```
6
+
7
+ The divider below is named "Divider #1". Notice the "(document_options)" block sets the "menu_divider_format" option to duplicate the divider name when it is displayed.
8
+ ::: Divider #1
@@ -1,10 +1,7 @@
1
- ```bash :a
2
- 01
1
+ Executing either of these blocks outputs the same two lines.
2
+ ```bash :duplicate_name
3
+ echo from duplicate name, block 1
3
4
  ```
4
- ```bash :a
5
- 02
5
+ ```bash :duplicate_name
6
+ echo from duplicate name, block 2
6
7
  ```
7
- ```bash :a
8
- 03
9
- ```
10
-
data/examples/import0.md CHANGED
@@ -1,10 +1,8 @@
1
- This is Page 0
1
+ This is Page 0. It serves to demonstrate how options control the display of imported blocks and notes.
2
2
 
3
- @import import1.md
3
+ ::: "import1.md" is imported here.
4
4
 
5
- ```opts :(document_options)
6
- user_must_approve: true
7
- ```
5
+ @import import1.md
8
6
 
9
7
  ::: Page 0 code blocks
10
8
 
data/examples/import1.md CHANGED
@@ -1,4 +1,4 @@
1
- This is Page 1
1
+ This is Page 1. It is imported by Page 0.
2
2
 
3
3
  ::: Page 1 code blocks
4
4
 
data/examples/include.md CHANGED
@@ -1,19 +1,25 @@
1
- ```bash :(one)
2
- echo block "one"
1
+ This document demonstrates blocks requiring other blocks.
2
+
3
+ Block "(Winter)" is hidden.
4
+ ```bash :(Winter)
5
+ echo It is now Winter
3
6
  ```
4
7
 
5
- ```bash :two +(one)
6
- echo block "two" requires one
8
+ Block "Spring" is visible. It requires "(Winter)".
9
+ ```bash :Spring +(Winter)
10
+ echo It is now Spring
7
11
  ```
8
12
 
9
- ```bash :(three) +two +(one)
10
- echo block "three" requires two and one
13
+ Block "(Summer)" is hidden. It requires "(Winter)" and "Spring"
14
+ ```bash :(Summer) +Spring +(Winter)
15
+ echo It is now Summer
11
16
  ```
12
17
 
13
- ```bash :four +(three)
14
- echo block "four" requires three
18
+ Block "Fall" is visible. It requires "(Summer)" which itself requires the rest.
19
+ ```bash :Fall +(Summer)
20
+ echo It is now Fall
15
21
  ```
16
22
 
17
- ```bash :trigger_unmet_dependency +(unmet)
18
- echo block "five" requires an unmet dependency
23
+ Block "Sunsear" is visible. It requires "Frostfall" which does not exist and triggers an unmet dependency error.
24
+ ```bash :Sunsear +Frostfall
19
25
  ```
data/examples/indent.md CHANGED
@@ -1,3 +1,5 @@
1
+ This document demonstrates content is indented to match the source.
2
+
1
3
  This is a concise guide for using Bash commands to find and list recent files in a Linux system. The commands are safe to use and can help you quickly locate recently modified or accessed files.
2
4
 
3
5
  1. **List Recently Modified Files**:
data/examples/index.md ADDED
@@ -0,0 +1,68 @@
1
+ v2024-02-06
2
+
3
+ ```link
4
+ file: examples/colors.md
5
+ ```
6
+ ```link
7
+ file: examples/document_options.md
8
+ ```
9
+ ```link
10
+ file: examples/duplicate_block.md
11
+ ```
12
+ ```link
13
+ file: examples/import0.md
14
+ ```
15
+ ```link
16
+ file: examples/import1.md
17
+ ```
18
+ ```link
19
+ file: examples/include.md
20
+ ```
21
+ ```link
22
+ file: examples/indent.md
23
+ ```
24
+ ```link
25
+ file: examples/linked.md
26
+ ```
27
+ ```link
28
+ file: examples/linked1.md
29
+ ```
30
+ ```link
31
+ file: examples/linked2.md
32
+ ```
33
+ ```link
34
+ file: examples/linked3.md
35
+ ```
36
+ ```link
37
+ file: examples/llm.md
38
+ ```
39
+ ```link
40
+ file: examples/load1.sh
41
+ ```
42
+ ```link
43
+ file: examples/load2.sh
44
+ ```
45
+ ```link
46
+ file: examples/nickname.md
47
+ ```
48
+ ```link
49
+ file: examples/opts.md
50
+ ```
51
+ ```link
52
+ file: examples/pass-through.md
53
+ ```
54
+ ```link
55
+ file: examples/plant.md
56
+ ```
57
+ ```link
58
+ file: examples/port.md
59
+ ```
60
+ ```link
61
+ file: examples/title.md
62
+ ```
63
+ ```link
64
+ file: examples/vars.md
65
+ ```
66
+ ```link
67
+ file: examples/wrap.md
68
+ ```
data/examples/linked.md CHANGED
@@ -1,62 +1,57 @@
1
- Demonstrate setting a variable interactively for use in generated scripts.
1
+ Demonstrate setting variable values interactively for use in generated scripts.
2
2
 
3
3
  ```opts :(document_options)
4
4
  pause_after_script_execution: false
5
5
  user_must_approve: false
6
6
  ```
7
7
 
8
- ::: Set VARIABLE to "A"
9
-
10
- ```link :set_to_A +(set_to_A)
11
- block: display_variable
8
+ ```link :link_with_vars_with_spaces
9
+ vars:
10
+ test: "1 2 3"
12
11
  ```
13
12
 
14
- ```bash :(set_to_A)
15
- VARIABLE=A
13
+ ::: Set variable ALPHA in a Vars block
14
+ For each environment variable named in block,
15
+ append an inherited line that assigns the variable the specified value.
16
+ ```vars :set_ALPHA_to_1_via_vars_block
17
+ ALPHA: 1
16
18
  ```
17
19
 
18
- ```link :set_to_A_eval +(set_to_A_eval)
19
- block: display_variable
20
- eval: true
20
+ ::: Set variable ALPHA in a Link block
21
+ For each environment variable in `vars`,
22
+ append an inherited line that assigns the variable the specified value.
23
+ Subsequently, run the `display_variable_ALPHA` block.
24
+ ```link :set_ALPHA_to_2_via_link_block_and_display
25
+ block: display_variable_ALPHA
26
+ vars:
27
+ ALPHA: 2
21
28
  ```
22
29
 
23
- ```bash :(set_to_A_eval)
24
- echo VARIABLE=A
30
+ Make the code in the required block `(bash_set_to_3)` into inherited lines.
31
+ Subsequently, run the `display_variable_ALPHA` block.
32
+ ```bash :(bash_set_to_3)
33
+ ALPHA=3
25
34
  ```
26
-
27
- ::: Set VARIABLE to "B"
28
-
29
- ```link :set_to_B +(set_to_B)
30
- block: display_variable
35
+ ```link :set_ALPHA_to_3_via_required_block_and_display +(bash_set_to_3)
36
+ block: display_variable_ALPHA
31
37
  ```
32
38
 
33
- ```bash :(set_to_B)
34
- VARIABLE=B
35
- ```
36
-
37
- ```link :set_to_B_eval +(set_to_B_eval)
38
- block: display_variable
39
+ Evaluate the code in the required block `(bash_eval_set_to_4)` and
40
+ save (transformed) output into inherited lines.
41
+ Subsequently, run the `display_variable_ALPHA` block.
42
+ ```link :set_ALPHA_to_4_via_evaluated_required_block_and_display +(bash_eval_set_to_4)
39
43
  eval: true
44
+ next_block: display_variable_ALPHA
40
45
  ```
41
-
42
- ```bash :(set_to_B_eval)
43
- echo VARIABLE=B
46
+ ```bash :(bash_eval_set_to_4)
47
+ echo 'ALPHA="4"'
44
48
  ```
45
49
 
46
- ::: Display value of VARIABLE
47
-
48
- ```bash :display_variable
50
+ ::: Display value of ALPHA
51
+ ```bash :display_variable_ALPHA
49
52
  source bin/colorize_env_vars.sh
50
- echo The current value of environment variable VARIABLE is now:
51
- colorize_env_vars '' VARIABLE
52
- ```
53
-
54
- ```bash :(set_timestamp)
55
- echo 'yyyymmdd? (default: today UTC) '; read -r yyyymmdd; [[ -z $yyyymmdd ]] && yyyymmdd="$(date -u +%y%m%d)"
56
- echo "EC2_STACK_TS='$yyyymmdd'"
57
- ```
58
- ```link :request_input_and_inherit_output +(set_timestamp)
59
- exec: true
53
+ echo The current value of environment variable ALPHA is now:
54
+ colorize_env_vars '' ALPHA
60
55
  ```
61
56
 
62
57
  ::: Load file into inherited lines
@@ -69,3 +64,69 @@ Load, evaluate, and append output to inherited lines.
69
64
  load: examples/load2.sh
70
65
  eval: true
71
66
  ```
67
+
68
+ ::: Save and Load
69
+ Save inherited lines to a file.
70
+ ```link :save1
71
+ save: tmp/save1.sh
72
+ ```
73
+ Load inherited lines from a file.
74
+ Subsequently, run the `display_variables` block.
75
+ ```link :load_saved
76
+ load: tmp/save1.sh
77
+ block: display_variables
78
+ ```
79
+ Display variables ALPHA, var1, var2
80
+ ```bash :display_variables
81
+ source bin/colorize_env_vars.sh
82
+ colorize_env_vars '' ALPHA var1 var2
83
+ ```
84
+
85
+ Execute a script requiring input from the user.
86
+ Save the output setting TIMESTAMP into inherited lines.
87
+ Subsequently, run the `display_TIMESTAMP` block.
88
+ ```bash :(input_timestamp)
89
+ if [[ -z $TIMESTAMP ]]; then
90
+ default="$(date -u +%y%m%d)"
91
+ echo "yymmdd? (default: $default / today UTC) "
92
+ read -r TIMESTAMP
93
+ [[ -z $TIMESTAMP ]] && TIMESTAMP="$(date -u +%y%m%d)"
94
+ fi
95
+ ```
96
+ ```bash :(inherit_timestamp)
97
+ echo "TIMESTAMP=\"$TIMESTAMP\""
98
+ ```
99
+ ```link :set_timestamp +(input_timestamp) +(inherit_timestamp)
100
+ exec: true
101
+ block: display_TIMESTAMP
102
+ ```
103
+ ```bash :display_TIMESTAMP
104
+ source bin/colorize_env_vars.sh
105
+ colorize_env_vars '' TIMESTAMP
106
+ ```
107
+
108
+ ::: Load file matching glob pattern into inherited lines
109
+ Load (do not evaluate) and append to inherited lines.
110
+ ```link :load_glob_load1*
111
+ load: examples/load1*.sh
112
+ ```
113
+ ```link :load_glob_load*
114
+ load: examples/load*.sh
115
+ ```
116
+ ```link :load_glob_fail
117
+ load: examples/fail*
118
+ ```
119
+ ```link :load_glob_with_format
120
+ load: "%{home}/examples/load*.sh"
121
+ ```
122
+
123
+ ```link :save_glob_load*
124
+ save: examples/*.sh
125
+ ```
126
+
127
+ ```link :save_glob_*
128
+ save: examples/*.sh
129
+ ```
130
+ ```link :load_glob_*
131
+ load: examples/*.sh
132
+ ```
data/examples/llm.md ADDED
@@ -0,0 +1,54 @@
1
+ 1. show practical examples for three important Bash commands.
2
+ 2. the commands must rely only on resources created and deleted in the example
3
+
4
+ Let's create practical examples for three important Bash commands where all resources are created and deleted within the examples. The commands we'll use are `touch` (to create a file), `echo` (to write to a file), and `rm` (to delete a file).
5
+
6
+ ### 1. `touch` - Create an Empty File
7
+
8
+ **Purpose**: `touch` is used to create an empty file or update the timestamp of an existing file.
9
+
10
+ **Example**: Create an empty file named `example.txt`.
11
+
12
+ ```bash
13
+ touch example.txt
14
+ ```
15
+
16
+ ### 2. `echo` - Write to a File
17
+
18
+ **Purpose**: `echo` is used to display a line of text. Combined with redirection, it can write text to a file.
19
+
20
+ **Example**: Write "Hello, world!" to `example.txt`.
21
+
22
+ ```bash
23
+ echo "Hello, world!" > example.txt
24
+ ```
25
+
26
+ ### 3. `rm` - Remove a File
27
+
28
+ **Purpose**: `rm` is used to remove files or directories.
29
+
30
+ **Example**: Delete the `example.txt` file.
31
+
32
+ ```bash
33
+ rm example.txt
34
+ ```
35
+
36
+ **Combined Script**: To see all these commands in action, you can create a script that executes them sequentially:
37
+
38
+ ```bash
39
+ #!/bin/bash
40
+
41
+ # Create an empty file
42
+ touch example.txt
43
+
44
+ # Write text to the file
45
+ echo "Hello, world!" > example.txt
46
+
47
+ # Display the file content
48
+ cat example.txt
49
+
50
+ # Remove the file
51
+ rm example.txt
52
+ ```
53
+
54
+ **Note**: After this script runs, `example.txt` is created, written to, displayed, and then deleted, ensuring that no external resources are used or left behind.
data/lib/constants.rb CHANGED
@@ -17,11 +17,16 @@ IndexedLine = Struct.new(:index, :line) do
17
17
  end
18
18
  end
19
19
 
20
- class LinkDataKeys
20
+ class LinkKeys
21
+ Block = 'block'
21
22
  Eval = 'eval'
22
23
  Exec = 'exec'
24
+ File = 'file'
23
25
  Load = 'load'
26
+ NextBlock = 'next_block'
24
27
  Return = 'return'
28
+ Save = 'save'
29
+ Vars = 'vars'
25
30
  end
26
31
 
27
32
  class LoadFile
data/lib/find_files.rb CHANGED
@@ -22,7 +22,7 @@
22
22
  # Example:
23
23
  # find_files('version.rb', ['lib/**', 'spec'])
24
24
  # # This might return file paths like ['lib/markdown_exec/version.rb', 'spec/version_spec.rb'].
25
- def find_files(pattern, paths)
25
+ def find_files(pattern, paths = ['', Dir.pwd])
26
26
  matched_files = []
27
27
 
28
28
  paths.each do |path_with_wildcard|
@@ -65,7 +65,6 @@ class TestFindFiles < Minitest::Test
65
65
  expected_files = [
66
66
  'lib/cli.rb',
67
67
  'lib/colorize.rb',
68
- 'lib/dev/llm.rb',
69
68
  'lib/dev/watchfile.sh',
70
69
  'lib/markdown_exec.rb',
71
70
  'lib/markdown_exec/version.rb'