markdown_exec 2.0.8.4 → 2.2.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 +3 -2
- data/CHANGELOG.md +32 -10
- data/Gemfile +3 -3
- data/Gemfile.lock +134 -92
- data/README.md +13 -13
- data/bin/tab_completion.sh +14 -3
- data/bin/tab_completion.sh.erb +0 -1
- data/examples/bash-blocks.md +58 -0
- data/examples/block-names.md +27 -0
- data/examples/data-files.md +50 -0
- data/examples/indent.md +43 -2
- data/examples/link-blocks-block.md +5 -0
- data/examples/link-blocks-load-save.md +59 -0
- data/examples/link-blocks-vars.md +56 -0
- data/examples/linked.md +6 -101
- data/examples/opts-blocks-require.md +28 -0
- data/examples/opts_output_execution.md +46 -0
- data/examples/{port.md → port-blocks.md} +18 -9
- data/examples/save.md +79 -0
- data/examples/vars-blocks.md +38 -0
- data/lib/constants.rb +2 -1
- data/lib/fcb.rb +202 -16
- data/lib/filter.rb +12 -12
- data/lib/hash_delegator.rb +751 -371
- data/lib/link_history.rb +34 -1
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/markdown_exec.rb +56 -75
- data/lib/mdoc.rb +112 -57
- data/lib/menu.src.yml +65 -20
- data/lib/menu.yml +57 -17
- data/lib/namer.rb +50 -0
- data/lib/poly.rb +152 -0
- data/lib/saved_assets.rb +112 -13
- data/lib/streams_out.rb +36 -0
- data/lib/string_util.rb +0 -1
- metadata +18 -6
- data/examples/vars.md +0 -20
- /data/examples/{opts.md → opts-blocks.md} +0 -0
- /data/examples/{pass-through.md → pass-through-arguments.md} +0 -0
data/lib/saved_assets.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
# encoding=utf-8
|
5
|
+
require_relative 'namer'
|
5
6
|
|
6
7
|
module MarkdownExec
|
7
8
|
# SavedAsset
|
@@ -12,23 +13,49 @@ module MarkdownExec
|
|
12
13
|
# method derives a name for stdout redirection.
|
13
14
|
#
|
14
15
|
class SavedAsset
|
15
|
-
FNR11 = %r{[^!#%&()\+,\-0-9=A-Z_a-z~]}.freeze
|
16
|
-
# / !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
|
17
|
-
FNR12 = '_'
|
18
16
|
DEFAULT_FTIME = '%F-%H-%M-%S'
|
17
|
+
FILE_BLOCK_SEP = ','
|
18
|
+
JOIN_STR = '_'
|
19
|
+
MARK_STR = '~'
|
19
20
|
|
20
|
-
#
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
# @param filename [String] the name of the file
|
22
|
+
# @param prefix [String] the prefix to use
|
23
|
+
# @param time [Time] the time object for formatting
|
24
|
+
# @param blockname [String] the block name to include
|
25
|
+
# @param ftime [String] the time format (default: DEFAULT_FTIME)
|
26
|
+
# @param exts [String] the extension to append (default: '.sh')
|
27
|
+
def initialize(
|
28
|
+
saved_asset_format:, filename: nil, prefix: nil, time: nil, blockname: nil,
|
29
|
+
ftime: DEFAULT_FTIME, exts: nil,
|
30
|
+
mark: nil, join_str: nil
|
31
|
+
)
|
32
|
+
@filename = filename ? filename.pub_name : '*' # [String] the name of the file
|
33
|
+
@prefix = prefix || '*' # [String] the prefix to use
|
34
|
+
@time = time ? time.strftime(ftime) : '*' # [Time] the time object for formatting
|
35
|
+
@blockname = blockname ? blockname.pub_name : '*' # [String] the block name to include
|
36
|
+
# @ftime = ftime # [String] the time format (default: DEFAULT_FTIME)
|
37
|
+
@exts = exts || '.*' # [String] the extension to append (default: '.sh')
|
38
|
+
@mark = mark || MARK_STR
|
39
|
+
@join_str = join_str || JOIN_STR
|
40
|
+
@saved_asset_format = saved_asset_format
|
25
41
|
end
|
26
42
|
|
27
|
-
# Generates a formatted
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
43
|
+
# Generates a formatted name based on the provided parameters.
|
44
|
+
#
|
45
|
+
# @return [String] the generated formatted name
|
46
|
+
def generate_name
|
47
|
+
format(
|
48
|
+
@saved_asset_format,
|
49
|
+
{
|
50
|
+
blockname: @blockname,
|
51
|
+
exts: @exts,
|
52
|
+
filename: @filename,
|
53
|
+
join: @join_str,
|
54
|
+
mark: @mark,
|
55
|
+
prefix: @prefix,
|
56
|
+
time: @time
|
57
|
+
}
|
58
|
+
)
|
32
59
|
end
|
33
60
|
end
|
34
61
|
end
|
@@ -61,4 +88,76 @@ class SavedAssetTest < Minitest::Test
|
|
61
88
|
filename: filename, prefix: prefix, time: time, blockname: blockname
|
62
89
|
)
|
63
90
|
end
|
91
|
+
|
92
|
+
def test_wildcard_name_with_all_parameters
|
93
|
+
filename = 'sample.txt'
|
94
|
+
prefix = 'test'
|
95
|
+
time = Time.new(2023, 1, 1, 12, 0, 0)
|
96
|
+
blockname = 'block/1:2'
|
97
|
+
expected_wildcard = 'test_2023-01-01-12-00-00_sample_txt_,_block_1_2.sh'
|
98
|
+
|
99
|
+
assert_equal expected_wildcard, MarkdownExec::SavedAsset.wildcard_name(
|
100
|
+
filename: filename, prefix: prefix, time: time, blockname: blockname
|
101
|
+
)
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_wildcard_name_with_missing_time
|
105
|
+
filename = 'sample.txt'
|
106
|
+
prefix = 'test'
|
107
|
+
time = nil
|
108
|
+
blockname = 'block/1:2'
|
109
|
+
expected_wildcard = 'test_*_sample_txt_,_block_1_2.sh'
|
110
|
+
|
111
|
+
assert_equal expected_wildcard, MarkdownExec::SavedAsset.wildcard_name(
|
112
|
+
filename: filename, prefix: prefix, time: time, blockname: blockname
|
113
|
+
)
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_wildcard_name_with_missing_filename
|
117
|
+
filename = nil
|
118
|
+
prefix = 'test'
|
119
|
+
time = Time.new(2023, 1, 1, 12, 0, 0)
|
120
|
+
blockname = 'block/1:2'
|
121
|
+
expected_wildcard = 'test_2023-01-01-12-00-00_*_,_block_1_2.sh'
|
122
|
+
|
123
|
+
assert_equal expected_wildcard, MarkdownExec::SavedAsset.wildcard_name(
|
124
|
+
filename: filename, prefix: prefix, time: time, blockname: blockname
|
125
|
+
)
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_wildcard_name_with_missing_prefix
|
129
|
+
filename = 'sample.txt'
|
130
|
+
prefix = nil
|
131
|
+
time = Time.new(2023, 1, 1, 12, 0, 0)
|
132
|
+
blockname = 'block/1:2'
|
133
|
+
expected_wildcard = '*_2023-01-01-12-00-00_sample_txt_,_block_1_2.sh'
|
134
|
+
|
135
|
+
assert_equal expected_wildcard, MarkdownExec::SavedAsset.wildcard_name(
|
136
|
+
filename: filename, prefix: prefix, time: time, blockname: blockname
|
137
|
+
)
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_wildcard_name_with_missing_blockname
|
141
|
+
filename = 'sample.txt'
|
142
|
+
prefix = 'test'
|
143
|
+
time = Time.new(2023, 1, 1, 12, 0, 0)
|
144
|
+
blockname = nil
|
145
|
+
expected_wildcard = 'test_2023-01-01-12-00-00_sample_txt_,_*.sh'
|
146
|
+
|
147
|
+
assert_equal expected_wildcard, MarkdownExec::SavedAsset.wildcard_name(
|
148
|
+
filename: filename, prefix: prefix, time: time, blockname: blockname
|
149
|
+
)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_wildcard_name_with_all_missing
|
153
|
+
filename = nil
|
154
|
+
prefix = nil
|
155
|
+
time = nil
|
156
|
+
blockname = nil
|
157
|
+
expected_wildcard = '*_*_*_,_*.sh'
|
158
|
+
|
159
|
+
assert_equal expected_wildcard, MarkdownExec::SavedAsset.wildcard_name(
|
160
|
+
filename: filename, prefix: prefix, time: time, blockname: blockname
|
161
|
+
)
|
162
|
+
end
|
64
163
|
end
|
data/lib/streams_out.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# encoding=utf-8
|
5
|
+
|
6
|
+
class StreamsOut
|
7
|
+
attr_accessor :streams
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@streams = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def append_stream_line(stream, line)
|
14
|
+
@streams << { stream: stream, line: line, timestamp: Time.now }
|
15
|
+
end
|
16
|
+
|
17
|
+
def write_execution_output_to_file(filespec)
|
18
|
+
FileUtils.mkdir_p File.dirname(filespec)
|
19
|
+
|
20
|
+
output = @streams.map do |entry|
|
21
|
+
case entry[:stream]
|
22
|
+
when ExecutionStreams::STD_OUT
|
23
|
+
entry[:line]
|
24
|
+
# "OUT: #{entry[:line]}"
|
25
|
+
when ExecutionStreams::STD_ERR
|
26
|
+
entry[:line]
|
27
|
+
# "ERR: #{entry[:line]}"
|
28
|
+
when ExecutionStreams::STD_IN
|
29
|
+
entry[:line]
|
30
|
+
# " IN: #{entry[:line]}"
|
31
|
+
end
|
32
|
+
end.join("\n")
|
33
|
+
|
34
|
+
File.write(filespec, output)
|
35
|
+
end
|
36
|
+
end
|
data/lib/string_util.rb
CHANGED
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
|
4
|
+
version: 2.2.0
|
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-
|
11
|
+
date: 2024-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|
@@ -113,8 +113,11 @@ files:
|
|
113
113
|
- bin/setup
|
114
114
|
- bin/tab_completion.sh
|
115
115
|
- bin/tab_completion.sh.erb
|
116
|
+
- examples/bash-blocks.md
|
117
|
+
- examples/block-names.md
|
116
118
|
- examples/block_names.md
|
117
119
|
- examples/colors.md
|
120
|
+
- examples/data-files.md
|
118
121
|
- examples/document_options.md
|
119
122
|
- examples/duplicate_block.md
|
120
123
|
- examples/import0.md
|
@@ -124,6 +127,9 @@ files:
|
|
124
127
|
- examples/index.md
|
125
128
|
- examples/interrupt.md
|
126
129
|
- examples/line-wrapping.md
|
130
|
+
- examples/link-blocks-block.md
|
131
|
+
- examples/link-blocks-load-save.md
|
132
|
+
- examples/link-blocks-vars.md
|
127
133
|
- examples/linked.md
|
128
134
|
- examples/linked1.md
|
129
135
|
- examples/linked2.md
|
@@ -134,13 +140,16 @@ files:
|
|
134
140
|
- examples/load2.sh
|
135
141
|
- examples/load_code.md
|
136
142
|
- examples/nickname.md
|
137
|
-
- examples/opts.md
|
138
|
-
- examples/
|
143
|
+
- examples/opts-blocks-require.md
|
144
|
+
- examples/opts-blocks.md
|
145
|
+
- examples/opts_output_execution.md
|
146
|
+
- examples/pass-through-arguments.md
|
139
147
|
- examples/pause-after-execution.md
|
140
148
|
- examples/plant.md
|
141
|
-
- examples/port.md
|
149
|
+
- examples/port-blocks.md
|
150
|
+
- examples/save.md
|
142
151
|
- examples/search.md
|
143
|
-
- examples/vars.md
|
152
|
+
- examples/vars-blocks.md
|
144
153
|
- examples/wrap.md
|
145
154
|
- lib/ansi_formatter.rb
|
146
155
|
- lib/array.rb
|
@@ -170,8 +179,10 @@ files:
|
|
170
179
|
- lib/mdoc.rb
|
171
180
|
- lib/menu.src.yml
|
172
181
|
- lib/menu.yml
|
182
|
+
- lib/namer.rb
|
173
183
|
- lib/object_present.rb
|
174
184
|
- lib/option_value.rb
|
185
|
+
- lib/poly.rb
|
175
186
|
- lib/regexp.rb
|
176
187
|
- lib/resize_terminal.rb
|
177
188
|
- lib/rspec_helpers.rb
|
@@ -179,6 +190,7 @@ files:
|
|
179
190
|
- lib/saved_files_matcher.rb
|
180
191
|
- lib/shared.rb
|
181
192
|
- lib/std_out_err_logger.rb
|
193
|
+
- lib/streams_out.rb
|
182
194
|
- lib/string_util.rb
|
183
195
|
- lib/tap.rb
|
184
196
|
homepage: https://rubygems.org/gems/markdown_exec
|
data/examples/vars.md
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
```bash :(defaults)
|
2
|
-
: ${VAULT:=default}
|
3
|
-
```
|
4
|
-
```bash :show_vars +(defaults)
|
5
|
-
source bin/colorize_env_vars.sh
|
6
|
-
colorize_env_vars '' VAULT
|
7
|
-
```
|
8
|
-
```vars :set
|
9
|
-
VAULT: 11
|
10
|
-
```
|
11
|
-
```vars :set_with_show +show_vars
|
12
|
-
VAULT: 22
|
13
|
-
```
|
14
|
-
```bash :(hidden)
|
15
|
-
colorize_env_vars '' NOTHING
|
16
|
-
```
|
17
|
-
```bash :show_with_set +set
|
18
|
-
source bin/colorize_env_vars.sh
|
19
|
-
colorize_env_vars '' VAULT
|
20
|
-
```
|
File without changes
|
File without changes
|