markdown_exec 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/menu.src.yml CHANGED
@@ -275,8 +275,10 @@
275
275
  :default: false
276
276
  :description: Execute script in own window
277
277
  :env_var: MDE_EXECUTE_IN_OWN_WINDOW
278
+ :long_name: execute_in_own_window
278
279
  :opt_name: execute_in_own_window
279
280
  :procname: val_as_bool
281
+ :short_name: w
280
282
 
281
283
  - :default: fg_rgbh_7f_ff_00
282
284
  :description: execution_report_preview_frame_color
@@ -303,13 +305,13 @@
303
305
 
304
306
  ## match fenced code indented by spaces
305
307
  #
306
- - :default: "^(?<indent> *)`{3,}"
308
+ - :default: "^(?<indent>[ \t]*)`{3,}"
307
309
  :description: Matches the start and end of a fenced code block
308
310
  :env_var: MDE_FENCED_START_AND_END_REGEX
309
311
  :opt_name: fenced_start_and_end_regex
310
312
  :procname: val_as_str
311
313
 
312
- - :default: "^(?<indent> *)`{3,}(?<shell>[^`\\s]*) *(:(?<name>[^\\s]*))? *(?<rest>.*) *$"
314
+ - :default: "^(?<indent>[ \t]*)`{3,}(?<shell>[^`\\s]*) *(:(?<name>[^\\s]*))? *(?<rest>.*) *$"
313
315
  :description: Match the start of a fenced block
314
316
  :env_var: MDE_FENCED_START_EXTENDED_REGEX
315
317
  :opt_name: fenced_start_extended_regex
@@ -380,7 +382,7 @@
380
382
 
381
383
  - :arg_name: HOW
382
384
  :default: ''
383
- :description: Find in YAML configuration options
385
+ :description: Find keyword in YAML configuration options
384
386
  :long_name: how
385
387
  :procname: how
386
388
  :short_name: "?"
@@ -438,6 +440,7 @@
438
440
  :long_name: load-code
439
441
  :opt_name: load_code
440
442
  :procname: val_as_str
443
+ :short_name: l
441
444
 
442
445
  - :arg_name: PREFIX
443
446
  :default: mde
@@ -507,7 +510,7 @@
507
510
  :opt_name: menu_divider_format
508
511
  :procname: val_as_str
509
512
 
510
- - :default: "^:::(?<line>(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
513
+ - :default: "^(?<indent>[ \t]*):::(?<line>(?<text>.*?)(?<trailing>[ \t]*))?$"
511
514
  :description: Pattern for topics/dividers in block selection menu
512
515
  :env_var: MDE_MENU_DIVIDER_MATCH
513
516
  :opt_name: menu_divider_match
@@ -651,7 +654,8 @@
651
654
  :procname: val_as_str
652
655
 
653
656
  ## lines that start with "/" are comments (hidden), not notes (visible)
654
- - :default: "^(?<line>(?!/)(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
657
+ # - :default: "^(?<indent>[ \t]*)(?<line>(?!/)(?<text>.*?)(?<trailing>[ \t]*))?$"
658
+ - :default: "^(?<line>(?![ \t]*/)(?<text>.*?)(?<trailing>[ \t]*))?$"
655
659
  :description: Pattern for notes in block selection menu
656
660
  :env_var: MDE_MENU_NOTE_MATCH
657
661
  :opt_name: menu_note_match
@@ -965,13 +969,19 @@
965
969
  :procname: val_as_str
966
970
 
967
971
  - :default: Back
968
- :description: Quit prompt
969
- :env_var: MDE_PROMPT_FILESPEC_OTHER
972
+ :description: User wants out of menu
973
+ :env_var: MDE_PROMPT_FILESPEC_BACK
970
974
  :opt_name: prompt_filespec_back
971
975
  :procname: val_as_str
972
976
 
977
+ - :default: Facet
978
+ :description: User wants to tailor the menu
979
+ :env_var: MDE_PROMPT_FILESPEC_FACET
980
+ :opt_name: prompt_filespec_facet
981
+ :procname: val_as_str
982
+
973
983
  - :default: Other
