markdown_exec 1.3.8 → 1.3.9
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 +41 -2
- data/Gemfile +1 -0
- data/Gemfile.lock +5 -1
- data/Rakefile +11 -7
- data/bin/colorize_env_vars.sh +7 -0
- data/bin/tab_completion.sh +19 -19
- data/examples/duplicate_block.md +10 -0
- data/examples/import0.md +8 -0
- data/examples/import1.md +10 -0
- data/examples/include.md +12 -0
- data/examples/infile_config.md +10 -0
- data/examples/linked1.md +28 -0
- data/examples/linked2.md +28 -0
- data/examples/opts.md +13 -0
- data/examples/pass-through.md +14 -0
- data/examples/plant.md +23 -0
- data/examples/port.md +23 -0
- data/examples/vars.md +20 -0
- data/examples/wrap.md +33 -0
- data/lib/block_types.rb +5 -0
- data/lib/cached_nested_file_reader.rb +0 -1
- data/lib/colorize.rb +37 -23
- data/lib/fcb.rb +12 -30
- data/lib/filter.rb +13 -9
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +488 -249
- data/lib/mdoc.rb +73 -53
- data/lib/menu.src.yml +323 -267
- data/lib/menu.yml +324 -268
- metadata +17 -6
- data/lib/env_opts.rb +0 -242
- data/lib/markdown_block_manager.rb +0 -64
- data/lib/menu_options.rb +0 -0
- data/lib/menu_options.yml +0 -0
data/lib/fcb.rb
CHANGED
@@ -18,7 +18,9 @@ module MarkdownExec
|
|
18
18
|
body: nil,
|
19
19
|
call: nil,
|
20
20
|
headings: [],
|
21
|
+
dname: nil,
|
21
22
|
name: nil,
|
23
|
+
oname: nil,
|
22
24
|
reqs: [],
|
23
25
|
shell: '',
|
24
26
|
title: '',
|
@@ -27,39 +29,9 @@ module MarkdownExec
|
|
27
29
|
}.merge(options)
|
28
30
|
end
|
29
31
|
|
30
|
-
def to_h
|
31
|
-
@attrs
|
32
|
-
end
|
33
|
-
|
34
|
-
def to_yaml
|
35
|
-
@attrs.to_yaml
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
# 2023-10-07 proposed but not functional with code
|
41
|
-
#
|
42
|
-
# def method_missing(method, *args, &block)
|
43
|
-
# method_name = method.to_s
|
44
|
-
|
45
|
-
# if method_name[-1] == '='
|
46
|
-
# @attrs[method_name.chop.to_sym] = args[0]
|
47
|
-
# elsif @attrs.key?(method_name.to_sym)
|
48
|
-
# @attrs[method_name.to_sym]
|
49
|
-
# else
|
50
|
-
# super
|
51
|
-
# end
|
52
|
-
# rescue StandardError => err
|
53
|
-
# warn(error = "ERROR ** FCB.method_missing(method: #{method_name}, *args: #{args.inspect}, &block)")
|
54
|
-
# warn err.inspect
|
55
|
-
# warn(caller[0..4])
|
56
|
-
# raise err # Here, we simply propagate the original error instead of wrapping it in a StandardError.
|
57
|
-
# end
|
58
|
-
|
59
32
|
# :reek:ManualDispatch
|
60
33
|
def method_missing(method, *args, &block)
|
61
34
|
method_name = method.to_s
|
62
|
-
|
63
35
|
if @attrs.respond_to?(method_name)
|
64
36
|
@attrs.send(method_name, *args, &block)
|
65
37
|
elsif method_name[-1] == '='
|
@@ -79,6 +51,14 @@ module MarkdownExec
|
|
79
51
|
def respond_to_missing?(method_name, _include_private = false)
|
80
52
|
@attrs.key?(method_name.to_sym) || super
|
81
53
|
end
|
54
|
+
|
55
|
+
def to_h
|
56
|
+
@attrs
|
57
|
+
end
|
58
|
+
|
59
|
+
def to_yaml
|
60
|
+
@attrs.to_yaml
|
61
|
+
end
|
82
62
|
end
|
83
63
|
end
|
84
64
|
|
@@ -92,7 +72,9 @@ if $PROGRAM_NAME == __FILE__
|
|
92
72
|
body: 'Sample body',
|
93
73
|
call: 'Sample call',
|
94
74
|
headings: %w[Header1 Header2],
|
75
|
+
dname: 'Sample name',
|
95
76
|
name: 'Sample name',
|
77
|
+
oname: 'Sample name',
|
96
78
|
reqs: %w[req1 req2],
|
97
79
|
shell: 'bash',
|
98
80
|
text: 'Sample Text',
|
data/lib/filter.rb
CHANGED
@@ -35,10 +35,10 @@ module MarkdownExec
|
|
35
35
|
wrap_name: nil
|
36
36
|
}
|
37
37
|
|
38
|
-
name = fcb.
|
38
|
+
name = fcb.oname
|
39
39
|
shell = fcb.fetch(:shell, '')
|
40
40
|
|
41
|
-
apply_name_filters(options, filters, name)
|
41
|
+
apply_name_filters(options, filters, name) #if shell == 'bash'
|
42
42
|
apply_shell_filters(options, filters, shell)
|
43
43
|
apply_other_filters(options, filters, fcb)
|
44
44
|
|
@@ -107,7 +107,7 @@ module MarkdownExec
|
|
107
107
|
# @param fcb [Hash] The fenced code block to be evaluated.
|
108
108
|
#
|
109
109
|
def self.apply_other_filters(options, filters, fcb)
|
110
|
-
name = fcb.
|
110
|
+
name = fcb.oname
|
111
111
|
shell = fcb.fetch(:shell, '')
|
112
112
|
filters[:fcb_chrome] = fcb.fetch(:chrome, false)
|
113
113
|
|
@@ -166,13 +166,17 @@ if $PROGRAM_NAME == __FILE__
|
|
166
166
|
require 'bundler/setup'
|
167
167
|
Bundler.require(:default)
|
168
168
|
|
169
|
+
require 'fcb'
|
169
170
|
require 'minitest/autorun'
|
170
171
|
|
171
172
|
module MarkdownExec
|
172
173
|
class FilterTest < Minitest::Test
|
173
174
|
def setup
|
174
175
|
@options = {}
|
175
|
-
@fcb =
|
176
|
+
@fcb = FCB.new(
|
177
|
+
dname: nil,
|
178
|
+
oname: nil
|
179
|
+
)
|
176
180
|
end
|
177
181
|
|
178
182
|
# Tests for fcb_select? method
|
@@ -191,27 +195,27 @@ if $PROGRAM_NAME == __FILE__
|
|
191
195
|
def test_hidden_name_condition
|
192
196
|
@options[:hide_blocks_by_name] = true
|
193
197
|
@options[:block_name_hidden_match] = 'hidden'
|
194
|
-
@fcb[:
|
198
|
+
@fcb[:oname] = 'hidden_block'
|
195
199
|
refute Filter.fcb_select?(@options, @fcb)
|
196
200
|
end
|
197
201
|
|
198
202
|
def test_include_name_condition
|
199
203
|
@options[:hide_blocks_by_name] = true
|
200
204
|
@options[:block_name_indlude_match] = 'include'
|
201
|
-
@fcb[:
|
205
|
+
@fcb[:oname] = 'include_block'
|
202
206
|
assert Filter.fcb_select?(@options, @fcb)
|
203
207
|
end
|
204
208
|
|
205
209
|
def test_wrap_name_condition
|
206
210
|
@options[:hide_blocks_by_name] = true
|
207
211
|
@options[:block_name_wrapper_match] = 'wrap'
|
208
|
-
@fcb[:
|
212
|
+
@fcb[:oname] = 'wrap_block'
|
209
213
|
assert Filter.fcb_select?(@options, @fcb)
|
210
214
|
end
|
211
215
|
|
212
216
|
def test_name_exclude_condition
|
213
217
|
@options[:block_name] = 'test'
|
214
|
-
@fcb[:
|
218
|
+
@fcb[:oname] = 'sample'
|
215
219
|
refute Filter.fcb_select?(@options, @fcb)
|
216
220
|
end
|
217
221
|
|
@@ -223,7 +227,7 @@ if $PROGRAM_NAME == __FILE__
|
|
223
227
|
|
224
228
|
def test_name_select_condition
|
225
229
|
@options[:select_by_name_regex] = 'select'
|
226
|
-
@fcb[:
|
230
|
+
@fcb[:oname] = 'select_this'
|
227
231
|
assert Filter.fcb_select?(@options, @fcb)
|
228
232
|
end
|
229
233
|
|