markdown_exec 1.4.1 → 1.6
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 +3 -1
- data/CHANGELOG.md +22 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +6 -1
- data/bin/bmde +103 -1
- data/bin/tab_completion.sh +2 -2
- data/examples/opts.md +10 -1
- data/lib/block_types.rb +9 -5
- data/lib/filter.rb +15 -4
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +618 -361
- data/lib/mdoc.rb +106 -32
- data/lib/menu.src.yml +179 -8
- data/lib/menu.yml +65 -9
- data/lib/pty1.rb +26 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97323ce7d6c677603ca89432c9ca64e45ff205a5b6cc03a71f4be1210bf8104a
|
4
|
+
data.tar.gz: ccce852fe96571b00c4443012371ea5ad29caec29dfdc9649cec7da2c091defe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc08d47d135d9a078240c6e3001322ec8b35b8fb4f7febeabec02729240d7524a40464d9d563aeb15e5c8d09695bd0b512251d970dfede46cf07bd377af72181
|
7
|
+
data.tar.gz: ec61f969d204b0216c02e2e13d270363aef35ecf3ad6ff5a26d653e2d5c8f1608ff3e70a24ab65ab3bd48d8c546e1a6c627734c8e03e08a2440c18b1d9db7fed
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [1.6] - 2023-11-13
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- Options to remember a block's indentation in the source document and to display with same indentation in the menu.
|
8
|
+
|
9
|
+
### Changed
|
10
|
+
|
11
|
+
- Note option matches the remaining lines in the document and they are displayed in the menu.
|
12
|
+
|
13
|
+
## [1.5] - 2023-11-08
|
14
|
+
|
15
|
+
### Added
|
16
|
+
|
17
|
+
- Confirmation between execution of block and display of next menu.
|
18
|
+
- Option for block loaded automatically per document.
|
19
|
+
- Options for note lines copied from source into menu.
|
20
|
+
- Options to format menu chrome.
|
21
|
+
- Options to generate title for a block without a name.
|
22
|
+
- Remove consecutive blank lines from menu.
|
23
|
+
- Restore options between menu choices. Add options for "notes" in menu.
|
24
|
+
|
3
25
|
## [1.4.1] - 2023-11-02
|
4
26
|
|
5
27
|
### Added
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
markdown_exec (1.
|
4
|
+
markdown_exec (1.6)
|
5
5
|
clipboard (~> 1.3.6)
|
6
6
|
open3 (~> 0.1.1)
|
7
7
|
optparse (~> 0.1.1)
|
@@ -139,6 +139,8 @@ GEM
|
|
139
139
|
rubocop (~> 1.33)
|
140
140
|
rubocop-capybara (~> 2.17)
|
141
141
|
rubocop-factory_bot (~> 2.22)
|
142
|
+
ruby-graphviz (1.2.5)
|
143
|
+
rexml
|
142
144
|
ruby-progressbar (1.13.0)
|
143
145
|
ruby2_keywords (0.0.5)
|
144
146
|
shellwords (0.1.0)
|
@@ -157,6 +159,8 @@ GEM
|
|
157
159
|
concurrent-ruby (~> 1.0)
|
158
160
|
unicode-display_width (2.5.0)
|
159
161
|
uri (0.12.2)
|
162
|
+
visual_call_graph (0.4.0)
|
163
|
+
ruby-graphviz (~> 1.2, >= 1.2.0)
|
160
164
|
wisper (2.0.1)
|
161
165
|
yaml (0.2.1)
|
162
166
|
zeitwerk (2.6.12)
|
@@ -182,6 +186,7 @@ DEPENDENCIES
|
|
182
186
|
rubocop-rspec
|
183
187
|
shellwords
|
184
188
|
uri
|
189
|
+
visual_call_graph
|
185
190
|
yaml (~> 0.2.1)
|
186
191
|
|
187
192
|
BUNDLED WITH
|
data/bin/bmde
CHANGED
@@ -8,4 +8,106 @@ Bundler.require(:default)
|
|
8
8
|
|
9
9
|
require_relative '../lib/markdown_exec'
|
10
10
|
|
11
|
-
|
11
|
+
if true
|
12
|
+
|
13
|
+
MarkdownExec::MarkParse.new.run
|
14
|
+
else
|
15
|
+
|
16
|
+
def trace_event_properties(tp)
|
17
|
+
# TracePoint.new(:call, :return, :c_call, :c_return, :raise) do |tp|
|
18
|
+
# puts "Event information:"
|
19
|
+
# puts "Event type: #{tp.event}"
|
20
|
+
# puts "File: #{tp.path}"
|
21
|
+
# puts "Line: #{tp.lineno}"
|
22
|
+
# puts "Defined class: #{tp.defined_class}"
|
23
|
+
# puts "Method ID: #{tp.method_id}"
|
24
|
+
# puts "Class method ID: #{tp.defined_class} #{tp.method_id}"
|
25
|
+
# puts "Binding: #{tp.binding.inspect}"
|
26
|
+
# puts "Return value: #{tp.return_value.inspect}" if [:return, :c_return].include?(tp.event)
|
27
|
+
puts "Raised exception: #{tp.raised_exception.inspect}" if tp.event == :raise
|
28
|
+
# puts "---------------------------------"
|
29
|
+
# binding.pry
|
30
|
+
# print format("\n%-20.20s %-20.20s % 5.5d %20s %s", tp.method_id, tp.defined_class, tp.lineno, tp.path.split('/').last, caller[1].split('/').last)
|
31
|
+
|
32
|
+
# print format("\n%-20.20s %-30.30s %s", tp.method_id, tp.defined_class, caller[1].split('/').last.split(':', 3)[0..1].join(':'))
|
33
|
+
# print __LINE__, '.'
|
34
|
+
return if %i[method_missing present?].include?(tp.method_id)
|
35
|
+
return unless %r(/markdown_exec/lib/) =~ caller[1]
|
36
|
+
|
37
|
+
if [:return, :c_return].include?(tp.event)
|
38
|
+
print format("%1.1s %-20.20s %s\n", tp.event, tp.method_id, tp.return_value)
|
39
|
+
else
|
40
|
+
print format("%1.1s %-20.20s %-30.30s %20s\n", tp.event, tp.method_id, tp.defined_class, $~.post_match)
|
41
|
+
end
|
42
|
+
# end.enable
|
43
|
+
end
|
44
|
+
|
45
|
+
def start_trace(events = [:call])
|
46
|
+
trace = TracePoint.new(*events) do |tp|
|
47
|
+
trace_event_properties(tp)
|
48
|
+
end
|
49
|
+
|
50
|
+
trace.enable
|
51
|
+
yield
|
52
|
+
trace.disable
|
53
|
+
end
|
54
|
+
|
55
|
+
start_trace([:call, :return]) { MarkdownExec::MarkParse.new.run }
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
=begin
|
62
|
+
|
63
|
+
To filter what is traced, you can pass any of the following as events:
|
64
|
+
|
65
|
+
:line
|
66
|
+
execute an expression or statement on a new line
|
67
|
+
|
68
|
+
:class
|
69
|
+
start a class or module definition
|
70
|
+
|
71
|
+
:end
|
72
|
+
finish a class or module definition
|
73
|
+
|
74
|
+
:call
|
75
|
+
call a Ruby method
|
76
|
+
|
77
|
+
:return
|
78
|
+
return from a Ruby method
|
79
|
+
|
80
|
+
:c_call
|
81
|
+
call a C-language routine
|
82
|
+
|
83
|
+
:c_return
|
84
|
+
return from a C-language routine
|
85
|
+
|
86
|
+
:raise
|
87
|
+
raise an exception
|
88
|
+
|
89
|
+
:b_call
|
90
|
+
event hook at block entry
|
91
|
+
|
92
|
+
:b_return
|
93
|
+
event hook at block ending
|
94
|
+
|
95
|
+
:a_call
|
96
|
+
event hook at all calls (call, b_call, and c_call)
|
97
|
+
|
98
|
+
:a_return
|
99
|
+
event hook at all returns (return, b_return, and c_return)
|
100
|
+
|
101
|
+
:thread_begin
|
102
|
+
event hook at thread beginning
|
103
|
+
|
104
|
+
:thread_end
|
105
|
+
event hook at thread ending
|
106
|
+
|
107
|
+
:fiber_switch
|
108
|
+
event hook at fiber switch
|
109
|
+
|
110
|
+
:script_compiled
|
111
|
+
new Ruby code compiled (with eval, load or require)
|
112
|
+
|
113
|
+
=end
|
data/bin/tab_completion.sh
CHANGED
@@ -13,7 +13,7 @@ __filedirs_all()
|
|
13
13
|
}
|
14
14
|
|
15
15
|
_mde_echo_version() {
|
16
|
-
echo "1.
|
16
|
+
echo "1.6"
|
17
17
|
}
|
18
18
|
|
19
19
|
_mde() {
|
@@ -138,4 +138,4 @@ _mde() {
|
|
138
138
|
|
139
139
|
complete -o filenames -o nospace -F _mde mde
|
140
140
|
# _mde_echo_version
|
141
|
-
# echo "Updated: 2023-11-
|
141
|
+
# echo "Updated: 2023-11-13 16:19:21 UTC"
|
data/examples/opts.md
CHANGED
@@ -4,10 +4,19 @@
|
|
4
4
|
|
5
5
|
```opts :opts1
|
6
6
|
menu_divider_color: yellow
|
7
|
+
menu_note_match:
|
7
8
|
menu_task_color: fg_rgb_255_63_255
|
8
9
|
```
|
9
10
|
|
10
11
|
```opts :opts2
|
11
|
-
menu_divider_color:
|
12
|
+
menu_divider_color: red
|
13
|
+
menu_note_color: yellow
|
14
|
+
menu_note_match: "^\\+ +(?<line>.+?) *$"
|
12
15
|
menu_task_color: fg_rgb_127_127_255
|
13
16
|
```
|
17
|
+
|
18
|
+
```opts :(document_options)
|
19
|
+
menu_divider_color: green
|
20
|
+
menu_link_color: fg_rgbh_88_cc_66
|
21
|
+
menu_note_color: yellow
|
22
|
+
```
|
data/lib/block_types.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
class BlockType
|
4
|
+
ALL = [
|
5
|
+
BASH = 'bash',
|
6
|
+
LINK = 'link',
|
7
|
+
OPTS = 'opts',
|
8
|
+
PORT = 'port',
|
9
|
+
VARS = 'vars'
|
10
|
+
].freeze
|
11
|
+
end
|
data/lib/filter.rb
CHANGED
@@ -125,7 +125,7 @@ module MarkdownExec
|
|
125
125
|
|
126
126
|
return unless options[:bash_only]
|
127
127
|
|
128
|
-
filters[:shell_default] = (shell ==
|
128
|
+
filters[:shell_default] = (shell == BlockType::BASH)
|
129
129
|
end
|
130
130
|
|
131
131
|
# Evaluates the filter settings to make a final decision on
|
@@ -138,8 +138,8 @@ module MarkdownExec
|
|
138
138
|
# if it should be excluded.
|
139
139
|
#
|
140
140
|
def self.evaluate_filters(options, filters)
|
141
|
-
if
|
142
|
-
|
141
|
+
if filters[:fcb_chrome] == true
|
142
|
+
!options[:no_chrome]
|
143
143
|
elsif options[:exclude_expect_blocks] && filters[:shell_expect] == true
|
144
144
|
false
|
145
145
|
elsif filters[:hidden_name] == true
|
@@ -159,6 +159,17 @@ module MarkdownExec
|
|
159
159
|
true
|
160
160
|
end
|
161
161
|
end
|
162
|
+
|
163
|
+
# blocks for menu, without missing exit and back chrome
|
164
|
+
# remove hidden blocks
|
165
|
+
#
|
166
|
+
def self.prepared_not_in_menu?(options, fcb)
|
167
|
+
fcb[:shell] == BlockType::BASH &&
|
168
|
+
((options[:block_name_include_match].present? &&
|
169
|
+
fcb[:oname] =~ /#{options[:block_name_include_match]}/) ||
|
170
|
+
(options[:block_name_wrapper_match].present? &&
|
171
|
+
fcb[:oname] =~ /#{options[:block_name_wrapper_match]}/))
|
172
|
+
end
|
162
173
|
end
|
163
174
|
end
|
164
175
|
|
@@ -239,7 +250,7 @@ if $PROGRAM_NAME == __FILE__
|
|
239
250
|
|
240
251
|
def test_bash_only_condition_true
|
241
252
|
@options[:bash_only] = true
|
242
|
-
@fcb[:shell] =
|
253
|
+
@fcb[:shell] = BlockType::BASH
|
243
254
|
assert Filter.fcb_select?(@options, @fcb)
|
244
255
|
end
|
245
256
|
|