markdown_exec 2.0.6 → 2.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,5 +7,5 @@ module MarkdownExec
7
7
  BIN_NAME = 'mde'
8
8
  GEM_NAME = 'markdown_exec'
9
9
  TAP_DEBUG = 'MDE_DEBUG'
10
- VERSION = '2.0.6'
10
+ VERSION = '2.0.7'
11
11
  end
data/lib/markdown_exec.rb CHANGED
@@ -749,6 +749,7 @@ module MarkdownExec
749
749
  def select_option_or_exit(prompt_text, strings, opts = {})
750
750
  result = @options.select_option_with_metadata(prompt_text, strings,
751
751
  opts)
752
+ ### 2024-04-20 what for?
752
753
  # return unless result.fetch(:option, nil)
753
754
 
754
755
  result[:selected]
data/lib/mdoc.rb CHANGED
@@ -72,11 +72,10 @@ module MarkdownExec
72
72
  #
73
73
  def collect_block_dependencies(anyname:)
74
74
  name_block = get_block_by_anyname(anyname)
75
- if name_block.nil? || name_block.keys.empty?
76
- raise "Named code block `#{anyname}` not found. (@#{__LINE__})"
77
- end
75
+ raise "Named code block `#{anyname}` not found. (@#{__LINE__})" if name_block.nil? || name_block.keys.empty?
76
+
77
+ nickname = name_block.pub_name
78
78
 
79
- nickname = name_block[:nickname] || name_block[:oname]
80
79
  dependencies = collect_dependencies(nickname)
81
80
  # &bc 'dependencies.count:',dependencies.count
82
81
  all_dependency_names = collect_unique_names(dependencies).push(nickname).uniq
@@ -85,9 +84,7 @@ module MarkdownExec
85
84
  # select non-chrome blocks in order of appearance in source documents
86
85
  #
87
86
  blocks = @table.select do |fcb|
88
- !fcb.fetch(:chrome,
89
- false) && all_dependency_names.include?(fcb.fetch(:nickname,
90
- nil) || fcb.fetch(:oname))
87
+ !fcb.fetch(:chrome, false) && all_dependency_names.include?(fcb.pub_name)
91
88
  end
92
89
  # &bc 'blocks.count:',blocks.count
93
90
 
@@ -95,7 +92,7 @@ module MarkdownExec
95
92
  #
96
93
  unmet_dependencies = all_dependency_names.dup
97
94
  blocks = blocks.map do |fcb|
98
- unmet_dependencies.delete(fcb[:nickname] || fcb[:oname]) # may not exist if block name is duplicated
95
+ unmet_dependencies.delete(fcb.pub_name) # may not exist if block name is duplicated
99
96
  if (call = fcb[:call])
100
97
  [get_block_by_anyname("[#{call.match(/^%\((\S+) |\)/)[1]}]")
101
98
  .merge({ cann: call })]
@@ -124,7 +121,7 @@ module MarkdownExec
124
121
  # &bc 'blocks.count:',blocks.count
125
122
 