974
- :description: Prompt for a custom file name
984
+ :description: User wants a custom file name
975
985
  :env_var: MDE_PROMPT_FILESPEC_OTHER
976
986
  :opt_name: prompt_filespec_other
977
987
  :procname: val_as_str
@@ -1042,7 +1052,7 @@
1042
1052
  :opt_name: prompt_yes
1043
1053
  :procname: val_as_str
1044
1054
 
1045
- - :description: Gem home folder
1055
+ - :description: Print the gem's home directory
1046
1056
  :long_name: pwd
1047
1057
  :opt_name: pwd
1048
1058
  :procname: val_as_bool
@@ -1059,13 +1069,13 @@
1059
1069
  :procname: val_as_int
1060
1070
 
1061
1071
  - :default: '%{prefix}%{join}%{time}%{join}%{filename}%{join}%{mark}%{join}%{blockname}%{join}%{exts}'
1062
- :description: saved_asset_format
1072
+ :description: Format for script and log file names
1063
1073
  :env_var: MDE_SAVED_ASSET_FORMAT
1064
1074
  :opt_name: saved_asset_format
1065
1075
  :procname: val_as_str
1066
1076
 
1067
1077
  - :default: "^(?<prefix>.+)(?<join>_)(?<time>[0-9\\-]+)\\g'join'(?<filename>.+)\\g'join'(?<mark>~)\\g'join'(?<blockname>.+)\\g'join'(?<exts>\\..+)$"
1068
- :description: saved_asset_match
1078
+ :description: Regexp for script and log file names
1069
1079
  :env_var: MDE_SAVED_ASSET_MATCH
1070
1080
  :opt_name: saved_asset_match
1071
1081
  :procname: val_as_str
@@ -1096,6 +1106,12 @@
1096
1106
  :opt_name: saved_filename_replacement
1097
1107
  :procname: val_as_str
1098
1108
 
1109
+ - :default: '%{time} %{blockname} %{exts}'
1110
+ :description: Format for each row displayed in history
1111
+ :env_var: MDE_SAVED_HISTORY_FORMAT
1112
+ :opt_name: saved_history_format
1113
+ :procname: val_as_str
1114
+
1099
1115
  - :arg_name: INT
1100
1116
  :default: 493
1101
1117
  :description: chmod for saved scripts
@@ -1194,16 +1210,6 @@
1194
1210
  :opt_name: select_page_height
1195
1211
  :procname: val_as_int
1196
1212
 
1197
- - :description: Select and execute a recently saved output
1198
- :long_name: select-recent-output
1199
- :opt_name: select_recent_output
1200
- :procname: val_as_bool
1201
-
1202
- - :description: Select and execute a recently saved script
1203
- :long_name: select-recent-script
1204
- :opt_name: select_recent_script
1205
- :procname: val_as_bool
1206
-
1207
1213
  - :default: "#!/usr/bin/env"
1208
1214
  :description: Shebang for saved scripts
1209
1215
  :env_var: MDE_SHEBANG
@@ -1234,6 +1240,13 @@
1234
1240
  :opt_name: shell_code_label_time_format
1235
1241
  :procname: val_as_str
1236
1242
 
1243
+ - :arg_name: BOOL
1244
+ :default: true
1245
+ :description: Whether saved file names include shell parameter expansion
1246
+ :env_var: MDE_SHELL_PARAMETER_EXPANSION
1247
+ :opt_name: shell_parameter_expansion
1248
+ :procname: val_as_bool
1249
+
1237
1250
  - :description: List tab completions
1238
1251
  :long_name: tab-completions
1239
1252
  :opt_name: tab_completions
data/lib/menu.yml CHANGED
@@ -236,8 +236,10 @@
236
236
  :default: false
237
237
  :description: Execute script in own window
238
238
  :env_var: MDE_EXECUTE_IN_OWN_WINDOW
239
+ :long_name: execute_in_own_window
239
240
  :opt_name: execute_in_own_window
