markdown_exec 2.0.8.3 → 2.0.8.4
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/Gemfile.lock +1 -1
- data/bin/tab_completion.sh +2 -2
- data/lib/hash_delegator.rb +21 -73
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/mdoc.rb +11 -0
- data/lib/menu.src.yml +8 -6
- data/lib/menu.yml +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 858c301950e3ca7d43bc8c8c9a87f1c340b75710c28743a02ed0811a649b46ba
|
4
|
+
data.tar.gz: 4c7445f2d0e05e974cadd163894772b865bd7f94717f6f070fda6b2db2a0ef8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c157d1ec261a140205eabe4d2ec8a30839e8b8f1c716c2d24710d3630c587e03282b11a5f27e269e02b8e1a568fbca7bf2e37537cc04d4b9d4cfce9ef1ab4803
|
7
|
+
data.tar.gz: d991a308e029da9078adb996d8735951e3100eb117bc5a1f196db040513d4e20c715c6a4a805dcd528a93bd98d1a7b125eb2d88c4d9fea7449af1ad04add67be
|
data/Gemfile.lock
CHANGED
data/bin/tab_completion.sh
CHANGED
@@ -13,7 +13,7 @@ __filedirs_all()
|
|
13
13
|
}
|
14
14
|
|
15
15
|
_mde_echo_version() {
|
16
|
-
echo "2.0.8.
|
16
|
+
echo "2.0.8.4"
|
17
17
|
}
|
18
18
|
|
19
19
|
_mde() {
|
@@ -178,4 +178,4 @@ _mde() {
|
|
178
178
|
|
179
179
|
complete -o filenames -o nospace -F _mde mde
|
180
180
|
# _mde_echo_version
|
181
|
-
# echo "Updated: 2024-06-
|
181
|
+
# echo "Updated: 2024-06-24 04:53:41 UTC"
|
data/lib/hash_delegator.rb
CHANGED
@@ -793,7 +793,7 @@ module MarkdownExec
|
|
793
793
|
end
|
794
794
|
|
795
795
|
def command_execute(command, args: [])
|
796
|
-
|
796
|
+
run_state_reset_stream_logs
|
797
797
|
@run_state.options = @delegate_object
|
798
798
|
@run_state.started_at = Time.now.utc
|
799
799
|
|
@@ -807,7 +807,6 @@ module MarkdownExec
|
|
807
807
|
command_execute_in_own_window_format_arguments(rest: args ? args.join(' ') : '')
|
808
808
|
)
|
809
809
|
)
|
810
|
-
|
811
810
|
else
|
812
811
|
@run_state.in_own_window = false
|
813
812
|
execute_command_with_streams(
|
@@ -1097,7 +1096,6 @@ module MarkdownExec
|
|
1097
1096
|
block_name: @delegate_object[:block_name],
|
1098
1097
|
document_filename: @delegate_object[:filename]
|
1099
1098
|
)
|
1100
|
-
# @dml_link_state_block_name_from_cli = @dml_link_state.block_name.present? ###
|
1101
1099
|
@run_state.block_name_from_cli = @dml_link_state.block_name.present?
|
1102
1100
|
@cli_block_name = @dml_link_state.block_name
|
1103
1101
|
@dml_now_using_cli = @run_state.block_name_from_cli
|
@@ -1482,7 +1480,6 @@ module MarkdownExec
|
|
1482
1480
|
# @param mdoc [YourMDocClass] An instance of the MDoc class.
|
1483
1481
|
#
|
1484
1482
|
def execute_shell_type(selected:, mdoc:, block_source:, link_state: LinkState.new)
|
1485
|
-
# binding.irb
|
1486
1483
|
if selected.fetch(:shell, '') == BlockType::LINK
|
1487
1484
|
debounce_reset
|
1488
1485
|
push_link_history_and_trigger_load(link_block_body: selected.fetch(:body, ''),
|
@@ -1621,11 +1618,6 @@ module MarkdownExec
|
|
1621
1618
|
bm = extract_named_captures_from_option(titlexcall,
|
1622
1619
|
@delegate_object[:block_name_match])
|
1623
1620
|
|
1624
|
-
fcb.stdin = extract_named_captures_from_option(titlexcall,
|
1625
|
-
@delegate_object[:block_stdin_scan])
|
1626
|
-
fcb.stdout = extract_named_captures_from_option(titlexcall,
|
1627
|
-
@delegate_object[:block_stdout_scan])
|
1628
|
-
|
1629
1621
|
shell_color_option = SHELL_COLOR_OPTIONS[fcb[:shell]]
|
1630
1622
|
|
1631
1623
|
if @delegate_object[:block_name_nick_match].present? && fcb.oname =~ Regexp.new(@delegate_object[:block_name_nick_match])
|
@@ -1760,7 +1752,7 @@ module MarkdownExec
|
|
1760
1752
|
file.rewind
|
1761
1753
|
|
1762
1754
|
if link_block_data.fetch(LinkKeys::EXEC, false)
|
1763
|
-
|
1755
|
+
run_state_reset_stream_logs
|
1764
1756
|
execute_command_with_streams([cmd]) do |_stdin, stdout, stderr, _thread|
|
1765
1757
|
line = stdout || stderr
|
1766
1758
|
output_lines.push(line) if line
|
@@ -1831,7 +1823,6 @@ module MarkdownExec
|
|
1831
1823
|
document_filename: File.basename(@delegate_object[:filename]),
|
1832
1824
|
document_filespec: @delegate_object[:filename],
|
1833
1825
|
home: Dir.pwd,
|
1834
|
-
# rest: '',
|
1835
1826
|
started_at: Time.now.utc.strftime(@delegate_object[:execute_command_title_time_format])
|
1836
1827
|
}
|
1837
1828
|
end
|
@@ -1885,44 +1876,6 @@ module MarkdownExec
|
|
1885
1876
|
expanded_expression
|
1886
1877
|
end
|
1887
1878
|
end
|
1888
|
-
|
1889
|
-
# private
|
1890
|
-
|
1891
|
-
# def read_block_name(line)
|
1892
|
-
# bm = extract_named_captures_from_option(line, @delegate_object[:block_name_match])
|
1893
|
-
# name = bm[:title]
|
1894
|
-
|
1895
|
-
# if @delegate_object[:block_name_nick_match].present? && line =~ Regexp.new(@delegate_object[:block_name_nick_match])
|
1896
|
-
# name = $~[0]
|
1897
|
-
# else
|
1898
|
-
# name = bm && bm[1] ? bm[:title] : name
|
1899
|
-
# end
|
1900
|
-
# name
|
1901
|
-
# end
|
1902
|
-
|
1903
|
-
# # Loads auto link block.
|
1904
|
-
# def load_auto_link_block(all_blocks, link_state, mdoc, block_source:)
|
1905
|
-
# block_name = @delegate_object[:document_load_link_block_name]
|
1906
|
-
# return unless block_name.present? && @most_recent_loaded_filename != @delegate_object[:filename]
|
1907
|
-
|
1908
|
-
# block = HashDelegator.block_find(all_blocks, :oname, block_name)
|
1909
|
-
# return unless block
|
1910
|
-
|
1911
|
-
# if block.fetch(:shell, '') != BlockType::LINK
|
1912
|
-
# HashDelegator.error_handler('must be Link block type', { abort: true })
|
1913
|
-
|
1914
|
-
# else
|
1915
|
-
# # debounce_reset
|
1916
|
-
# push_link_history_and_trigger_load(
|
1917
|
-
# link_block_body: block.fetch(:body, ''),
|
1918
|
-
# mdoc: mdoc,
|
1919
|
-
# selected: block,
|
1920
|
-
# link_state: link_state,
|
1921
|
-
# block_source: block_source
|
1922
|
-
# )
|
1923
|
-
# end
|
1924
|
-
# end
|
1925
|
-
|
1926
1879
|
# Handle expression with wildcard characters
|
1927
1880
|
def load_filespec_wildcard_expansion(expr, auto_load_single: false)
|
1928
1881
|
files = find_files(expr)
|
@@ -1958,7 +1911,6 @@ module MarkdownExec
|
|
1958
1911
|
# recreate menu with new options
|
1959
1912
|
#
|
1960
1913
|
all_blocks, mdoc = mdoc_and_blocks_from_nested_files if load_auto_opts_block(all_blocks)
|
1961
|
-
# load_auto_link_block(all_blocks, link_state, mdoc, block_source: {})
|
1962
1914
|
|
1963
1915
|
menu_blocks = mdoc.fcbs_per_options(@delegate_object)
|
1964
1916
|
add_menu_chrome_blocks!(menu_blocks: menu_blocks, link_state: link_state)
|
@@ -2077,7 +2029,7 @@ module MarkdownExec
|
|
2077
2029
|
@fout.fout formatted_string
|
2078
2030
|
end
|
2079
2031
|
|
2080
|
-
def
|
2032
|
+
def fout_execution_report
|
2081
2033
|
@fout.fout fetch_color(data_sym: :execution_report_preview_head,
|
2082
2034
|
color_sym: :execution_report_preview_frame_color)
|
2083
2035
|
[
|
@@ -2175,7 +2127,7 @@ module MarkdownExec
|
|
2175
2127
|
def post_execution_process
|
2176
2128
|
do_save_execution_output
|
2177
2129
|
output_execution_summary
|
2178
|
-
|
2130
|
+
fout_execution_report if @delegate_object[:output_execution_report]
|
2179
2131
|
end
|
2180
2132
|
|
2181
2133
|
# Prepare the blocks menu by adding labels and other necessary details.
|
@@ -2541,6 +2493,13 @@ module MarkdownExec
|
|
2541
2493
|
end
|
2542
2494
|
end
|
2543
2495
|
|
2496
|
+
def run_state_reset_stream_logs
|
2497
|
+
@run_state.files = Hash.new()
|
2498
|
+
@run_state.files[ExecutionStreams::STD_ERR] = []
|
2499
|
+
@run_state.files[ExecutionStreams::STD_IN] = []
|
2500
|
+
@run_state.files[ExecutionStreams::STD_OUT] = []
|
2501
|
+
end
|
2502
|
+
|
2544
2503
|
def runtime_exception(exception_sym, name, items)
|
2545
2504
|
if @delegate_object[exception_sym] != 0
|
2546
2505
|
data = { name: name, detail: items.join(', ') }
|
@@ -2712,9 +2671,13 @@ module MarkdownExec
|
|
2712
2671
|
dname = oname = title = fcb_title_groups.fetch(:name, '')
|
2713
2672
|
end
|
2714
2673
|
|
2674
|
+
# disable fcb for data blocks
|
2675
|
+
disabled = fcb_title_groups.fetch(:shell, '') == 'yaml' ? '' : nil
|
2676
|
+
|
2715
2677
|
MarkdownExec::FCB.new(
|
2716
2678
|
body: [],
|
2717
2679
|
call: rest.match(Regexp.new(@delegate_object[:block_calls_scan]))&.to_a&.first,
|
2680
|
+
disabled: disabled,
|
2718
2681
|
dname: dname,
|
2719
2682
|
headings: headings,
|
2720
2683
|
indent: fcb_title_groups.fetch(:indent, ''),
|
@@ -2942,21 +2905,6 @@ module MarkdownExec
|
|
2942
2905
|
|
2943
2906
|
def self.next_link_state(*args, **kwargs, &block)
|
2944
2907
|
super
|
2945
|
-
# result = super
|
2946
|
-
|
2947
|
-
# @logger ||= StdOutErrLogger.new
|
2948
|
-
# @logger.unknown(
|
2949
|
-
# HashDelegator.clean_hash_recursively(
|
2950
|
-
# { "HashDelegator.next_link_state":
|
2951
|
-
# { 'args': args,
|
2952
|
-
# 'at': Time.now.strftime('%FT%TZ'),
|
2953
|
-
# 'for': /[^\/]+:\d+/.match(caller.first)[0],
|
2954
|
-
# 'kwargs': kwargs,
|
2955
|
-
# 'return': result } }
|
2956
|
-
# )
|
2957
|
-
# )
|
2958
|
-
|
2959
|
-
# result
|
2960
2908
|
end
|
2961
2909
|
end
|
2962
2910
|
end
|
@@ -3469,7 +3417,7 @@ module MarkdownExec
|
|
3469
3417
|
end
|
3470
3418
|
|
3471
3419
|
def test_format_execution_streams_with_valid_key
|
3472
|
-
result = HashDelegator.format_execution_streams(
|
3420
|
+
result = HashDelegator.format_execution_streams(ExecutionStreams::STD_OUT,
|
3473
3421
|
{ stdout: %w[output1 output2] })
|
3474
3422
|
|
3475
3423
|
assert_equal 'output1output2', result
|
@@ -3478,7 +3426,7 @@ module MarkdownExec
|
|
3478
3426
|
def test_format_execution_streams_with_empty_key
|
3479
3427
|
@hd.instance_variable_get(:@run_state).stubs(:files).returns({})
|
3480
3428
|
|
3481
|
-
result = HashDelegator.format_execution_streams(
|
3429
|
+
result = HashDelegator.format_execution_streams(ExecutionStreams::STD_ERR)
|
3482
3430
|
|
3483
3431
|
assert_equal '', result
|
3484
3432
|
end
|
@@ -3601,19 +3549,19 @@ module MarkdownExec
|
|
3601
3549
|
|
3602
3550
|
def test_handle_stream
|
3603
3551
|
stream = StringIO.new("line 1\nline 2\n")
|
3604
|
-
file_type =
|
3552
|
+
file_type = ExecutionStreams::STD_OUT
|
3605
3553
|
|
3606
3554
|
Thread.new { @hd.handle_stream(stream: stream, file_type: file_type) }
|
3607
3555
|
|
3608
3556
|
@hd.wait_for_stream_processing
|
3609
3557
|
|
3610
3558
|
assert_equal ['line 1', 'line 2'],
|
3611
|
-
@hd.instance_variable_get(:@run_state).files[
|
3559
|
+
@hd.instance_variable_get(:@run_state).files[ExecutionStreams::STD_OUT]
|
3612
3560
|
end
|
3613
3561
|
|
3614
3562
|
def test_handle_stream_with_io_error
|
3615
3563
|
stream = StringIO.new("line 1\nline 2\n")
|
3616
|
-
file_type =
|
3564
|
+
file_type = ExecutionStreams::STD_OUT
|
3617
3565
|
stream.stubs(:each_line).raises(IOError)
|
3618
3566
|
|
3619
3567
|
Thread.new { @hd.handle_stream(stream: stream, file_type: file_type) }
|
@@ -3621,7 +3569,7 @@ module MarkdownExec
|
|
3621
3569
|
@hd.wait_for_stream_processing
|
3622
3570
|
|
3623
3571
|
assert_equal [],
|
3624
|
-
@hd.instance_variable_get(:@run_state).files[
|
3572
|
+
@hd.instance_variable_get(:@run_state).files[ExecutionStreams::STD_OUT]
|
3625
3573
|
end
|
3626
3574
|
end
|
3627
3575
|
|
data/lib/mdoc.rb
CHANGED
@@ -53,6 +53,17 @@ module MarkdownExec
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
# Collects and formats the shell command output to redirect script block code to a file or a variable.
|
57
|
+
#
|
58
|
+
# @param [Hash] fcb A hash containing information about the script block's stdout and body.
|
59
|
+
# @option fcb [Hash] :stdout A hash specifying the stdout details.
|
60
|
+
# @option stdout [Boolean] :type Indicates whether to export to a variable (true) or to write to a file (false).
|
61
|
+
# @option stdout [String] :name The name of the variable or file to which the body will be output.
|
62
|
+
# @option fcb [Array<String>] :body An array of strings representing the lines of the script block's body.
|
63
|
+
#
|
64
|
+
# @return [String] A string containing the formatted shell command to output the script block's body.
|
65
|
+
# If stdout[:type] is true, the command will export the body to a shell variable.
|
66
|
+
# If stdout[:type] is false, the command will write the body to a file.
|
56
67
|
def collect_block_code_stdout(fcb)
|
57
68
|
stdout = fcb[:stdout]
|
58
69
|
body = fcb[:body].join("\n")
|
data/lib/menu.src.yml
CHANGED
@@ -64,6 +64,7 @@
|
|
64
64
|
:procname: val_as_str
|
65
65
|
|
66
66
|
- :default: ">(?<full>(?<type>\\$)?(?<name>[A-Za-z_\\-\\.\\w]+))"
|
67
|
+
:description: Match to place block body into a file or a variable
|
67
68
|
:env_var: MDE_BLOCK_STDOUT_SCAN
|
68
69
|
:opt_name: block_stdout_scan
|
69
70
|
:procname: val_as_str
|
@@ -106,12 +107,6 @@
|
|
106
107
|
:opt_name: display_level_xbase_prefix
|
107
108
|
:procname: val_as_str
|
108
109
|
|
109
|
-
# - :default: "(document_link)"
|
110
|
-
# :description: Name of Link block to load with the document
|
111
|
-
# :env_var: MDE_DOCUMENT_LOAD_LINK_BLOCK_NAME
|
112
|
-
# :opt_name: document_load_link_block_name
|
113
|
-
# :procname: val_as_str
|
114
|
-
|
115
110
|
- :default: "(document_options)"
|
116
111
|
:description: Name of Opts block to load with the document
|
117
112
|
:env_var: MDE_DOCUMENT_LOAD_OPTS_BLOCK_NAME
|
@@ -868,6 +863,13 @@
|
|
868
863
|
:opt_name: output_execution_label_value_color
|
869
864
|
:procname: val_as_str
|
870
865
|
|
866
|
+
- :arg_name: BOOL
|
867
|
+
:default: true
|
868
|
+
:description: Output execution report at end of execution
|
869
|
+
:env_var: MDE_OUTPUT_EXECUTION_REPORT
|
870
|
+
:opt_name: output_execution_report
|
871
|
+
:procname: val_as_bool
|
872
|
+
|
871
873
|
- :arg_name: BOOL
|
872
874
|
:default: false
|
873
875
|
:description: Output saved script filename at end of execution
|
data/lib/menu.yml
CHANGED
@@ -53,6 +53,7 @@
|
|
53
53
|
:opt_name: block_stdin_scan
|
54
54
|
:procname: val_as_str
|
55
55
|
- :default: ">(?<full>(?<type>\\$)?(?<name>[A-Za-z_\\-\\.\\w]+))"
|
56
|
+
:description: Match to place block body into a file or a variable
|
56
57
|
:env_var: MDE_BLOCK_STDOUT_SCAN
|
57
58
|
:opt_name: block_stdout_scan
|
58
59
|
:procname: val_as_str
|
@@ -726,6 +727,12 @@
|
|
726
727
|
:env_var: MDE_OUTPUT_EXECUTION_LABEL_VALUE_COLOR
|
727
728
|
:opt_name: output_execution_label_value_color
|
728
729
|
:procname: val_as_str
|
730
|
+
- :arg_name: BOOL
|
731
|
+
:default: true
|
732
|
+
:description: Output execution report at end of execution
|
733
|
+
:env_var: MDE_OUTPUT_EXECUTION_REPORT
|
734
|
+
:opt_name: output_execution_report
|
735
|
+
:procname: val_as_bool
|
729
736
|
- :arg_name: BOOL
|
730
737
|
:default: false
|
731
738
|
:description: Output saved script filename at end of execution
|
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.0.8.
|
4
|
+
version: 2.0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fareed Stevenson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|