markdown_exec 2.7.1 → 2.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +33 -1
- data/Gemfile.lock +1 -1
- data/Rakefile +29 -11
- data/bats/block-type-opts.bats +23 -0
- data/bats/block-type-vars.bats +26 -0
- data/bats/block-types.bats +0 -36
- data/bats/border.bats +8 -0
- data/bats/document-shell.bats +9 -0
- data/bats/line-wrapping.bats +8 -0
- data/bin/tab_completion.sh +1 -1
- data/docs/dev/block-type-opts.md +4 -1
- data/docs/dev/block-type-vars.md +15 -4
- data/docs/dev/border.md +7 -0
- data/docs/dev/command-substitution.md +1 -0
- data/docs/dev/document-shell.md +6 -0
- data/docs/dev/line-wrapping.md +24 -0
- data/examples/link-blocks-vars.md +69 -41
- data/lib/colorize.rb +11 -37
- data/lib/fcb.rb +16 -4
- data/lib/filter.rb +3 -24
- data/lib/format_table.rb +0 -1
- data/lib/hash_delegator.rb +340 -173
- data/lib/input_sequencer.rb +7 -0
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +1 -2
- data/lib/mdoc.rb +10 -13
- data/lib/menu.src.yml +8 -4
- data/lib/menu.yml +7 -3
- data/lib/ww.rb +4 -2
- metadata +11 -3
- /data/examples/{wrap.md → wrapped-blocks.md} +0 -0
data/lib/input_sequencer.rb
CHANGED
@@ -94,13 +94,18 @@ 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
|
97
98
|
break if run_yield(:end_of_cli, &block) == :exit
|
99
|
+
# !!b
|
98
100
|
|
99
101
|
exit_when_bq_empty = false
|
100
102
|
run_yield :display_menu, &block
|
103
|
+
# !!b
|
101
104
|
|
102
105
|
choice = run_yield :user_choice, &block
|
106
|
+
# !!b
|
103
107
|
break if choice == :break
|
108
|
+
# !!b
|
104
109
|
|
105
110
|
raise BlockMissing, 'Block not recognized.' if choice.nil?
|
106
111
|
# Exit loop and method to terminate the app
|
@@ -115,7 +120,9 @@ class InputSequencer
|
|
115
120
|
if now_menu.block_name && !now_menu.block_name.empty?
|
116
121
|
block_name = now_menu.block_name
|
117
122
|
else
|
123
|
+
# break if bq_is_empty? # Exit loop if no more blocks to process
|
118
124
|
if bq_is_empty? # Exit loop if no more blocks to process
|
125
|
+
# !!b
|
119
126
|
run_yield :end_of_cli, &block
|
120
127
|
break
|
121
128
|
end
|
data/lib/markdown_exec.rb
CHANGED
@@ -19,7 +19,6 @@ require_relative 'ansi_formatter'
|
|
19
19
|
require_relative 'cached_nested_file_reader'
|
20
20
|
require_relative 'cli'
|
21
21
|
require_relative 'color_scheme'
|
22
|
-
require_relative 'colorize'
|
23
22
|
require_relative 'directory_searcher'
|
24
23
|
require_relative 'env'
|
25
24
|
require_relative 'exceptions'
|
@@ -95,7 +94,7 @@ class NamedCaptureExtractor
|
|
95
94
|
str&.match(regexp)&.named_captures&.transform_keys(&:to_sym)
|
96
95
|
end
|
97
96
|
|
98
|
-
def self.
|
97
|
+
def self.extract_named_group_match_data(match_data)
|
99
98
|
match_data&.named_captures&.transform_keys(&:to_sym)
|
100
99
|
end
|
101
100
|
end
|
data/lib/mdoc.rb
CHANGED
@@ -177,12 +177,12 @@ module MarkdownExec
|
|
177
177
|
blocks.map do |block|
|
178
178
|
(block[:wraps] || []).map do |wrap|
|
179
179
|
wrap_before = wrap.sub('}', '-before}') ### hardcoded wrap name
|
180
|
-
@table.select { |fcb|
|
180
|
+
@table.select { |fcb| fcb.code_name_included?(wrap_before, wrap) }
|
181
181
|
end.flatten(1) +
|
182
182
|
[block] +
|
183
183
|
(block[:wraps] || []).reverse.map do |wrap|
|
184
184
|
wrap_after = wrap.sub('}', '-after}') ### hardcoded wrap name
|
185
|
-
@table.select { |fcb| fcb.
|
185
|
+
@table.select { |fcb| fcb.code_name_included?(wrap_after) }
|
186
186
|
end.flatten(1)
|
187
187
|
end.flatten(1).compact
|
188
188
|
end
|
@@ -623,25 +623,22 @@ if $PROGRAM_NAME == __FILE__
|
|
623
623
|
# Mocking the @table object for testing
|
624
624
|
def setup
|
625
625
|
@table = [
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
626
|
+
FCB.new(oname: '{wrap1}'),
|
627
|
+
FCB.new(oname: '{wrap2-before}'),
|
628
|
+
FCB.new(oname: '{wrap2}'),
|
629
|
+
FCB.new(oname: '{wrap2-after}'),
|
630
|
+
FCB.new(oname: '{wrap3-before}'),
|
631
|
+
FCB.new(oname: '{wrap3}'),
|
632
|
+
FCB.new(oname: '{wrap3-after}')
|
633
633
|
]
|
634
634
|
@mdoc = MDoc.new(@table)
|
635
635
|
end
|
636
636
|
|
637
637
|
def test_collect_wrapped_blocks
|
638
638
|
# Test case 1: blocks with wraps
|
639
|
-
OpenStruct.new(oname: 'block1')
|
640
|
-
|
641
639
|
assert_equal(%w[{wrap2-before} {wrap2} b {wrap2-after}],
|
642
640
|
@mdoc.collect_wrapped_blocks(
|
643
|
-
[
|
644
|
-
wraps: ['{wrap2}'])]
|
641
|
+
[FCB.new(oname: 'b', wraps: ['{wrap2}'])]
|
645
642
|
).map(&:oname))
|
646
643
|
|
647
644
|
assert_equal(%w[{wrap2-before} {wrap2} {wrap3-before} {wrap3} c {wrap3-after} {wrap2-after}],
|
data/lib/menu.src.yml
CHANGED
@@ -200,6 +200,12 @@
|
|
200
200
|
:default: "(document_opts)"
|
201
201
|
:procname: val_as_str
|
202
202
|
|
203
|
+
- :opt_name: document_load_shell_block_name
|
204
|
+
:env_var: MDE_DOCUMENT_LOAD_SHELL_BLOCK_NAME
|
205
|
+
:description: Name of shell block to load with the document
|
206
|
+
:default: "(document_shell)"
|
207
|
+
:procname: val_as_str
|
208
|
+
|
203
209
|
- :opt_name: document_load_vars_block_name
|
204
210
|
:env_var: MDE_DOCUMENT_LOAD_VARS_BLOCK_NAME
|
205
211
|
:description: Name of Vars block to load with the document
|
@@ -676,8 +682,7 @@
|
|
676
682
|
:env_var: MDE_MENU_ACTIVE_COLOR_PASTEL_MESSAGES
|
677
683
|
:description: menu_active_color_pastel_messages
|
678
684
|
:default:
|
679
|
-
-
|
680
|
-
- on_black
|
685
|
+
- inverse
|
681
686
|
|
682
687
|
- :opt_name: menu_back_at_top
|
683
688
|
:env_var: MDE_MENU_BACK_AT_TOP
|
@@ -899,11 +904,10 @@
|
|
899
904
|
:procname: val_as_str
|
900
905
|
|
901
906
|
## lines that start with "/" are comments (hidden), not notes (visible)
|
902
|
-
# - :default: "^(?<indent>[ \t]*)(?<line>(?!/)(?<text>.*?)(?<trailing>[ \t]*))?$"
|
903
907
|
- :opt_name: menu_note_match
|
904
908
|
:env_var: MDE_MENU_NOTE_MATCH
|
905
909
|
:description: Pattern for notes in block selection menu
|
906
|
-
:default: "^(?<
|
910
|
+
:default: "^(?<indent>[ \t]*)(?<line>(?!/)(?<text>.*?)(?<trailing>[ \t]*))?$"
|
907
911
|
:procname: val_as_str
|
908
912
|
|
909
913
|
- :opt_name: menu_option_back_name
|
data/lib/menu.yml
CHANGED
@@ -166,6 +166,11 @@
|
|
166
166
|
:description: Name of Opts block to load with the document
|
167
167
|
:default: "(document_opts)"
|
168
168
|
:procname: val_as_str
|
169
|
+
- :opt_name: document_load_shell_block_name
|
170
|
+
:env_var: MDE_DOCUMENT_LOAD_SHELL_BLOCK_NAME
|
171
|
+
:description: Name of shell block to load with the document
|
172
|
+
:default: "(document_shell)"
|
173
|
+
:procname: val_as_str
|
169
174
|
- :opt_name: document_load_vars_block_name
|
170
175
|
:env_var: MDE_DOCUMENT_LOAD_VARS_BLOCK_NAME
|
171
176
|
:description: Name of Vars block to load with the document
|
@@ -572,8 +577,7 @@
|
|
572
577
|
:env_var: MDE_MENU_ACTIVE_COLOR_PASTEL_MESSAGES
|
573
578
|
:description: menu_active_color_pastel_messages
|
574
579
|
:default:
|
575
|
-
-
|
576
|
-
- on_black
|
580
|
+
- inverse
|
577
581
|
- :opt_name: menu_back_at_top
|
578
582
|
:env_var: MDE_MENU_BACK_AT_TOP
|
579
583
|
:description: Display Back option at top of menu (vs bottom)
|
@@ -762,7 +766,7 @@
|
|
762
766
|
- :opt_name: menu_note_match
|
763
767
|
:env_var: MDE_MENU_NOTE_MATCH
|
764
768
|
:description: Pattern for notes in block selection menu
|
765
|
-
:default: "^(?<
|
769
|
+
:default: "^(?<indent>[ \t]*)(?<line>(?!/)(?<text>.*?)(?<trailing>[ \t]*))?$"
|
766
770
|
:procname: val_as_str
|
767
771
|
- :opt_name: menu_option_back_name
|
768
772
|
:env_var: MDE_MENU_OPTION_BACK_NAME
|
data/lib/ww.rb
CHANGED
@@ -15,7 +15,7 @@ if $debug && ENV['WW_MINIMUM'].nil?
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def ww(*objs, **kwargs)
|
18
|
-
return unless $debug
|
18
|
+
return objs.size == 1 ? objs.first : objs unless $debug
|
19
19
|
|
20
20
|
ww0(*objs, **kwargs.merge(locations: caller_locations))
|
21
21
|
end
|
@@ -70,11 +70,13 @@ def ww0(*objs,
|
|
70
70
|
output.flush
|
71
71
|
|
72
72
|
# Optionally log to a file
|
73
|
-
return unless log_file
|
73
|
+
return objs.size == 1 ? objs.first : objs unless log_file
|
74
74
|
|
75
75
|
File.open(log_file, 'a') do |file|
|
76
76
|
file.puts(formatted_message)
|
77
77
|
end
|
78
|
+
|
79
|
+
objs.size == 1 ? objs.first : objs
|
78
80
|
end
|
79
81
|
|
80
82
|
class Array
|
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.7.
|
4
|
+
version: 2.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fareed Stevenson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|
@@ -107,12 +107,17 @@ files:
|
|
107
107
|
- assets/select_a_block.png
|
108
108
|
- assets/select_a_file.png
|
109
109
|
- bats/bats.bats
|
110
|
+
- bats/block-type-opts.bats
|
111
|
+
- bats/block-type-vars.bats
|
110
112
|
- bats/block-types.bats
|
113
|
+
- bats/border.bats
|
111
114
|
- bats/cli.bats
|
112
115
|
- bats/command-substitution.bats
|
116
|
+
- bats/document-shell.bats
|
113
117
|
- bats/fail.bats
|
114
118
|
- bats/history.bats
|
115
119
|
- bats/import.bats
|
120
|
+
- bats/line-wrapping.bats
|
116
121
|
- bats/markup.bats
|
117
122
|
- bats/mde.bats
|
118
123
|
- bats/options-collapse.bats
|
@@ -134,11 +139,14 @@ files:
|
|
134
139
|
- docs/dev/block-type-opts.md
|
135
140
|
- docs/dev/block-type-port.md
|
136
141
|
- docs/dev/block-type-vars.md
|
142
|
+
- docs/dev/border.md
|
137
143
|
- docs/dev/command-substitution.md
|
138
144
|
- docs/dev/data-blocks.md
|
139
145
|
- docs/dev/disable.md
|
146
|
+
- docs/dev/document-shell.md
|
140
147
|
- docs/dev/import-missing.md
|
141
148
|
- docs/dev/import.md
|
149
|
+
- docs/dev/line-wrapping.md
|
142
150
|
- docs/dev/linked-file.md
|
143
151
|
- docs/dev/load1.sh
|
144
152
|
- docs/dev/load_code.md
|
@@ -197,7 +205,7 @@ files:
|
|
197
205
|
- examples/variable-expansion-save-block.md
|
198
206
|
- examples/variable-expansion.md
|
199
207
|
- examples/vars-blocks.md
|
200
|
-
- examples/
|
208
|
+
- examples/wrapped-blocks.md
|
201
209
|
- lib/ansi_formatter.rb
|
202
210
|
- lib/ansi_string.rb
|
203
211
|
- lib/argument_processor.rb
|
File without changes
|