240
241
  :procname: val_as_bool
242
+ :short_name: w
241
243
  - :default: fg_rgbh_7f_ff_00
242
244
  :description: execution_report_preview_frame_color
243
245
  :env_var: MDE_EXECUTION_REPORT_PREVIEW_FRAME_COLOR
@@ -259,12 +261,12 @@
259
261
  :long_name: exit
260
262
  :procname: exit
261
263
  :short_name: x
262
- - :default: "^(?<indent> *)`{3,}"
264
+ - :default: "^(?<indent>[ \t]*)`{3,}"
263
265
  :description: Matches the start and end of a fenced code block
264
266
  :env_var: MDE_FENCED_START_AND_END_REGEX
265
267
  :opt_name: fenced_start_and_end_regex
266
268
  :procname: val_as_str
267
- - :default: "^(?<indent> *)`{3,}(?<shell>[^`\\s]*) *(:(?<name>[^\\s]*))? *(?<rest>.*)
269
+ - :default: "^(?<indent>[ \t]*)`{3,}(?<shell>[^`\\s]*) *(:(?<name>[^\\s]*))? *(?<rest>.*)
268
270
  *$"
269
271
  :description: Match the start of a fenced block
270
272
  :env_var: MDE_FENCED_START_EXTENDED_REGEX
@@ -325,7 +327,7 @@
325
327
  :procname: val_as_str
326
328
  - :arg_name: HOW
327
329
  :default: ''
328
- :description: Find in YAML configuration options
330
+ :description: Find keyword in YAML configuration options
329
331
  :long_name: how
330
332
  :procname: how
331
333
  :short_name: "?"
@@ -373,6 +375,7 @@
373
375
  :long_name: load-code
374
376
  :opt_name: load_code
375
377
  :procname: val_as_str
378
+ :short_name: l
376
379
  - :arg_name: PREFIX
377
380
  :default: mde
378
381
  :description: Name prefix for stdout files
@@ -431,7 +434,7 @@
431
434
  :env_var: MDE_MENU_DIVIDER_FORMAT
432
435
  :opt_name: menu_divider_format
433
436
  :procname: val_as_str
434
- - :default: "^:::(?<line>(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
437
+ - :default: "^(?<indent>[ \t]*):::(?<line>(?<text>.*?)(?<trailing>[ \t]*))?$"
435
438
  :description: Pattern for topics/dividers in block selection menu
436
439
  :env_var: MDE_MENU_DIVIDER_MATCH
437
440
  :opt_name: menu_divider_match
@@ -548,7 +551,7 @@
548
551
  :env_var: MDE_MENU_NOTE_FORMAT
549
552
  :opt_name: menu_note_format
550
553
  :procname: val_as_str
551
- - :default: "^(?<line>(?!/)(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
554
+ - :default: "^(?<line>(?![ \t]*/)(?<text>.*?)(?<trailing>[ \t]*))?$"
552
555
  :description: Pattern for notes in block selection menu
553
556
  :env_var: MDE_MENU_NOTE_MATCH
554
557
  :opt_name: menu_note_match
@@ -820,12 +823,17 @@
820
823
  :opt_name: prompt_exit
821
824
  :procname: val_as_str
822
825
  - :default: Back
823
- :description: Quit prompt
824
- :env_var: MDE_PROMPT_FILESPEC_OTHER
826
+ :description: User wants out of menu
827
+ :env_var: MDE_PROMPT_FILESPEC_BACK
825
828
  :opt_name: prompt_filespec_back
826
829
  :procname: val_as_str
830
+ - :default: Facet
831
+ :description: User wants to tailor the menu
832
+ :env_var: MDE_PROMPT_FILESPEC_FACET
833
+ :opt_name: prompt_filespec_facet
834
+ :procname: val_as_str
827
835
  - :default: Other
828
- :description: Prompt for a custom file name
836
+ :description: User wants a custom file name
829
837
  :env_var: MDE_PROMPT_FILESPEC_OTHER
