markdown_exec 2.3.0 → 2.4.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/.rubocop.yml +11 -2
- data/CHANGELOG.md +19 -0
- data/Gemfile.lock +1 -1
- data/Rakefile +32 -8
- data/bats/bats.bats +33 -0
- data/bats/block-types.bats +56 -0
- data/bats/cli.bats +74 -0
- data/bats/fail.bats +11 -0
- data/bats/history.bats +34 -0
- data/bats/markup.bats +66 -0
- data/bats/mde.bats +29 -0
- data/bats/options.bats +92 -0
- data/bats/test_helper.bash +152 -0
- data/bin/tab_completion.sh +44 -20
- data/docs/dev/block-type-opts.md +10 -0
- data/docs/dev/block-type-port.md +24 -0
- data/docs/dev/block-type-vars.md +7 -0
- data/docs/dev/pass-through-arguments.md +8 -0
- data/docs/dev/specs-import.md +9 -0
- data/docs/dev/specs.md +83 -0
- data/docs/dev/text-decoration.md +7 -0
- data/examples/bash-blocks.md +4 -4
- data/examples/block-names.md +2 -2
- data/examples/import0.md +23 -0
- data/examples/import1.md +13 -0
- data/examples/link-blocks-vars.md +3 -3
- data/examples/opts-blocks-require.md +6 -6
- data/examples/table-markup.md +31 -0
- data/examples/text-markup.md +58 -0
- data/examples/vars-blocks.md +2 -2
- data/examples/wrap.md +87 -9
- data/lib/ansi_formatter.rb +12 -6
- data/lib/ansi_string.rb +153 -0
- data/lib/argument_processor.rb +160 -0
- data/lib/cached_nested_file_reader.rb +4 -2
- data/lib/ce_get_cost_and_usage.rb +4 -3
- data/lib/cli.rb +1 -1
- data/lib/colorize.rb +39 -11
- data/lib/constants.rb +17 -0
- data/lib/directory_searcher.rb +4 -2
- data/lib/doh.rb +190 -0
- data/lib/env.rb +1 -1
- data/lib/exceptions.rb +9 -6
- data/lib/fcb.rb +0 -199
- data/lib/filter.rb +18 -5
- data/lib/find_files.rb +8 -3
- data/lib/format_table.rb +406 -0
- data/lib/hash_delegator.rb +888 -603
- data/lib/hierarchy_string.rb +113 -25
- data/lib/input_sequencer.rb +16 -10
- data/lib/instance_method_wrapper.rb +2 -1
- data/lib/layered_hash.rb +143 -0
- data/lib/link_history.rb +22 -8
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +413 -165
- data/lib/mdoc.rb +27 -34
- data/lib/menu.src.yml +825 -710
- data/lib/menu.yml +799 -703
- data/lib/namer.rb +6 -12
- data/lib/object_present.rb +1 -1
- data/lib/option_value.rb +7 -3
- data/lib/poly.rb +33 -14
- data/lib/resize_terminal.rb +60 -52
- data/lib/saved_assets.rb +45 -34
- data/lib/saved_files_matcher.rb +6 -3
- data/lib/streams_out.rb +7 -1
- data/lib/table_extractor.rb +166 -0
- data/lib/tap.rb +5 -6
- data/lib/text_analyzer.rb +144 -8
- metadata +26 -3
- data/lib/std_out_err_logger.rb +0 -119
@@ -0,0 +1,152 @@
|
|
1
|
+
# facilitate execution of program, comparison of output
|
2
|
+
|
3
|
+
export PROJECT_ROOT="/Users/fareed/Documents/dev/ruby/markdown_exec"
|
4
|
+
|
5
|
+
date_from_history_file_name () {
|
6
|
+
basename "$1" | sed -E 's/.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*/\1/'
|
7
|
+
}
|
8
|
+
|
9
|
+
echo_hexdump () {
|
10
|
+
echo -en "$1" | hexdump -C
|
11
|
+
}
|
12
|
+
|
13
|
+
exec_mde () {
|
14
|
+
echo "bin/bmde "$1" "${@:2}""
|
15
|
+
run bin/bmde "$1" ${@:2}
|
16
|
+
}
|
17
|
+
|
18
|
+
expect_equal_with_conversion () {
|
19
|
+
local expected="$1"
|
20
|
+
local actual="$2"
|
21
|
+
if [[ $3 == A ]]; then
|
22
|
+
actual="$(remove_ansi_escape_sequences "$2")"
|
23
|
+
# echo "- expected"
|
24
|
+
# echo "$expected" | hexdump -C
|
25
|
+
# echo "- actual"
|
26
|
+
# echo "$actual" | hexdump -C
|
27
|
+
fi
|
28
|
+
[[ "$expected" == "$actual" ]]
|
29
|
+
}
|
30
|
+
|
31
|
+
most_recent_history_file_name () {
|
32
|
+
ls -f logs/*examples_save_md* | tail -n 1
|
33
|
+
}
|
34
|
+
|
35
|
+
# remove_ansi_escape_sequences
|
36
|
+
#
|
37
|
+
# A function to process a string by removing ANSI escape sequences and replacing
|
38
|
+
# newlines with spaces. This is particularly useful when dealing with formatted
|
39
|
+
# text output that includes color codes or other terminal formatting and needs
|
40
|
+
# to be sanitized for plain text processing.
|
41
|
+
#
|
42
|
+
# Parameters:
|
43
|
+
# $1 (string): The input string that may contain ANSI escape sequences and/or
|
44
|
+
# various whitespace characters (newlines, tabs, etc.).
|
45
|
+
#
|
46
|
+
# Returns:
|
47
|
+
# The processed string with ANSI escape sequences removed and all specified
|
48
|
+
# whitespace characters replaced by spaces.
|
49
|
+
#
|
50
|
+
# Example:
|
51
|
+
# input="Hello \e[31mWorld\e[0m\nThis\tis\ra test.\vPage\fBreak"
|
52
|
+
# result=$(remove_ansi_escape_sequences "$input")
|
53
|
+
# echo "$result"
|
54
|
+
# # Output: "Hello World This is a test. Page Break"
|
55
|
+
#
|
56
|
+
# Note:
|
57
|
+
# - The function does not modify the original input string but returns a new
|
58
|
+
# processed string.
|
59
|
+
# - ANSI escape sequences are sequences used to control formatting, color, and
|
60
|
+
# other output options on text terminals.
|
61
|
+
# - The following whitespace characters are replaced with spaces: newlines (\n),
|
62
|
+
# tabs (\t), carriage returns (\r), vertical tabs (\v), and form feeds (\f).
|
63
|
+
#
|
64
|
+
remove_ansi_escape_sequences() {
|
65
|
+
echo -en "$1" | perl -pe 's/\e\[\?*[0-9;]*[a-zA-Z]//g' | tr '\n\t\r\v\f' ' '
|
66
|
+
}
|
67
|
+
|
68
|
+
run_mde_specs_md_args_expect_xansi () {
|
69
|
+
expected="${!#}"
|
70
|
+
exec_mde docs/dev/specs.md ${@:1:$#-1}
|
71
|
+
|
72
|
+
filter="${BATS_OUTPUT_FILTER:-A}"
|
73
|
+
if ( ! expect_equal_with_conversion "$expected" "$output" "$filter" ); then
|
74
|
+
echo -e "- command: ${@:1:$#-1}"
|
75
|
+
echo -e "- expected:\n$expected"
|
76
|
+
echo_hexdump "$expected"
|
77
|
+
echo -e "- output:\n$(text_filter_ansi "$output" "$filter")"
|
78
|
+
echo_hexdump "$output"
|
79
|
+
fi
|
80
|
+
|
81
|
+
expect_equal_with_conversion "$expected" "$output" "$filter"
|
82
|
+
(( $status != $0 )) && echo "- status: $status"
|
83
|
+
[ "$status" -eq 0 ]
|
84
|
+
}
|
85
|
+
|
86
|
+
spec_mde_args_expect () {
|
87
|
+
# while :; do
|
88
|
+
# SHIFT_COUNT=2
|
89
|
+
# case "$1" in
|
90
|
+
# --ansver) RANSVER="$2" ;;
|
91
|
+
# --auto) TTY="" ; SHIFT_COUNT=1 ;;
|
92
|
+
# *) break ;;
|
93
|
+
# esac
|
94
|
+
# shift "$SHIFT_COUNT"
|
95
|
+
# done
|
96
|
+
spec_mde_args_grep_filter_expect ${@:1:$#-1} "$BATS_OUTPUT_GREP" "$BATS_OUTPUT_FILTER" "${@: -1}"
|
97
|
+
}
|
98
|
+
|
99
|
+
spec_mde_args_grep_filter_expect () {
|
100
|
+
local remaining="${@:1:$(($#-3))}"
|
101
|
+
local pattern="${@: -3:1}"
|
102
|
+
local filter="${@: -2:1}"
|
103
|
+
local expected="${@: -1}"
|
104
|
+
SL="${BATS_SLEEP}"
|
105
|
+
local STATUS="${BATS_STATUS:-0}"
|
106
|
+
|
107
|
+
if [[ -z $SL ]]; then
|
108
|
+
# echo bin/bmde "$remaining"
|
109
|
+
run bin/bmde $remaining
|
110
|
+
else
|
111
|
+
bash -c "
|
112
|
+
SL=$SL
|
113
|
+
bin/bmde $remaining >/tmp/mde.out &"'
|
114
|
+
app_pid=$!
|
115
|
+
sleep $SL
|
116
|
+
kill $app_pid && wait $app_pid 2>/dev/null
|
117
|
+
ls -al /tmp/mde.out
|
118
|
+
# cat /tmp/mde.out
|
119
|
+
:'
|
120
|
+
output="$(cat /tmp/mde.out)"
|
121
|
+
rm /tmp/mde.out
|
122
|
+
fi
|
123
|
+
local output0="$output"
|
124
|
+
if [[ -n $pattern ]]; then
|
125
|
+
# prevent error from grep
|
126
|
+
output="$(echo -en "$output" | grep "$pattern")" || :
|
127
|
+
fi
|
128
|
+
|
129
|
+
if ( ! expect_equal_with_conversion "$expected" "$output" "$filter"); then
|
130
|
+
echo -e "- output_$(echo "$output" | wc -l)_$(echo -n "$output" | wc -c):\n$output"
|
131
|
+
[[ $filter == A ]] && echo_hexdump "$output"
|
132
|
+
|
133
|
+
if [[ $filter == A ]]; then
|
134
|
+
echo -e "- converted_$(echo "$output" | wc -l)_$(echo -n "$output" | wc -c):"
|
135
|
+
echo "$(remove_ansi_escape_sequences "$output")"
|
136
|
+
echo_hexdump "$(remove_ansi_escape_sequences "$output")"
|
137
|
+
fi
|
138
|
+
echo -e "- expected_$(echo "$expected" | wc -l)_$(echo -n "$expected" | wc -c):\n$expected"
|
139
|
+
[[ $filter == A ]] && echo_hexdump "$expected"
|
140
|
+
fi
|
141
|
+
expect_equal_with_conversion "$expected" "$output" "$filter"
|
142
|
+
(( $status != $STATUS )) && echo "- status: $status"
|
143
|
+
[ "$status" -eq $STATUS ]
|
144
|
+
}
|
145
|
+
|
146
|
+
text_filter_ansi () {
|
147
|
+
if [[ $# -eq 2 ]]; then
|
148
|
+
remove_ansi_escape_sequences "$1"
|
149
|
+
else
|
150
|
+
echo -n "$1"
|
151
|
+
fi
|
152
|
+
}
|
data/bin/tab_completion.sh
CHANGED
@@ -13,7 +13,7 @@ __filedirs_all()
|
|
13
13
|
}
|
14
14
|
|
15
15
|
_mde_echo_version() {
|
16
|
-
echo "2.
|
16
|
+
echo "2.4.0"
|
17
17
|
}
|
18
18
|
|
19
19
|
_mde() {
|
@@ -32,27 +32,29 @@ _mde() {
|
|
32
32
|
|
33
33
|
--config) COMPREPLY="."; return 0 ;;
|
34
34
|
|
35
|
-
--debug) COMPREPLY="
|
35
|
+
--debug) COMPREPLY="f"; return 0 ;;
|
36
36
|
|
37
|
-
-d) COMPREPLY="
|
37
|
+
-d) COMPREPLY="f"; return 0 ;;
|
38
38
|
|
39
|
-
--dump-
|
39
|
+
--dump-blocks-in-file) COMPREPLY="f"; return 0 ;;
|
40
40
|
|
41
|
-
--dump-
|
41
|
+
--dump-delegate-object) COMPREPLY="f"; return 0 ;;
|
42
42
|
|
43
|
-
--dump-
|
43
|
+
--dump-dependencies) COMPREPLY="f"; return 0 ;;
|
44
44
|
|
45
|
-
--dump-inherited-
|
45
|
+
--dump-inherited-block-names) COMPREPLY="f"; return 0 ;;
|
46
46
|
|
47
|
-
--dump-inherited-
|
47
|
+
--dump-inherited-dependencies) COMPREPLY="f"; return 0 ;;
|
48
48
|
|
49
|
-
--dump-
|
49
|
+
--dump-inherited-lines) COMPREPLY="f"; return 0 ;;
|
50
50
|
|
51
|
-
--dump-
|
51
|
+
--dump-menu-blocks) COMPREPLY="f"; return 0 ;;
|
52
52
|
|
53
|
-
--
|
53
|
+
--dump-selected-block) COMPREPLY="f"; return 0 ;;
|
54
54
|
|
55
|
-
-
|
55
|
+
--execute-in-own-window) COMPREPLY="f"; return 0 ;;
|
56
|
+
|
57
|
+
-w) COMPREPLY="f"; return 0 ;;
|
56
58
|
|
57
59
|
--filename) COMPREPLY="."; return 0 ;;
|
58
60
|
|
@@ -68,8 +70,16 @@ _mde() {
|
|
68
70
|
|
69
71
|
-?) COMPREPLY="''"; return 0 ;;
|
70
72
|
|
73
|
+
--list-blocks-eval) COMPREPLY="''"; return 0 ;;
|
74
|
+
|
75
|
+
--list-blocks-message) COMPREPLY="oname"; return 0 ;;
|
76
|
+
|
77
|
+
--list-blocks-type) COMPREPLY="0"; return 0 ;;
|
78
|
+
|
71
79
|
--list-count) COMPREPLY="32"; return 0 ;;
|
72
80
|
|
81
|
+
--format) COMPREPLY="text"; return 0 ;;
|
82
|
+
|
73
83
|
--load-code) COMPREPLY="''"; return 0 ;;
|
74
84
|
|
75
85
|
-l) COMPREPLY="''"; return 0 ;;
|
@@ -78,17 +88,19 @@ _mde() {
|
|
78
88
|
|
79
89
|
-o) COMPREPLY="''"; return 0 ;;
|
80
90
|
|
81
|
-
--output-script) COMPREPLY="
|
91
|
+
--output-script) COMPREPLY="f"; return 0 ;;
|
82
92
|
|
83
|
-
--output-stdout) COMPREPLY="
|
93
|
+
--output-stdout) COMPREPLY="t"; return 0 ;;
|
84
94
|
|
85
95
|
--path) COMPREPLY="."; return 0 ;;
|
86
96
|
|
87
97
|
-p) COMPREPLY="."; return 0 ;;
|
88
98
|
|
89
|
-
--
|
99
|
+
--pause-after-script-execution) COMPREPLY="f"; return 0 ;;
|
100
|
+
|
101
|
+
--user-must-approve) COMPREPLY="f"; return 0 ;;
|
90
102
|
|
91
|
-
-q) COMPREPLY="
|
103
|
+
-q) COMPREPLY="f"; return 0 ;;
|
92
104
|
|
93
105
|
--display-level) COMPREPLY="1"; return 0 ;;
|
94
106
|
|
@@ -100,7 +112,7 @@ _mde() {
|
|
100
112
|
# present matching option names
|
101
113
|
#
|
102
114
|
if [[ ${cur} == -* ]] ; then
|
103
|
-
opts=("--block-name" "--config" "--debug" "--
|
115
|
+
opts=("--block-name" "--config" "--debug" "--dig" "--dump-blocks-in-file" "--dump-delegate-object" "--dump-dependencies" "--dump-inherited-block-names" "--dump-inherited-dependencies" "--dump-inherited-lines" "--dump-menu-blocks" "--dump-selected-block" "--execute-in-own-window" "--exit" "--filename" "--find" "--find-path" "--help" "--history" "--how" "--list-blocks" "--list-blocks-eval" "--list-blocks-message" "--list-blocks-type" "--list-count" "--list-default-env" "--list-default-yaml" "--list-docs" "--format" "--list-recent-output" "--list-recent-scripts" "--load-code" "--mine" "--open" "--output-script" "--output-stdout" "--path" "--pause-after-script-execution" "--probe" "--publish-document-file-mode" "--publish-document-file-name" "--pwd" "--run-last-script" "--sift" "--tab-completions" "--user-must-approve" "--version" "--display-level")
|
104
116
|
COMPREPLY=( $(compgen -W "$(printf "'%s' " "${opts[@]}")" -- "${cur}") )
|
105
117
|
|
106
118
|
return 0
|
@@ -123,11 +135,13 @@ _mde() {
|
|
123
135
|
|
124
136
|
-d) COMPREPLY=".BOOL."; return 0 ;;
|
125
137
|
|
138
|
+
--dump-blocks-in-file) COMPREPLY=".BOOL."; return 0 ;;
|
139
|
+
|
126
140
|
--dump-delegate-object) COMPREPLY=".BOOL."; return 0 ;;
|
127
141
|
|
128
|
-
--dump-
|
142
|
+
--dump-dependencies) COMPREPLY=".BOOL."; return 0 ;;
|
129
143
|
|
130
|
-
--dump-inherited-
|
144
|
+
--dump-inherited-block-names) COMPREPLY=".BOOL."; return 0 ;;
|
131
145
|
|
132
146
|
--dump-inherited-dependencies) COMPREPLY=".BOOL."; return 0 ;;
|
133
147
|
|
@@ -137,7 +151,7 @@ _mde() {
|
|
137
151
|
|
138
152
|
--dump-selected-block) COMPREPLY=".BOOL."; return 0 ;;
|
139
153
|
|
140
|
-
--
|
154
|
+
--execute-in-own-window) COMPREPLY=".BOOL."; return 0 ;;
|
141
155
|
|
142
156
|
-w) COMPREPLY=".BOOL."; return 0 ;;
|
143
157
|
|
@@ -155,8 +169,16 @@ _mde() {
|
|
155
169
|
|
156
170
|
-?) COMPREPLY=".HOW."; return 0 ;;
|
157
171
|
|
172
|
+
--list-blocks-eval) COMPREPLY=".EVAL."; return 0 ;;
|
173
|
+
|
174
|
+
--list-blocks-message) COMPREPLY=".MESSAGE."; return 0 ;;
|
175
|
+
|
176
|
+
--list-blocks-type) COMPREPLY=".TYPE."; return 0 ;;
|
177
|
+
|
158
178
|
--list-count) COMPREPLY=".INT.1-."; return 0 ;;
|
159
179
|
|
180
|
+
--format) COMPREPLY=".FORMAT."; return 0 ;;
|
181
|
+
|
160
182
|
--load-code) COMPREPLY=".PATH."; return 0 ;;
|
161
183
|
|
162
184
|
-l) COMPREPLY=".PATH."; return 0 ;;
|
@@ -173,6 +195,8 @@ _mde() {
|
|
173
195
|
|
174
196
|
-p) COMPREPLY=".RELATIVE_PATH."; return 0 ;;
|
175
197
|
|
198
|
+
--pause-after-script-execution) COMPREPLY=".BOOL."; return 0 ;;
|
199
|
+
|
176
200
|
--user-must-approve) COMPREPLY=".BOOL."; return 0 ;;
|
177
201
|
|
178
202
|
-q) COMPREPLY=".BOOL."; return 0 ;;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
```vars :[set_vault_1]
|
2
|
+
VAULT: 1
|
3
|
+
```
|
4
|
+
|
5
|
+
::: This is a Port block that saves current/live environment variable values into the generated script.
|
6
|
+
|
7
|
+
```port :[vault]
|
8
|
+
VAULT
|
9
|
+
```
|
10
|
+
|
11
|
+
```bash :VAULT-is-export
|
12
|
+
exported_vault=$(export -p | grep '^declare -x VAULT')
|
13
|
+
# (No output, var is not exported)
|
14
|
+
```
|
15
|
+
|
16
|
+
::: This block requires the Port block and displays the value.
|
17
|
+
::: The Port block contributes the variable VAULT to the generated script.
|
18
|
+
|
19
|
+
```bash :show +[set_vault_1] +[vault]
|
20
|
+
: ${VAULT:=This variable has not been set.}
|
21
|
+
echo "VAULT: $VAULT"
|
22
|
+
```
|
23
|
+
|
24
|
+
@import bats-document-configuration.md
|
data/docs/dev/specs.md
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# Automated tests
|
2
|
+
|
3
|
+
## Shell blocks
|
4
|
+
|
5
|
+
```bash :bash1
|
6
|
+
echo "bash1!"
|
7
|
+
```
|
8
|
+
|
9
|
+
## Link Vars
|
10
|
+
|
11
|
+
| inputs to MDE| expected output
|
12
|
+
| -| -
|
13
|
+
| '[VARIABLE1]'| ' VARIABLE1: 1'
|
14
|
+
| '[VARIABLE1]' '(echo-VARIABLE1)'| ' VARIABLE1: 1 VARIABLE1: 1'
|
15
|
+
|
16
|
+
```bash :(echo-VARIABLE1)
|
17
|
+
for var_name in "VARIABLE1"; do
|
18
|
+
# echo -e "\033[0;33m${var_name}\033[0;31m:\033[0m ${!var_name}"
|
19
|
+
echo -e "${var_name}: ${!var_name}"
|
20
|
+
done
|
21
|
+
```
|
22
|
+
```link :[VARIABLE1]
|
23
|
+
block: (echo-VARIABLE1)
|
24
|
+
vars:
|
25
|
+
VARIABLE1: 1
|
26
|
+
```
|
27
|
+
|
28
|
+
## Nested wraps
|
29
|
+
|
30
|
+
| inputs to MDE| expected output
|
31
|
+
| -| -
|
32
|
+
| '[single]'| ' single-body'
|
33
|
+
| '[inverted-nesting]'| ' inner-before outer-before single-body outer-after inner-after'
|
34
|
+
|
35
|
+
```bash :[single] +{outer}
|
36
|
+
echo single-body
|
37
|
+
```
|
38
|
+
Expect output: "outer-before", "inner-before", "nested body", "inner-after", and "outer-after".
|
39
|
+
```bash :[nested] +{outer} +{inner}
|
40
|
+
echo nested-body
|
41
|
+
```
|
42
|
+
```bash :[inverted-nesting] +{inner} +{outer}
|
43
|
+
echo inverted-nesting
|
44
|
+
```
|
45
|
+
```bash :{inner}
|
46
|
+
echo inner-before
|
47
|
+
```
|
48
|
+
```bash :{inner-after}
|
49
|
+
echo inner-after
|
50
|
+
```
|
51
|
+
```bash :{outer}
|
52
|
+
echo outer-before
|
53
|
+
```
|
54
|
+
```bash :{outer-after}
|
55
|
+
echo outer-after
|
56
|
+
```
|
57
|
+
|
58
|
+
@import specs-import.md
|
59
|
+
|
60
|
+
/ Import `{wrap1}` blocks.
|
61
|
+
```bash :[test-wrap-from-import] +{wrap-from-import}
|
62
|
+
echo "test-wrap-from-import"
|
63
|
+
```
|
64
|
+
|
65
|
+
/ Include a wrapped block.
|
66
|
+
```bash :[test-require-wrapped-block] +[single]
|
67
|
+
echo "test-require-wrapped-block"
|
68
|
+
```
|
69
|
+
|
70
|
+
```opts :(disable_dump_*)
|
71
|
+
dump_blocks_in_file: false
|
72
|
+
dump_dependencies: false
|
73
|
+
dump_inherited_block_names: false
|
74
|
+
dump_inherited_dependencies: false
|
75
|
+
dump_inherited_lines: false
|
76
|
+
dump_menu_blocks: false
|
77
|
+
```
|
78
|
+
|
79
|
+
@import bats-document-configuration.md
|
80
|
+
```opts :(document_options) +(disable_dump_*)
|
81
|
+
menu_note_color: 'plain'
|
82
|
+
menu_with_inherited_lines: false
|
83
|
+
```
|
data/examples/bash-blocks.md
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
# Demonstrate requiring shell blocks
|
2
2
|
## Requiring a named block
|
3
|
-
:::
|
3
|
+
::: Select below to trigger. If it prints "species", "genus", the required block was processed.
|
4
4
|
The un-named block prints "species" and requires block "genus".
|
5
5
|
```bash +genus
|
6
6
|
echo "species"
|
7
7
|
```
|
8
|
-
:::
|
8
|
+
::: Select below to trigger. If it prints "genus", the block was processed.
|
9
9
|
The named block prints "genus".
|
10
10
|
```bash :genus
|
11
11
|
echo "genus"
|
12
12
|
```
|
13
13
|
|
14
14
|
## Requiring a block with a nickname and a hidden block
|
15
|
-
:::
|
15
|
+
::: Select below to trigger. If it prints "family", "order", "class" the required blocks were processed.
|
16
16
|
The named block prints "family" and requires blocks "[order]" and "(class)".
|
17
17
|
```bash :family +[order] +(class)
|
18
18
|
echo "family"
|
@@ -39,7 +39,7 @@ The hidden block "(biology)" prints "biology".
|
|
39
39
|
```bash :(biology)
|
40
40
|
echo "biology"
|
41
41
|
```
|
42
|
-
:::
|
42
|
+
::: Select below to trigger. If it prints "biology", "phylum", "kingdom", "domain", and "taxonomy" the required blocks were processed.
|
43
43
|
The named block prints "kingdom" and requires blocks wrapper blocks "{phylum-domain}" and "{phylum-domain-after}".
|
44
44
|
Notice the wrapper blocks are exclusive to the single block with the requirement.
|
45
45
|
```bash :kingdom +{phylum-domain} +(biology) +(taxonomy)
|
data/examples/block-names.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
## Demonstrate handling of special characters in block names
|
2
2
|
|
3
|
-
:::
|
3
|
+
::: Select below to trigger. If it prints "1","2","3","4", the Link blocks were required.
|
4
4
|
Long block names can be required by a Bash block.
|
5
5
|
```bash :calling-block +long_block_name_12345678901234567890123456789012345678901234567890 +(long_block_name_12345678901234567890123456789012345678901234567890) +[long_block_name_12345678901234567890123456789012345678901234567890]
|
6
6
|
echo '1'
|
@@ -31,7 +31,7 @@ Block names with all chars.
|
|
31
31
|
/ UTF-8
|
32
32
|
/ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
|
33
33
|
/ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
|
34
|
-
:::
|
34
|
+
::: Select below to trigger. If it prints "Success", the Link block was processed.
|
35
35
|
This block name uses the printable characters in the first 128 values. It is executable.
|
36
36
|
```link :!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
|
37
37
|
block: (success)
|
data/examples/import0.md
CHANGED
@@ -40,3 +40,26 @@ menu_include_imported_notes: true
|
|
40
40
|
```link :page_1
|
41
41
|
file: examples/import1.md
|
42
42
|
```
|
43
|
+
|
44
|
+
::: Imported `{wrap1}` blocks.
|
45
|
+
```bash :test-wrap1 +{wrap1}
|
46
|
+
echo "test wrap1"
|
47
|
+
```
|
48
|
+
|
49
|
+
::: Imported and Overloaded `{wrap2}` blocks.
|
50
|
+
```bash :test-wrap2 +{wrap2}
|
51
|
+
echo "test wrap2 - overloaded"
|
52
|
+
```
|
53
|
+
```bash :{wrap2}
|
54
|
+
echo "wrap2 before - overloaded"
|
55
|
+
```
|
56
|
+
```bash :{wrap2-after}
|
57
|
+
echo "wrap2 after- overloaded"
|
58
|
+
```
|
59
|
+
Local wrapped blocks, before or after the principal block, generate the same output.
|
60
|
+
__Output__
|
61
|
+
wrap2 before
|
62
|
+
wrap2 before - overloaded
|
63
|
+
test wrap2 - overloaded
|
64
|
+
wrap2 after
|
65
|
+
wrap2 after- overloaded
|
data/examples/import1.md
CHANGED
@@ -9,3 +9,16 @@ echo "page 1 block 1 visible"
|
|
9
9
|
```bash :(page1_block2)
|
10
10
|
echo "page 1 block 2 hidden"
|
11
11
|
```
|
12
|
+
|
13
|
+
```bash :{wrap1}
|
14
|
+
echo "wrap1 before"
|
15
|
+
```
|
16
|
+
```bash :{wrap1-after}
|
17
|
+
echo "wrap1 after"
|
18
|
+
```
|
19
|
+
```bash :{wrap2}
|
20
|
+
echo "wrap2 before"
|
21
|
+
```
|
22
|
+
```bash :{wrap2-after}
|
23
|
+
echo "wrap2 after"
|
24
|
+
```
|
@@ -8,7 +8,7 @@ pause_after_script_execution: true
|
|
8
8
|
```
|
9
9
|
|
10
10
|
## Demonstrate a link block that sets a variable
|
11
|
-
:::
|
11
|
+
::: Select below to trigger. If it prints "VARIABLE1: 1", the Link block was processed.
|
12
12
|
The hidden block "(print-VARIABLE1)" is required below. It prints variable "VARIABLE1".
|
13
13
|
```bash :(print-VARIABLE1)
|
14
14
|
source bin/colorize_env_vars.sh
|
@@ -27,7 +27,7 @@ This block "[bash_set_to_3]" is required below. It sets the variable "ALPHA".
|
|
27
27
|
```bash :[bash_set_to_3]
|
28
28
|
ALPHA=3
|
29
29
|
```
|
30
|
-
:::
|
30
|
+
::: Select below to trigger. If it prints "ALPHA: 3", the Link block was processed.
|
31
31
|
These blocks require the *code* of the named shell block.
|
32
32
|
```link +[bash_set_to_3]
|
33
33
|
block: "(display_variable_ALPHA)"
|
@@ -40,7 +40,7 @@ This block "[bash_set_to_4]" is required below. It prints a command that sets th
|
|
40
40
|
```bash :[bash_set_to_4]
|
41
41
|
echo "ALPHA=4"
|
42
42
|
```
|
43
|
-
:::
|
43
|
+
::: Select below to trigger. If it prints "ALPHA: 4", the Link block was processed.
|
44
44
|
These blocks require the *output* of the execution of the code in the named shell block.
|
45
45
|
```link +[bash_set_to_4]
|
46
46
|
eval: true
|
@@ -8,21 +8,21 @@ menu_divider_color: green # color to indicate success
|
|
8
8
|
## Automatic documents options
|
9
9
|
::: If this text is green, the required Opts block was processed; if this text is red, the required Opts block was NOT processed hidden, name: "(custom)"
|
10
10
|
|
11
|
-
##
|
12
|
-
:::
|
11
|
+
## Select this named block to test
|
12
|
+
::: Select below to trigger. If this text starts with "+++", the required Opts block was processed; name: "custom"
|
13
13
|
```opts :custom
|
14
14
|
menu_divider_format: "+++ %{line}" # format to indicate success
|
15
15
|
```
|
16
16
|
|
17
|
-
##
|
18
|
-
:::
|
17
|
+
## Select this nicknamed block to test
|
18
|
+
::: Select below to trigger. If this text starts with "!!!", the Opts block was processed; name: "[custom]"
|
19
19
|
This block has a nickname "[custom]". It is executable.
|
20
20
|
```opts :[custom]
|
21
21
|
menu_divider_format: "!!! %{line}" # format to indicate success
|
22
22
|
```
|
23
23
|
|
24
|
-
##
|
25
|
-
:::
|
24
|
+
## Select this unnamed block to test
|
25
|
+
::: Select below to trigger. If this text starts with "@@@", the required Opts block was processed; unnamed
|
26
26
|
```opts
|
27
27
|
menu_divider_format: "@@@ %{line}" # format to indicate success
|
28
28
|
```
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Demonstrate Tables
|
2
|
+
|
3
|
+
Table flush at left.
|
4
|
+
Centered columns.
|
5
|
+
| Common Name| Species| Genus| Family| Year Discovered
|
6
|
+
|:-:|:-:|:-:|:-:|:-:
|
7
|
+
| Tapanuli Orangutan| Pongo tapanuliensis| Pongo| Hominidae| 2017
|
8
|
+
| Psychedelic Frogfish| Histiophryne psychedelica| Histiophryne| Antennariidae| 2009
|
9
|
+
| Ruby Seadragon| Phyllopteryx dewysea| Phyllopteryx| Syngnathidae| 2015
|
10
|
+
|
11
|
+
Table indented with two spaces.
|
12
|
+
Left-justified columns.
|
13
|
+
| Common Name| Species| Genus| Family| Year Discovered
|
14
|
+
|:-|:-|:-|:-|:-
|
15
|
+
| Illacme tobini (Millipede)| Illacme tobini| Illacme| Siphonorhinidae| 2016
|
16
|
+
| Cappuccino Snake| Hydrodynastes bicinctus| Hydrodynastes| Colubridae| 2021
|
17
|
+
| Homo luzonensis| Homo luzonensis| Homo| Hominidae| 2019
|
18
|
+
|
19
|
+
Table indented with one tab.
|
20
|
+
Right-justified columns.
|
21
|
+
| Common Name| Species| Genus| Family| Year Discovered
|
22
|
+
|-:|-:|-:|-:|-:
|
23
|
+
| Spiny Dandelion| Taraxacum japonicum| Taraxacum| Asteraceae| 2022
|
24
|
+
| Mythical Monkey| Cercopithecus lomamiensis| Cercopithecus| Cercopithecidae| 2012
|
25
|
+
| Yeti Crab| Kiwa hirsuta| Kiwa| Kiwaidae| 2005
|
26
|
+
|
27
|
+
## Non-table text is not modified
|
28
|
+
1. |
|
29
|
+
2. ||
|
30
|
+
|
|
31
|
+
||
|