markdown_exec 2.0.6 → 2.0.7

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.
@@ -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