830
838
  :opt_name: prompt_filespec_other
831
839
  :procname: val_as_str
@@ -894,7 +902,7 @@
894
902
  :env_var: MDE_PROMPT_YES
895
903
  :opt_name: prompt_yes
896
904
  :procname: val_as_str
897
- - :description: Gem home folder
905
+ - :description: Print the gem's home directory
898
906
  :long_name: pwd
899
907
  :opt_name: pwd
900
908
  :procname: val_as_bool
@@ -909,12 +917,12 @@
909
917
  :opt_name: runtime_exception_error_level
910
918
  :procname: val_as_int
911
919
  - :default: "%{prefix}%{join}%{time}%{join}%{filename}%{join}%{mark}%{join}%{blockname}%{join}%{exts}"
912
- :description: saved_asset_format
920
+ :description: Format for script and log file names
913
921
  :env_var: MDE_SAVED_ASSET_FORMAT
914
922
  :opt_name: saved_asset_format
915
923
  :procname: val_as_str
916
924
  - :default: "^(?<prefix>.+)(?<join>_)(?<time>[0-9\\-]+)\\g'join'(?<filename>.+)\\g'join'(?<mark>~)\\g'join'(?<blockname>.+)\\g'join'(?<exts>\\..+)$"
917
- :description: saved_asset_match
925
+ :description: Regexp for script and log file names
918
926
  :env_var: MDE_SAVED_ASSET_MATCH
919
927
  :opt_name: saved_asset_match
920
928
  :procname: val_as_str
@@ -940,6 +948,11 @@
940
948
  :env_var: MDE_SAVED_FILENAME_REPLACEMENT
941
949
  :opt_name: saved_filename_replacement
942
950
  :procname: val_as_str
951
+ - :default: "%{time} %{blockname} %{exts}"
952
+ :description: Format for each row displayed in history
953
+ :env_var: MDE_SAVED_HISTORY_FORMAT
954
+ :opt_name: saved_history_format
955
+ :procname: val_as_str
943
956
  - :arg_name: INT
944
957
  :default: 493
945
958
  :description: chmod for saved scripts
@@ -1027,14 +1040,6 @@
1027
1040
  :env_var: MDE_SELECT_PAGE_HEIGHT
1028
1041
  :opt_name: select_page_height
1029
1042
  :procname: val_as_int
1030
- - :description: Select and execute a recently saved output
1031
- :long_name: select-recent-output
1032
- :opt_name: select_recent_output
1033
- :procname: val_as_bool
1034
- - :description: Select and execute a recently saved script
1035
- :long_name: select-recent-script
1036
- :opt_name: select_recent_script
1037
- :procname: val_as_bool
1038
1043
  - :default: "#!/usr/bin/env"
1039
1044
  :description: Shebang for saved scripts
1040
1045
  :env_var: MDE_SHEBANG
@@ -1061,6 +1066,12 @@
1061
1066
  :env_var: MDE_SHELL_CODE_LABEL_TIME_FORMAT
1062
1067
  :opt_name: shell_code_label_time_format
1063
1068
  :procname: val_as_str
1069
+ - :arg_name: BOOL
1070
+ :default: true
1071
+ :description: Whether saved file names include shell parameter expansion
1072
+ :env_var: MDE_SHELL_PARAMETER_EXPANSION
1073
+ :opt_name: shell_parameter_expansion
1074
+ :procname: val_as_bool
1064
1075
  - :description: List tab completions
1065
1076
  :long_name: tab-completions
1066
1077
  :opt_name: tab_completions