126
123
  block_search.merge(
127
- { block_names: blocks.map { |block| block[:nickname] || block[:oname] },
124
+ { block_names: blocks.map(&:pub_name),
128
125
  code: blocks.map do |fcb|
129
126
  if fcb[:cann]
130
127
  collect_block_code_cann(fcb)
@@ -136,7 +133,7 @@ module MarkdownExec
136
133
  elsif fcb[:shell] == BlockType::PORT
137
134
  collect_block_code_shell(fcb)
138
135
  elsif label_body
139
- block_name_for_bash_comment = (fcb[:nickname] || fcb[:oname]).gsub(/\s+/, '_')
136
+ block_name_for_bash_comment = fcb.pub_name.gsub(/\s+/, '_')
140
137
  [label_format_above && format(label_format_above,
141
138
  block_source.merge({ block_name: block_name_for_bash_comment }))] +
142
139
  fcb[:body] +
@@ -198,7 +195,7 @@ module MarkdownExec
198
195
 
199
196
  ### hide rows correctly
200
197
 
201
- if !options[:menu_include_imported_blocks]
198
+ unless options[:menu_include_imported_blocks]
202
199
  selrows = selrows.reject do |block|
203
200
  block.fetch(:depth, 0).positive?
204
201
  end
@@ -287,9 +284,7 @@ module MarkdownExec
287
284
  return memo if memo.keys.include? source
288
285
 
289
286
  block = get_block_by_anyname(source)
290
- if block.nil? || block.keys.empty?
291
- raise "Named code block `#{source}` not found. (@#{__LINE__})"
292
- end
287
+ raise "Named code block `#{source}` not found. (@#{__LINE__})" if block.nil? || block.keys.empty?
293
288
 
294
289
  memo[source] = block[:reqs]
295
290
  return memo unless memo[source]&.count&.positive?
data/lib/menu.src.yml CHANGED
@@ -106,6 +106,12 @@
106
106
  :opt_name: display_level_xbase_prefix
107
107
  :procname: val_as_str
108
108
 
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
+
109
115
  - :default: "(document_options)"
110
116
  :description: Name of Opts block to load with the document
111
117
  :env_var: MDE_DOCUMENT_LOAD_OPTS_BLOCK_NAME
@@ -227,6 +233,8 @@
227
233
  :opt_name: exclude_expect_blocks
228
234
  :procname: val_as_bool
229
235
 
236
+ # - :default: >
237
+ # osascript scripts/applescript/mde.applescript "%{batch_index}" "%{home}" " %{started_at} - %{document_filename} - %{block_name} " "%{script_filespec}" "%{output_filespec}"
230
238
  - :default: >
231
239
  osascript -e '
232
240
  on run argv
@@ -328,17 +336,17 @@
328
336
  :opt_name: find_path
329
337
  :procname: val_as_str
330
338
 
331
- - :default: "^# *(?<line>[^#]*?) *$"
339
+ - :default: "^#(?<line>(?!#)(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
332
340
  :env_var: MDE_HEADING1_MATCH
333
341
  :opt_name: heading1_match
334
342
  :procname: val_as_str
335
343
 
336
- - :default: "^## *(?<line>[^#]*?) *$"
344
+ - :default: "^##(?<line>(?!#)(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
337
345
  :env_var: MDE_HEADING2_MATCH
338
346
  :opt_name: heading2_match
339
347
  :procname: val_as_str
340
348
 
341
- - :default: "^### *(?<line>.+?) *$"
349
+ - :default: "^###(?<line>(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
342
350
  :env_var: MDE_HEADING3_MATCH
343
351
  :opt_name: heading3_match
344
352
  :procname: val_as_str
@@ -496,7 +504,7 @@
496
504
  :opt_name: menu_divider_format
497
505
  :procname: val_as_str
498
506
 
499
- - :default: "^::: +(?<line>.+?)$"
507
+ - :default: "^:::(?<line>(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
500
508
  :description: Pattern for topics/dividers in block selection menu
501
509
  :env_var: MDE_MENU_DIVIDER_MATCH
502
510
  :opt_name: menu_divider_match
@@ -529,37 +537,40 @@
529
537
  :opt_name: menu_final_divider
530
538
  :procname: val_as_str
531
539
 
532
- - :default: fg_rgbh_80_80_c0
540
+ - :default: fg_bg_rgbh_80_80_c0_10_10_20
533
541
  :description: Color for heading 1 in menu
534
542
  :env_var: MDE_MENU_HEADING1_COLOR
535
543
  :opt_name: menu_heading1_color
536
544
  :procname: val_as_str
537
545
 
538
- - :default: "# %{line}"
546
+ # strip heading tag
547
+ - :default: "%{line}"
539
548
  :description: format for menu heading1 in menu
540
549
  :env_var: MDE_MENU_HEADING1_FORMAT
541
550
  :opt_name: menu_heading1_format
542
551
  :procname: val_as_str
543
552
 
544
- - :default: fg_rgbh_60_60_c0
553
+ - :default: fg_bg_rgbh_60_60_c0_10_10_20
545
554
  :description: Color for heading 2 in menu
546
555
  :env_var: MDE_MENU_HEADING2_COLOR
547
556
  :opt_name: menu_heading2_color
548
557
  :procname: val_as_str
549
558
 
550
- - :default: "## %{line}"
559
+ # strip heading tag
560
+ - :default: "%{line}"
551
561
  :description: format for menu heading2 in menu
552
562
  :env_var: MDE_MENU_HEADING2_FORMAT
553
563
  :opt_name: menu_heading2_format
554
564
  :procname: val_as_str
555
565
 
556
- - :default: fg_rgbh_40_40_c0
566
+ - :default: fg_bg_rgbh_40_40_c0_10_10_20
557
567
  :description: Color for heading 3 in menu
558
568
  :env_var: MDE_MENU_HEADING3_COLOR
559
569
  :opt_name: menu_heading3_color
560
570
  :procname: val_as_str
561
571
 
562
- - :default: "### %{line}"
572
+ # strip heading tag
573
+ - :default: "%{line}"
563
574
  :description: format for menu heading3 in menu
564
575
  :env_var: MDE_MENU_HEADING3_FORMAT
565
576
  :opt_name: menu_heading3_format
@@ -624,7 +635,7 @@
624
635
  :opt_name: menu_link_format
625
636
  :procname: val_as_str
626
637
 
627
- - :default: fg_rgbh_b0_b0_b0
638
+ - :default: fg_rgbh_c0_c0_c0
628
639
  :description: Color of menu note
629
640
  :env_var: MDE_MENU_NOTE_COLOR
630
641
  :opt_name: menu_note_color
@@ -637,7 +648,7 @@
637
648
  :procname: val_as_str
638
649
 
639
650
  ## all lines that do not start with "/ " are notes
640
- - :default: "^(?<line>(?!/ ).*)?$"
651
+ - :default: "^(?<line>(?!/ )(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
641
652
  :description: Pattern for notes in block selection menu
642
653
  :env_var: MDE_MENU_NOTE_MATCH
643
654
  :opt_name: menu_note_match
@@ -678,6 +689,13 @@
678
689
  :opt_name: menu_option_save_name
679
690
  :procname: val_as_str
680
691
 
692
+ - :default:
693
+ :line: "! Shell"
694
+ :description: Text for Shell option
695
+ :env_var: MDE_MENU_OPTION_SHELL_NAME
696
+ :opt_name: menu_option_shell_name
697
+ :procname: val_as_str
698
+
681
699
  - :default:
682
700
  :line: "* View"
683
701
  :description: Text for View option
@@ -772,6 +790,13 @@
772
790
  :opt_name: menu_with_inherited_lines
773
791
  :procname: val_as_bool
774
792
 
793
+ - :arg_name: BOOL
794
+ :default: true
795
+ :description: Display Shell option in menu
796
+ :env_var: MDE_MENU_WITH_SHELL
797
+ :opt_name: menu_with_shell
798
+ :procname: val_as_bool
799
+
775
800
  - :arg_name: BOOL
776
801
  :default: false
777
802
  :description: Hide decorative menu entries
@@ -874,7 +899,7 @@
874
899
 
875
900
  - :arg_name: BOOL
876
901
  :default: false
877
- :description: Wheter to pause after manually executing a block and the next menu
902
+ :description: Whether to pause after manually executing a block and the next menu
878
903
  :env_var: MDE_PAUSE_AFTER_SCRIPT_EXECUTION
879
904
  :opt_name: pause_after_script_execution
880
905
  :procname: val_as_bool
data/lib/menu.yml CHANGED
@@ -1,4 +1,4 @@
1
- # MDE - Markdown Executor (2.0.6)
1
+ # MDE - Markdown Executor (2.0.7)
2
2
  ---
3
3
  - :description: Show current configuration values
4
4
  :procname: show_config
@@ -285,15 +285,15 @@
285
285
  :long_name: find-path
286
286
  :opt_name: find_path
287
287
  :procname: val_as_str
288
- - :default: "^# *(?<line>[^#]*?) *$"
288
+ - :default: "^#(?<line>(?!#)(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
289
289
  :env_var: MDE_HEADING1_MATCH
290
290
  :opt_name: heading1_match
291
291
  :procname: val_as_str
292
- - :default: "^## *(?<line>[^#]*?) *$"
292
+ - :default: "^##(?<line>(?!#)(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
293
293
  :env_var: MDE_HEADING2_MATCH
294
294
  :opt_name: heading2_match
295
295
  :procname: val_as_str
296
- - :default: "^### *(?<line>.+?) *$"
296
+ - :default: "^###(?<line>(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
297
297
  :env_var: MDE_HEADING3_MATCH
298
298
  :opt_name: heading3_match
299
299
  :procname: val_as_str
@@ -425,7 +425,7 @@
425
425
  :env_var: MDE_MENU_DIVIDER_FORMAT
426
426
  :opt_name: menu_divider_format
427
427
  :procname: val_as_str
428
- - :default: "^::: +(?<line>.+?)$"
428
+ - :default: "^:::(?<line>(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
429
429
  :description: Pattern for topics/dividers in block selection menu
430
430
  :env_var: MDE_MENU_DIVIDER_MATCH
431
431
  :opt_name: menu_divider_match
@@ -453,32 +453,32 @@
453
453
  :env_var: MDE_MENU_FINAL_DIVIDER
454
454
  :opt_name: menu_final_divider
455
455
  :procname: val_as_str
456
- - :default: fg_rgbh_80_80_c0
456
+ - :default: fg_bg_rgbh_80_80_c0_10_10_20
457
457
  :description: Color for heading 1 in menu
458
458
  :env_var: MDE_MENU_HEADING1_COLOR
459
459
  :opt_name: menu_heading1_color
460
460
  :procname: val_as_str
461
- - :default: "# %{line}"
461
+ - :default: "%{line}"
462
462
  :description: format for menu heading1 in menu
463
463
  :env_var: MDE_MENU_HEADING1_FORMAT
464
464
  :opt_name: menu_heading1_format
465
465
  :procname: val_as_str
466
- - :default: fg_rgbh_60_60_c0
466
+ - :default: fg_bg_rgbh_60_60_c0_10_10_20
467
467
  :description: Color for heading 2 in menu
468
468
  :env_var: MDE_MENU_HEADING2_COLOR
469
469
  :opt_name: menu_heading2_color
470
470
  :procname: val_as_str
471
- - :default: "## %{line}"
471
+ - :default: "%{line}"
472
472
  :description: format for menu heading2 in menu
473
473
  :env_var: MDE_MENU_HEADING2_FORMAT
474
474
  :opt_name: menu_heading2_format
475
475
  :procname: val_as_str
476
- - :default: fg_rgbh_40_40_c0
476
+ - :default: fg_bg_rgbh_40_40_c0_10_10_20
477
477
  :description: Color for heading 3 in menu
478
478
  :env_var: MDE_MENU_HEADING3_COLOR
479
479
  :opt_name: menu_heading3_color
480
480
  :procname: val_as_str
481
- - :default: "### %{line}"
481
+ - :default: "%{line}"
482
482
  :description: format for menu heading3 in menu
483
483
  :env_var: MDE_MENU_HEADING3_FORMAT
484
484
  :opt_name: menu_heading3_format
@@ -532,7 +532,7 @@
532
532
  :env_var: MDE_MENU_LINK_FORMAT
533
533
  :opt_name: menu_link_format
534
534
  :procname: val_as_str
535
- - :default: fg_rgbh_b0_b0_b0
535
+ - :default: fg_rgbh_c0_c0_c0
536
536
  :description: Color of menu note
537
537
  :env_var: MDE_MENU_NOTE_COLOR
538
538
  :opt_name: menu_note_color
@@ -542,7 +542,7 @@
542
542
  :env_var: MDE_MENU_NOTE_FORMAT
543
543
  :opt_name: menu_note_format
544
544
  :procname: val_as_str
545
- - :default: "^(?<line>(?!/ ).*)?$"
545
+ - :default: "^(?<line>(?!/ )(?<indent>[ \t]*)(?<text>.*?)(?<trailing>[ \t]*))?$"
546
546
  :description: Pattern for notes in block selection menu
547
547
  :env_var: MDE_MENU_NOTE_MATCH
548
548
  :opt_name: menu_note_match
@@ -577,6 +577,12 @@
577
577
  :env_var: MDE_MENU_OPTION_SAVE_NAME
578
578
  :opt_name: menu_option_save_name
579
579
  :procname: val_as_str
580
+ - :default:
581
+ :line: "! Shell"
582
+ :description: Text for Shell option
583
+ :env_var: MDE_MENU_OPTION_SHELL_NAME
584
+ :opt_name: menu_option_shell_name
585
+ :procname: val_as_str
580
586
  - :default:
581
587
  :line: "* View"
582
588
  :description: Text for View option
@@ -656,6 +662,12 @@
656
662
  :env_var: MDE_MENU_WITH_INHERITED_LINES
657
663
  :opt_name: menu_with_inherited_lines
658
664
  :procname: val_as_bool
665
+ - :arg_name: BOOL
666
+ :default: true
667
+ :description: Display Shell option in menu
668
+ :env_var: MDE_MENU_WITH_SHELL
669
+ :opt_name: menu_with_shell
670
+ :procname: val_as_bool
659
671
  - :arg_name: BOOL
660
672
  :default: false
661
673
  :description: Hide decorative menu entries
@@ -743,7 +755,7 @@
743
755
  :short_name: p
744
756
  - :arg_name: BOOL
745
757
  :default: false
746
- :description: Wheter to pause after manually executing a block and the next menu
758
+ :description: Whether to pause after manually executing a block and the next menu
747
759
  :env_var: MDE_PAUSE_AFTER_SCRIPT_EXECUTION
748
760
  :opt_name: pause_after_script_execution
749
761
  :procname: val_as_bool
data/lib/saved_assets.rb CHANGED
@@ -12,7 +12,8 @@ module MarkdownExec
12
12
  # method derives a name for stdout redirection.
13
13
  #
14
14
  class SavedAsset
15
- FNR11 = %r{/|:}.freeze
15
+ FNR11 = %r{[^!#$%&()\+,\-0-9=A-Z_a-z~]}.freeze
16
+ # / !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
16
17
  FNR12 = '_'
17
18
  DEFAULT_FTIME = '%F-%H-%M-%S'
18
19
 
@@ -43,7 +44,7 @@ class SavedAssetTest < Minitest::Test
43
44
  time = Time.new(2023, 1, 1, 12, 0, 0)
44
45
  blockname = 'block/1:2'
45
46
 
46
- expected_name = 'test_2023-01-01-12-00-00_sample.txt_,_block_1_2.sh'
47
+ expected_name = 'test_2023-01-01-12-00-00_sample_txt_,_block_1_2.sh'
47
48
  assert_equal expected_name, MarkdownExec::SavedAsset.script_name(
48
49
  filename: filename, prefix: prefix, time: time, blockname: blockname
49
50
  )
@@ -55,7 +56,7 @@ class SavedAssetTest < Minitest::Test
55
56
  time = Time.new(2023, 1, 1, 12, 0, 0)
56
57
  blockname = 'block/1:2'
57
58
 
58
- expected_name = 'test_2023-01-01-12-00-00_sample.txt_,_block_1_2.out.txt'
59
+ expected_name = 'test_2023-01-01-12-00-00_sample_txt_,_block_1_2.out.txt'
59
60
  assert_equal expected_name, MarkdownExec::SavedAsset.stdout_name(
60
61
  filename: filename, prefix: prefix, time: time, blockname: blockname
61
62
  )
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.6
4
+ version: 2.0.7
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-05-31 00:00:00.000000000 Z
11
+ date: 2024-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clipboard
@@ -122,6 +122,8 @@ files:
122
122
  - examples/include.md
123
123
  - examples/indent.md
124
124
  - examples/index.md
125
+ - examples/interrupt.md
126
+ - examples/line-wrapping.md
125
127
  - examples/linked.md
126
128
  - examples/linked1.md
127
129
  - examples/linked2.md
@@ -134,6 +136,7 @@ files:
134
136
  - examples/nickname.md
135
137
  - examples/opts.md
136
138
  - examples/pass-through.md
139
+ - examples/pause-after-execution.md
137
140
  - examples/plant.md
138
141
  - examples/port.md
139
142
  - examples/search.md