data/lib/namer.rb ADDED
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # encoding=utf-8
5
+ require 'digest'
6
+ # require_relative 'poly'
7
+
8
+ $pd = false unless defined?($pd)
9
+
10
+ class Hash
11
+ # block name in commands and documents
12
+ def pub_name(**kwargs)
13
+ full = fetch(:nickname, nil) || fetch(:oname, nil)
14
+ full&.to_s&.pub_name(**kwargs).tap { |ret| pp [__LINE__, 'Hash.pub_name() ->', ret] if $pd }
15
+ end
16
+ end
17
+
18
+ class String
19
+ FN_ID_LEN = 4
20
+ FN_MAX_LEN = 64
21
+ FN_PATTERN = %r{[^!#%\+\-0-9=@A-Z_a-z()\[\]{}]}.freeze # characters than can be used in a file name without quotes or escaping
22
+ # except '.', ',', '~' reserved for tokenization
23
+ # / !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
24
+ FN_REPLACEMENT = '_'
25
+
26
+ # block name in commands and documents
27
+ def pub_name(
28
+ id_len: FN_ID_LEN, max_len: FN_MAX_LEN,
29
+ pattern: FN_PATTERN, replacement: FN_REPLACEMENT
30
+ )
31
+ trimmed = if self[max_len]
32
+ rand(((10**(id_len - 1)) + 1)..(10**id_len)).to_s
33
+ dig = Digest::MD5.hexdigest(self)[0, id_len]
34
+ self[0..max_len - id_len] + dig
35
+ else
36
+ self
37
+ end
38
+
39
+ trimmed.gsub(pattern, replacement).tap { |ret| pp [__LINE__, 'String.pub_name() ->', ret] if $pd }
40
+ end
41
+ end
42
+
43
+ # require 'ostruct'
44
+
45
+ # class BlkS < OpenStruct
46
+ # # Method to fetch the value associated with the attribute :nickname or :oname
47
+ # def pub_name
48
+ # self.nickname || self.oname
49
+ # end
50
+ # end
data/lib/poly.rb ADDED
@@ -0,0 +1,152 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # encoding=utf-8
5
+
6
+ $pd = false
7
+
8
+ class Poly
9
+ # attr_reader :table
10
+ def initialize(table = {})
11
+ @table = table.tap{|ret| pp [__LINE__,'Poly.initialize()','table',table.to_yaml] if $pd }
12
+ end
13
+
14
+ def fetch(key, *args)
15
+ key_sym = key.to_sym
16
+ if respond_to?("get_#{key}")
17
+ send("get_#{key}")
18
+ elsif @table.key?(key_sym)
19
+ @table[key_sym]
20
+ elsif block_given?
21
+ yield key_sym
22
+ elsif args.count.positive?
23
+ # binding.irb
24
+ args.first
25
+ else
26
+ binding.irb
27
+ raise KeyError, "key not found: #{key}"
28
+ end.tap{|ret| pp([__LINE__,"Poly.fetch #{key} #{args}",'->',ret]) if $pd }
29
+ end
30
+
31
+ def key?(name)
32
+ @table.key?(name.to_sym).tap{|ret| pp([__LINE__,"Poly.key? #{name}",'->',ret]) if $pd }
33
+ end
34
+
35
+ def method_missing(name, *args)
36
+ pt = nil
37
+ if name.to_s.end_with?('=')
38
+ # Setter method
39
+ attribute = name.to_s.chomp('=').to_sym
40
+ value = args.first
41
+ if respond_to?("set_#{attribute}")
42
+ pt = 'send set_'
43
+ send("set_#{attribute}", value)
44
+ else
45
+ pt = 'table set'
46
+ @table[attribute] = value
47
+ end
48
+ elsif respond_to?("get_#{name}")
49
+ pt = 'send get_'
50
+ # Getter method
51
+ send("get_#{name}")
52
+ elsif @table.respond_to?(name)
53
+ pt = 'send name'
54
+ @table.send(name, *args)
55
+ else
56
+ pt = 'table read'
57
+ @table[name.to_sym]
58
+ end.tap{|ret| pp([__LINE__,"Poly.method_missing #{name} #{args.map(&:to_s).join(' ')}",pt,'->',ret]) if $pd }
59
+ end
60
+
61
+ def respond_to_missing?(name, include_private = false)
62
+ # name.to_s.end_with?('=') || @table.key?(name.to_sym) || @table.respond_to?(name) || super
63
+ (name.to_s.end_with?('=') || @table.key?(name.to_sym) || @table.respond_to?(name) || super).tap{|ret| pp([__LINE__,"Poly.respond_to_missing? #{name}",'->',ret]) if $pd }
64
+ end
65
+
66
+ def [](key)
67
+ if respond_to?("get_#{key}")
68
+ send("get_#{key}")
69
+ else
70
+ @table[key.to_sym]
71
+ end.tap{|ret| pp([__LINE__,"Poly.[] #{key}",'->',ret]) if $pd }
72
+ end
73
+
74
+ def []=(key, value)
75
+ if respond_to?("set_#{key}")
76
+ send("set_#{key}", value)
77
+ else
78
+ @table[key.to_sym] = value
79
+ end.tap{|ret| pp([__LINE__,"Poly.[]= #{key} #{value}",'->',ret]) if $pd }
80
+ end
81
+
82
+ # for export to Prompt library
83
+ # def merge(*args)
84
+ # Proc.new { |x| @table.merge x }
85
+ # end
86
+ def merge(*args)
87
+ # pp caller
88
+ # binding.irb
89
+ @table.merge(*args).tap{|ret| pp([__LINE__,"Poly.merge",'->',ret]) if $pd }
90
+ end
91
+
92
+ # for export to Prompt library
93
+ def to_h
94
+ @table.tap{|ret| pp([__LINE__,"Poly.to_h",'->',ret]) if $pd }
95
+ end
96
+
97
+ def to_yaml
98
+ @table.to_yaml.tap{|ret| pp([__LINE__,"Poly.to_yaml",'->',ret]) if $pd }
99
+ end
100
+ end
101
+
102
+ # class CustomStruct < Poly
103
+ # # Custom setter for virtual attribute :full_name
104
+ # def set_full_name(value)
105
+ # names = value.split(' ')
106
+ # @table[:first_name] = names.first
107
+ # @table[:last_name] = names.last
108
+ # end
109
+
110
+ # # Custom getter for virtual attribute :full_name
111
+ # def get_full_name
112
+ # "#{@table[:first_name]} #{@table[:last_name]}"
113
+ # end
114
+ # end
115
+
116
+ # # Example usage
117
+ # person = CustomStruct.new
118
+ # person.first_name = 'John'
119
+ # person.last_name = 'Doe'
120
+ # puts person.first_name # => John
121
+ # puts person.last_name # => Doe
122
+
123
+ # # Setting and getting a virtual attribute
124
+ # person.full_name = 'Jane Smith'
125
+ # puts person.first_name # => Jane
126
+ # puts person.last_name # => Smith
127
+ # puts person.full_name # => Jane Smith
128
+
129
+ # # Setting and getting a regular attribute
130
+ # person.age = 30
131
+ # puts person.age # => 30
132
+
133
+ # # Using array notation
134
+ # person[:age] = 35
135
+ # puts person[:age] # => 35
136
+
137
+ # person[:full_name] = 'Alice Johnson'
138
+ # puts person[:first_name] # => Alice
139
+ # puts person[:last_name] # => Johnson
140
+ # puts person[:full_name] # => Alice Johnson
141
+
142
+ # # Using fetch method
143
+ # puts person.fetch(:age) # => 35
144
+ # puts person.fetch(:nonexistent, 'default') # => default
145
+ # puts person.fetch(:nonexistent) { |key| "block default for #{key}" } # => block default for nonexistent
146
+
147
+ # # This will raise a KeyError
148
+ # begin
149
+ # person.fetch(:nonexistent)
150
+ # rescue KeyError => e
151
+ # puts e.message # => key not found: nonexistent
152
+ # end
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,10 +13,6 @@ 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 # characters than can be used in a file name without quotes or escaping
16
- # except '.', ',', '~' reserved for tokenization
17
- # / !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
18
- FNR12 = '_'
19
16
  DEFAULT_FTIME = '%F-%H-%M-%S'
20
17
  FILE_BLOCK_SEP = ','
21
18
  JOIN_STR = '_'
@@ -26,21 +23,17 @@ module MarkdownExec
26
23
  # @param time [Time] the time object for formatting
27
24
  # @param blockname [String] the block name to include
28
25
  # @param ftime [String] the time format (default: DEFAULT_FTIME)
29
- # @param pattern [Regexp] the pattern to search (default: FNR11)
30
- # @param replace [String] the string to replace the pattern (default: FNR12)
31
26
  # @param exts [String] the extension to append (default: '.sh')
32
27
  def initialize(
33
28
  saved_asset_format:, filename: nil, prefix: nil, time: nil, blockname: nil,
34
- ftime: DEFAULT_FTIME, pattern: FNR11, replace: FNR12, exts: nil,
29
+ ftime: DEFAULT_FTIME, exts: nil,
35
30
  mark: nil, join_str: nil
36
31
  )
37
- @filename = filename ? filename.gsub(pattern, replace) : '*' # [String] the name of the file
32
+ @filename = filename ? filename.pub_name : '*' # [String] the name of the file
38
33
  @prefix = prefix || '*' # [String] the prefix to use
39
34
  @time = time ? time.strftime(ftime) : '*' # [Time] the time object for formatting
40
- @blockname = blockname ? blockname.gsub(pattern, replace) : '*' # [String] the block name to include
35
+ @blockname = blockname ? blockname.pub_name : '*' # [String] the block name to include
41
36
  # @ftime = ftime # [String] the time format (default: DEFAULT_FTIME)
42
- # @pattern = pattern # [Regexp] the pattern to search (default: FNR11)
43
- # @replace = replace # [String] the string to replace the pattern (default: FNR12)
44
37
  @exts = exts || '.*' # [String] the extension to append (default: '.sh')
45
38
  @mark = mark || MARK_STR
46
39
  @join_str = join_str || JOIN_STR
data/lib/string_util.rb CHANGED
@@ -2,7 +2,6 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # encoding=utf-8
5
-
6
5
  module StringUtil
7
6
  # Splits the given string on the first occurrence of the specified character.
8
7
  # Returns an array containing the portion of the string before the character and the rest of the string.
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.1.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-07-16 00:00:00.000000000 Z
11
+ date: 2024-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clipboard
@@ -113,6 +113,8 @@ 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
118
120
  - examples/data-files.md
@@ -125,6 +127,9 @@ files:
125
127
  - examples/index.md
126
128
  - examples/interrupt.md
127
129
  - examples/line-wrapping.md
130
+ - examples/link-blocks-block.md
131
+ - examples/link-blocks-load-save.md
132
+ - examples/link-blocks-vars.md
128
133
  - examples/linked.md
129
134
  - examples/linked1.md
130
135
  - examples/linked2.md
@@ -135,15 +140,16 @@ files:
135
140
  - examples/load2.sh
136
141
  - examples/load_code.md
137
142
  - examples/nickname.md
138
- - examples/opts.md
143
+ - examples/opts-blocks-require.md
144
+ - examples/opts-blocks.md
139
145
  - examples/opts_output_execution.md
140
- - examples/pass-through.md
146
+ - examples/pass-through-arguments.md
141
147
  - examples/pause-after-execution.md
142
148
  - examples/plant.md
143
- - examples/port.md
149
+ - examples/port-blocks.md
144
150
  - examples/save.md
145
151
  - examples/search.md
146
- - examples/vars.md
152
+ - examples/vars-blocks.md
147
153
  - examples/wrap.md
148
154
  - lib/ansi_formatter.rb
149
155
  - lib/array.rb
@@ -173,8 +179,10 @@ files:
173
179
  - lib/mdoc.rb
174
180
  - lib/menu.src.yml
175
181
  - lib/menu.yml
182
+ - lib/namer.rb
176
183
  - lib/object_present.rb
177
184
  - lib/option_value.rb
185
+ - lib/poly.rb
178
186
  - lib/regexp.rb
179
187
  - lib/resize_terminal.rb
180
188
  - lib/rspec_helpers.rb
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