markdown_exec 1.8.1 → 1.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/CHANGELOG.md +16 -0
 - data/Gemfile.lock +1 -1
 - data/bin/tab_completion.sh +15 -3
 - data/examples/colors.md +37 -20
 - data/examples/linked1.md +1 -1
 - data/examples/linked2.md +4 -0
 - data/lib/ansi_formatter.rb +0 -3
 - data/lib/constants.rb +1 -1
 - data/lib/hash_delegator.rb +448 -649
 - data/lib/link_history.rb +131 -0
 - data/lib/markdown_exec/version.rb +1 -1
 - data/lib/markdown_exec.rb +22 -51
 - data/lib/mdoc.rb +40 -34
 - data/lib/menu.src.yml +24 -21
 - data/lib/menu.yml +25 -22
 - metadata +3 -2
 
    
        data/lib/link_history.rb
    ADDED
    
    | 
         @@ -0,0 +1,131 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # encoding=utf-8
         
     | 
| 
      
 5 
     | 
    
         
            +
            module MarkdownExec
         
     | 
| 
      
 6 
     | 
    
         
            +
              class LinkState
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :block_name, :document_filename,
         
     | 
| 
      
 8 
     | 
    
         
            +
                              :inherited_block_names, :inherited_lines
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                # Initialize the LinkState with keyword arguments for each attribute.
         
     | 
| 
      
 11 
     | 
    
         
            +
                # @param block_name [String, nil] the name of the block.
         
     | 
| 
      
 12 
     | 
    
         
            +
                # @param document_filename [String, nil] the filename of the document.
         
     | 
| 
      
 13 
     | 
    
         
            +
                # @param inherited_block_names [Array<String>, nil] the names of the inherited blocks.
         
     | 
| 
      
 14 
     | 
    
         
            +
                # @param inherited_lines [Array<String>, nil] the inherited lines of code.
         
     | 
| 
      
 15 
     | 
    
         
            +
                def initialize(block_name: nil, document_filename: nil,
         
     | 
| 
      
 16 
     | 
    
         
            +
                               inherited_block_names: [], inherited_lines: nil)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @block_name = block_name
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @document_filename = document_filename
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @inherited_block_names = inherited_block_names
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @inherited_lines = inherited_lines
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # Creates an empty LinkState instance.
         
     | 
| 
      
 24 
     | 
    
         
            +
                # @return [LinkState] an instance with all attributes set to their default values.
         
     | 
| 
      
 25 
     | 
    
         
            +
                def self.empty
         
     | 
| 
      
 26 
     | 
    
         
            +
                  new
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                # Custom equality method to compare LinkState objects.
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @param other [LinkState] the other LinkState object to compare with.
         
     | 
| 
      
 31 
     | 
    
         
            +
                # @return [Boolean] true if the objects are equal, false otherwise.
         
     | 
| 
      
 32 
     | 
    
         
            +
                def ==(other)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  other.class == self.class &&
         
     | 
| 
      
 34 
     | 
    
         
            +
                    other.block_name == block_name &&
         
     | 
| 
      
 35 
     | 
    
         
            +
                    other.document_filename == document_filename &&
         
     | 
| 
      
 36 
     | 
    
         
            +
                    other.inherited_block_names == inherited_block_names &&
         
     | 
| 
      
 37 
     | 
    
         
            +
                    other.inherited_lines == inherited_lines
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              class LinkHistory
         
     | 
| 
      
 42 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 43 
     | 
    
         
            +
                  @history = []
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                # Peeks at the most recent LinkState, returns an empty LinkState if stack is empty.
         
     | 
| 
      
 47 
     | 
    
         
            +
                def peek
         
     | 
| 
      
 48 
     | 
    
         
            +
                  @history.last || LinkState.empty
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                # Pops the most recent LinkState off the stack, returns an empty LinkState if stack is empty.
         
     | 
| 
      
 52 
     | 
    
         
            +
                def pop
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @history.pop || LinkState.empty
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                def prior_state_exist?
         
     | 
| 
      
 57 
     | 
    
         
            +
                  peek.document_filename.present?
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                # Pushes a LinkState onto the stack.
         
     | 
| 
      
 61 
     | 
    
         
            +
                def push(link_state)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  @history.push(link_state)
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
            end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            if $PROGRAM_NAME == __FILE__
         
     | 
| 
      
 68 
     | 
    
         
            +
              require 'bundler/setup'
         
     | 
| 
      
 69 
     | 
    
         
            +
              Bundler.require(:default)
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              require 'minitest/autorun'
         
     | 
| 
      
 72 
     | 
    
         
            +
              require 'mocha/minitest'
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
              module MarkdownExec
         
     | 
| 
      
 75 
     | 
    
         
            +
                class TestLinkHistory < Minitest::Test
         
     | 
| 
      
 76 
     | 
    
         
            +
                  def setup
         
     | 
| 
      
 77 
     | 
    
         
            +
                    @link_history = LinkHistory.new
         
     | 
| 
      
 78 
     | 
    
         
            +
                    @link_state1 = LinkState.new(block_name: 'block1', document_filename: 'document1.txt',
         
     | 
| 
      
 79 
     | 
    
         
            +
                                                 inherited_lines: ['code1.rb'])
         
     | 
| 
      
 80 
     | 
    
         
            +
                    @link_state2 = LinkState.new(block_name: 'block2', document_filename: 'document2.txt',
         
     | 
| 
      
 81 
     | 
    
         
            +
                                                 inherited_lines: ['code2.rb'])
         
     | 
| 
      
 82 
     | 
    
         
            +
                  end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                  def test_push
         
     | 
| 
      
 85 
     | 
    
         
            +
                    @link_history.push(@link_state1)
         
     | 
| 
      
 86 
     | 
    
         
            +
                    assert_equal @link_state1, @link_history.peek
         
     | 
| 
      
 87 
     | 
    
         
            +
                  end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                  def test_pop
         
     | 
| 
      
 90 
     | 
    
         
            +
                    @link_history.push(@link_state1)
         
     | 
| 
      
 91 
     | 
    
         
            +
                    @link_history.push(@link_state2)
         
     | 
| 
      
 92 
     | 
    
         
            +
                    assert_equal @link_state2, @link_history.pop
         
     | 
| 
      
 93 
     | 
    
         
            +
                    assert_equal @link_state1, @link_history.peek
         
     | 
| 
      
 94 
     | 
    
         
            +
                  end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                  def test_peek_empty
         
     | 
| 
      
 97 
     | 
    
         
            +
                    assert_equal LinkState.empty, @link_history.peek
         
     | 
| 
      
 98 
     | 
    
         
            +
                  end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                  def test_pop_empty
         
     | 
| 
      
 101 
     | 
    
         
            +
                    assert_equal LinkState.empty, @link_history.pop
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
                end
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
      
 105 
     | 
    
         
            +
            end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            __END__
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
            To generate the Ruby classes `LinkState` and `LinkHistory` with their current features and specifications, including the custom `==` method for object comparison and the implementation to handle empty states, you can use the following prompt:
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
            ---
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
            Create Ruby classes `LinkState` and `LinkHistory` with the following specifications:
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            1. **Class `LinkState`**:
         
     | 
| 
      
 116 
     | 
    
         
            +
                - Attributes: `block_name`, `document_filename`, `inherited_lines`.
         
     | 
| 
      
 117 
     | 
    
         
            +
                - Initialize with optional parameters for each attribute, defaulting to `nil`.
         
     | 
| 
      
 118 
     | 
    
         
            +
                - Include a class method `empty` that creates an instance with all attributes set to `nil`.
         
     | 
| 
      
 119 
     | 
    
         
            +
                - Implement a custom `==` method for comparing instances based on attribute values.
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            2. **Class `LinkHistory`**:
         
     | 
| 
      
 122 
     | 
    
         
            +
                - Use an array to manage a stack of `LinkState` instances.
         
     | 
| 
      
 123 
     | 
    
         
            +
                - Implement the following methods:
         
     | 
| 
      
 124 
     | 
    
         
            +
                    - `push`: Adds a `LinkState` instance to the top of the stack.
         
     | 
| 
      
 125 
     | 
    
         
            +
                    - `pop`: Removes and returns the most recent `LinkState` from the stack, or returns an empty `LinkState` if the stack is empty.
         
     | 
| 
      
 126 
     | 
    
         
            +
                    - `peek`: Returns the most recent `LinkState` without removing it from the stack, or an empty `LinkState` if the stack is empty.
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            3. **Testing**:
         
     | 
| 
      
 129 
     | 
    
         
            +
                - Write Minitest test cases to validate each method in `LinkHistory`. Test scenarios should include pushing and popping `LinkState` instances, and handling an empty `LinkHistory`.
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            The goal is to create a robust and efficient implementation of these classes, ensuring proper handling of stack operations and object comparisons.
         
     | 
    
        data/lib/markdown_exec.rb
    CHANGED
    
    | 
         @@ -41,8 +41,6 @@ tap_config envvar: MarkdownExec::TAP_DEBUG 
     | 
|
| 
       41 
41 
     | 
    
         
             
            $stderr.sync = true
         
     | 
| 
       42 
42 
     | 
    
         
             
            $stdout.sync = true
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
            MDE_HISTORY_ENV_NAME = 'MDE_MENU_HISTORY'
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
44 
     | 
    
         
             
            # custom error: file specified is missing
         
     | 
| 
       47 
45 
     | 
    
         
             
            #
         
     | 
| 
       48 
46 
     | 
    
         
             
            class FileMissingError < StandardError; end
         
     | 
| 
         @@ -172,26 +170,6 @@ module MarkdownExec 
     | 
|
| 
       172 
170 
     | 
    
         
             
                  }
         
     | 
| 
       173 
171 
     | 
    
         
             
                end
         
     | 
| 
       174 
172 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
                def clear_required_file
         
     | 
| 
       176 
     | 
    
         
            -
                  ENV['MDE_LINK_REQUIRED_FILE'] = ''
         
     | 
| 
       177 
     | 
    
         
            -
                end
         
     | 
| 
       178 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
                # # Deletes a required temporary file specified by an environment variable.
         
     | 
| 
       180 
     | 
    
         
            -
                # # The function checks if the file exists before attempting to delete it.
         
     | 
| 
       181 
     | 
    
         
            -
                # # Clears the environment variable after deletion.
         
     | 
| 
       182 
     | 
    
         
            -
                # #
         
     | 
| 
       183 
     | 
    
         
            -
                # def delete_required_temp_file
         
     | 
| 
       184 
     | 
    
         
            -
                #   temp_blocks_file_path = ENV.fetch('MDE_LINK_REQUIRED_FILE', nil)
         
     | 
| 
       185 
     | 
    
         
            -
             
     | 
| 
       186 
     | 
    
         
            -
                #   return if temp_blocks_file_path.nil? || temp_blocks_file_path.empty?
         
     | 
| 
       187 
     | 
    
         
            -
             
     | 
| 
       188 
     | 
    
         
            -
                #   FileUtils.rm_f(temp_blocks_file_path)
         
     | 
| 
       189 
     | 
    
         
            -
             
     | 
| 
       190 
     | 
    
         
            -
                #   clear_required_file
         
     | 
| 
       191 
     | 
    
         
            -
                # rescue StandardError
         
     | 
| 
       192 
     | 
    
         
            -
                #   error_handler('delete_required_temp_file')
         
     | 
| 
       193 
     | 
    
         
            -
                # end
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
173 
     | 
    
         
             
                public
         
     | 
| 
       196 
174 
     | 
    
         | 
| 
       197 
175 
     | 
    
         
             
                ## Determines the correct filename to use for searching files
         
     | 
| 
         @@ -222,7 +200,7 @@ module MarkdownExec 
     | 
|
| 
       222 
200 
     | 
    
         
             
                # Reports and executes block logic
         
     | 
| 
       223 
201 
     | 
    
         
             
                def execute_block_logic(files)
         
     | 
| 
       224 
202 
     | 
    
         
             
                  @options[:filename] = select_document_if_multiple(files)
         
     | 
| 
       225 
     | 
    
         
            -
                  @options. 
     | 
| 
      
 203 
     | 
    
         
            +
                  @options.select_execute_bash_and_special_blocks
         
     | 
| 
       226 
204 
     | 
    
         
             
                end
         
     | 
| 
       227 
205 
     | 
    
         | 
| 
       228 
206 
     | 
    
         
             
                ## Executes the block specified in the options
         
     | 
| 
         @@ -244,17 +222,17 @@ module MarkdownExec 
     | 
|
| 
       244 
222 
     | 
    
         | 
| 
       245 
223 
     | 
    
         
             
                  simple_commands = {
         
     | 
| 
       246 
224 
     | 
    
         
             
                    doc_glob: -> { @fout.fout options[:md_filename_glob] },
         
     | 
| 
       247 
     | 
    
         
            -
                    list_blocks: -> { list_blocks },
         
     | 
| 
      
 225 
     | 
    
         
            +
                    # list_blocks: -> { list_blocks },
         
     | 
| 
      
 226 
     | 
    
         
            +
                    list_default_env: -> { @fout.fout_list list_default_env },
         
     | 
| 
       248 
227 
     | 
    
         
             
                    list_default_yaml: -> { @fout.fout_list list_default_yaml },
         
     | 
| 
       249 
228 
     | 
    
         
             
                    list_docs: -> { @fout.fout_list files },
         
     | 
| 
       250 
     | 
    
         
            -
                     
     | 
| 
       251 
     | 
    
         
            -
                    list_recent_output: lambda {
         
     | 
| 
      
 229 
     | 
    
         
            +
                    list_recent_output: -> {
         
     | 
| 
       252 
230 
     | 
    
         
             
                                          @fout.fout_list list_recent_output(
         
     | 
| 
       253 
231 
     | 
    
         
             
                                            @options[:saved_stdout_folder],
         
     | 
| 
       254 
232 
     | 
    
         
             
                                            @options[:saved_stdout_glob], @options[:list_count]
         
     | 
| 
       255 
233 
     | 
    
         
             
                                          )
         
     | 
| 
       256 
234 
     | 
    
         
             
                                        },
         
     | 
| 
       257 
     | 
    
         
            -
                    list_recent_scripts:  
     | 
| 
      
 235 
     | 
    
         
            +
                    list_recent_scripts: -> {
         
     | 
| 
       258 
236 
     | 
    
         
             
                                           @fout.fout_list list_recent_scripts(
         
     | 
| 
       259 
237 
     | 
    
         
             
                                             options[:saved_script_folder],
         
     | 
| 
       260 
238 
     | 
    
         
             
                                             options[:saved_script_glob], options[:list_count]
         
     | 
| 
         @@ -358,19 +336,26 @@ module MarkdownExec 
     | 
|
| 
       358 
336 
     | 
    
         
             
                def lambda_for_procname(procname, options)
         
     | 
| 
       359 
337 
     | 
    
         
             
                  case procname
         
     | 
| 
       360 
338 
     | 
    
         
             
                  when 'debug'
         
     | 
| 
       361 
     | 
    
         
            -
                    ->(value) {
         
     | 
| 
       362 
     | 
    
         
            -
                      tap_config value: value
         
     | 
| 
       363 
     | 
    
         
            -
                    }
         
     | 
| 
      
 339 
     | 
    
         
            +
                    ->(value) { tap_config value: value }
         
     | 
| 
       364 
340 
     | 
    
         
             
                  when 'exit'
         
     | 
| 
       365 
341 
     | 
    
         
             
                    ->(_) { exit }
         
     | 
| 
       366 
     | 
    
         
            -
             
     | 
| 
       367 
342 
     | 
    
         
             
                  when 'find'
         
     | 
| 
       368 
343 
     | 
    
         
             
                    ->(value) {
         
     | 
| 
       369 
     | 
    
         
            -
                       
     | 
| 
       370 
     | 
    
         
            -
             
     | 
| 
       371 
     | 
    
         
            -
             
     | 
| 
      
 344 
     | 
    
         
            +
                      @fout.fout 'Searching in: ' \
         
     | 
| 
      
 345 
     | 
    
         
            +
                                 "#{HashDelegator.new(@options).string_send_color(@options[:path],
         
     | 
| 
      
 346 
     | 
    
         
            +
                                                                                  :menu_chrome_color)}"
         
     | 
| 
       372 
347 
     | 
    
         
             
                      searcher = DirectorySearcher.new(value, [@options[:path]])
         
     | 
| 
       373 
348 
     | 
    
         | 
| 
      
 349 
     | 
    
         
            +
                      @fout.fout 'In file contents'
         
     | 
| 
      
 350 
     | 
    
         
            +
                      hash = searcher.search_in_file_contents
         
     | 
| 
      
 351 
     | 
    
         
            +
                      hash.each.with_index do |(key, v2), i1|
         
     | 
| 
      
 352 
     | 
    
         
            +
                        @fout.fout format('- %3.d: %s', i1 + 1, key)
         
     | 
| 
      
 353 
     | 
    
         
            +
                        @fout.fout AnsiFormatter.new(options).format_and_highlight_array(
         
     | 
| 
      
 354 
     | 
    
         
            +
                          v2.map { |nl| format('=%4.d: %s', nl.index, nl.line) },
         
     | 
| 
      
 355 
     | 
    
         
            +
                          highlight: [value]
         
     | 
| 
      
 356 
     | 
    
         
            +
                        )
         
     | 
| 
      
 357 
     | 
    
         
            +
                      end
         
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
       374 
359 
     | 
    
         
             
                      @fout.fout 'In directory names'
         
     | 
| 
       375 
360 
     | 
    
         
             
                      @fout.fout AnsiFormatter.new(options).format_and_highlight_array(
         
     | 
| 
       376 
361 
     | 
    
         
             
                        searcher.search_in_directory_names, highlight: [value]
         
     | 
| 
         @@ -381,27 +366,15 @@ module MarkdownExec 
     | 
|
| 
       381 
366 
     | 
    
         
             
                        searcher.search_in_file_names, highlight: [value]
         
     | 
| 
       382 
367 
     | 
    
         
             
                      ).join("\n")
         
     | 
| 
       383 
368 
     | 
    
         | 
| 
       384 
     | 
    
         
            -
                      @fout.fout 'In file contents'
         
     | 
| 
       385 
     | 
    
         
            -
                      hash = searcher.search_in_file_contents
         
     | 
| 
       386 
     | 
    
         
            -
                      hash.each.with_index do |(key, v2), i1|
         
     | 
| 
       387 
     | 
    
         
            -
                        @fout.fout format('- %3.d: %s', i1 + 1, key)
         
     | 
| 
       388 
     | 
    
         
            -
                        @fout.fout AnsiFormatter.new(options).format_and_highlight_array(
         
     | 
| 
       389 
     | 
    
         
            -
                          v2.map { |nl| format('=%4.d: %s', nl.index, nl.line) },
         
     | 
| 
       390 
     | 
    
         
            -
                          highlight: [value]
         
     | 
| 
       391 
     | 
    
         
            -
                        )
         
     | 
| 
       392 
     | 
    
         
            -
                      end
         
     | 
| 
       393 
369 
     | 
    
         
             
                      exit
         
     | 
| 
       394 
370 
     | 
    
         
             
                    }
         
     | 
| 
       395 
     | 
    
         
            -
             
     | 
| 
       396 
371 
     | 
    
         
             
                  when 'help'
         
     | 
| 
       397 
372 
     | 
    
         
             
                    ->(_) {
         
     | 
| 
       398 
373 
     | 
    
         
             
                      @fout.fout menu_help
         
     | 
| 
       399 
374 
     | 
    
         
             
                      exit
         
     | 
| 
       400 
375 
     | 
    
         
             
                    }
         
     | 
| 
       401 
     | 
    
         
            -
                  # when %w[who what where why how which when whom]
         
     | 
| 
       402 
376 
     | 
    
         
             
                  when 'how'
         
     | 
| 
       403 
377 
     | 
    
         
             
                    ->(value) {
         
     | 
| 
       404 
     | 
    
         
            -
                      # value = 'color'
         
     | 
| 
       405 
378 
     | 
    
         
             
                      @fout.fout(list_default_yaml.select { |line| line.include? value })
         
     | 
| 
       406 
379 
     | 
    
         
             
                      exit
         
     | 
| 
       407 
380 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -432,7 +405,7 @@ module MarkdownExec 
     | 
|
| 
       432 
405 
     | 
    
         
             
                  end
         
     | 
| 
       433 
406 
     | 
    
         
             
                end
         
     | 
| 
       434 
407 
     | 
    
         | 
| 
       435 
     | 
    
         
            -
                def list_blocks; end
         
     | 
| 
      
 408 
     | 
    
         
            +
                # def list_blocks; end
         
     | 
| 
       436 
409 
     | 
    
         | 
| 
       437 
410 
     | 
    
         
             
                def list_default_env
         
     | 
| 
       438 
411 
     | 
    
         
             
                  menu_iter do |item|
         
     | 
| 
         @@ -551,10 +524,8 @@ module MarkdownExec 
     | 
|
| 
       551 
524 
     | 
    
         
             
                public
         
     | 
| 
       552 
525 
     | 
    
         | 
| 
       553 
526 
     | 
    
         
             
                def run
         
     | 
| 
       554 
     | 
    
         
            -
                  clear_required_file
         
     | 
| 
       555 
527 
     | 
    
         
             
                  initialize_and_parse_cli_options
         
     | 
| 
       556 
528 
     | 
    
         
             
                  execute_block_with_error_handling
         
     | 
| 
       557 
     | 
    
         
            -
                  @options.delete_required_temp_file
         
     | 
| 
       558 
529 
     | 
    
         
             
                rescue StandardError
         
     | 
| 
       559 
530 
     | 
    
         
             
                  error_handler('run')
         
     | 
| 
       560 
531 
     | 
    
         
             
                end
         
     | 
| 
         @@ -568,7 +539,7 @@ module MarkdownExec 
     | 
|
| 
       568 
539 
     | 
    
         | 
| 
       569 
540 
     | 
    
         
             
                  saved_name_split filename
         
     | 
| 
       570 
541 
     | 
    
         
             
                  @options[:save_executed_script] = false
         
     | 
| 
       571 
     | 
    
         
            -
                  @options. 
     | 
| 
      
 542 
     | 
    
         
            +
                  @options.select_execute_bash_and_special_blocks
         
     | 
| 
       572 
543 
     | 
    
         
             
                rescue StandardError
         
     | 
| 
       573 
544 
     | 
    
         
             
                  error_handler('run_last_script')
         
     | 
| 
       574 
545 
     | 
    
         
             
                end
         
     | 
| 
         @@ -635,7 +606,7 @@ module MarkdownExec 
     | 
|
| 
       635 
606 
     | 
    
         | 
| 
       636 
607 
     | 
    
         
             
                  saved_name_split(filename)
         
     | 
| 
       637 
608 
     | 
    
         | 
| 
       638 
     | 
    
         
            -
                  @options. 
     | 
| 
      
 609 
     | 
    
         
            +
                  @options.select_execute_bash_and_special_blocks ### ({ save_executed_script: false })
         
     | 
| 
       639 
610 
     | 
    
         
             
                end
         
     | 
| 
       640 
611 
     | 
    
         | 
| 
       641 
612 
     | 
    
         
             
                public
         
     | 
    
        data/lib/mdoc.rb
    CHANGED
    
    | 
         @@ -3,8 +3,8 @@ 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            # encoding=utf-8
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            require_relative 'filter'
         
     | 
| 
       7 
6 
     | 
    
         
             
            require_relative 'block_types'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require_relative 'filter'
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            module MarkdownExec
         
     | 
| 
       10 
10 
     | 
    
         
             
              ##
         
     | 
| 
         @@ -75,7 +75,6 @@ module MarkdownExec 
     | 
|
| 
       75 
75 
     | 
    
         
             
                    raise "Named code block `#{name}` not found. (@#{__LINE__})"
         
     | 
| 
       76 
76 
     | 
    
         
             
                  end
         
     | 
| 
       77 
77 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
                  # all_dependency_names = [name_block.oname] + recursively_required(name_block[:reqs])
         
     | 
| 
       79 
78 
     | 
    
         
             
                  dependencies = collect_dependencies(name_block[:oname])
         
     | 
| 
       80 
79 
     | 
    
         
             
                  all_dependency_names = collect_unique_names(dependencies).push(name_block[:oname]).uniq
         
     | 
| 
       81 
80 
     | 
    
         
             
                  unmet_dependencies = all_dependency_names.dup
         
     | 
| 
         @@ -91,10 +90,11 @@ module MarkdownExec 
     | 
|
| 
       91 
90 
     | 
    
         
             
                    else
         
     | 
| 
       92 
91 
     | 
    
         
             
                      []
         
     | 
| 
       93 
92 
     | 
    
         
             
                    end + [fcb]
         
     | 
| 
       94 
     | 
    
         
            -
                  end.flatten(1) 
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                     
     | 
| 
      
 93 
     | 
    
         
            +
                  end.flatten(1)
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                  { all_dependency_names: all_dependency_names,
         
     | 
| 
      
 96 
     | 
    
         
            +
                    blocks: blocks,
         
     | 
| 
      
 97 
     | 
    
         
            +
                    dependencies: dependencies,
         
     | 
| 
       98 
98 
     | 
    
         
             
                    unmet_dependencies: unmet_dependencies }
         
     | 
| 
       99 
99 
     | 
    
         
             
                end
         
     | 
| 
       100 
100 
     | 
    
         | 
| 
         @@ -103,26 +103,37 @@ module MarkdownExec 
     | 
|
| 
       103 
103 
     | 
    
         
             
                # @param name [String] The name of the code block to start the collection from.
         
     | 
| 
       104 
104 
     | 
    
         
             
                # @return [Array<String>] An array of strings containing the collected code blocks.
         
     | 
| 
       105 
105 
     | 
    
         
             
                #
         
     | 
| 
       106 
     | 
    
         
            -
                def collect_recursively_required_code(name, label_body: true, label_format_above: nil, 
     | 
| 
      
 106 
     | 
    
         
            +
                def collect_recursively_required_code(name, label_body: true, label_format_above: nil,
         
     | 
| 
      
 107 
     | 
    
         
            +
                                                      label_format_below: nil, block_source:)
         
     | 
| 
       107 
108 
     | 
    
         
             
                  block_search = collect_recursively_required_blocks(name)
         
     | 
| 
       108 
     | 
    
         
            -
                   
     | 
| 
       109 
     | 
    
         
            -
                     
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
      
 109 
     | 
    
         
            +
                  if block_search[:blocks]
         
     | 
| 
      
 110 
     | 
    
         
            +
                    blocks = collect_wrapped_blocks(block_search[:blocks])
         
     | 
| 
      
 111 
     | 
    
         
            +
                    block_search.merge(
         
     | 
| 
      
 112 
     | 
    
         
            +
                      { block_names: blocks.map { |block| block[:oname] },
         
     | 
| 
      
 113 
     | 
    
         
            +
                        code: blocks.map do |fcb|
         
     | 
| 
      
 114 
     | 
    
         
            +
                          if fcb[:cann]
         
     | 
| 
      
 115 
     | 
    
         
            +
                            collect_block_code_cann(fcb)
         
     | 
| 
      
 116 
     | 
    
         
            +
                          elsif fcb[:stdout]
         
     | 
| 
      
 117 
     | 
    
         
            +
                            collect_block_code_stdout(fcb)
         
     | 
| 
      
 118 
     | 
    
         
            +
                          elsif [BlockType::LINK, BlockType::OPTS,
         
     | 
| 
      
 119 
     | 
    
         
            +
                                 BlockType::VARS].include? fcb[:shell]
         
     | 
| 
      
 120 
     | 
    
         
            +
                            nil
         
     | 
| 
      
 121 
     | 
    
         
            +
                          elsif fcb[:shell] == BlockType::PORT
         
     | 
| 
      
 122 
     | 
    
         
            +
                            collect_block_code_shell(fcb)
         
     | 
| 
      
 123 
     | 
    
         
            +
                          elsif label_body
         
     | 
| 
      
 124 
     | 
    
         
            +
                            [label_format_above && format(label_format_above,
         
     | 
| 
      
 125 
     | 
    
         
            +
                                                          block_source.merge({ block_name: fcb[:oname] }))] +
         
     | 
| 
      
 126 
     | 
    
         
            +
                             fcb[:body] +
         
     | 
| 
      
 127 
     | 
    
         
            +
                             [label_format_below && format(label_format_below,
         
     | 
| 
      
 128 
     | 
    
         
            +
                                                           block_source.merge({ block_name: fcb[:oname] }))]
         
     | 
| 
      
 129 
     | 
    
         
            +
                          else # raw body
         
     | 
| 
      
 130 
     | 
    
         
            +
                            fcb[:body]
         
     | 
| 
      
 131 
     | 
    
         
            +
                          end
         
     | 
| 
      
 132 
     | 
    
         
            +
                        end.compact.flatten(1).compact }
         
     | 
| 
      
 133 
     | 
    
         
            +
                    )
         
     | 
| 
      
 134 
     | 
    
         
            +
                  else
         
     | 
| 
      
 135 
     | 
    
         
            +
                    block_search.merge({ block_names: [], code: [] })
         
     | 
| 
      
 136 
     | 
    
         
            +
                  end
         
     | 
| 
       126 
137 
     | 
    
         
             
                end
         
     | 
| 
       127 
138 
     | 
    
         | 
| 
       128 
139 
     | 
    
         
             
                def collect_unique_names(hash)
         
     | 
| 
         @@ -223,7 +234,6 @@ module MarkdownExec 
     | 
|
| 
       223 
234 
     | 
    
         
             
                  end
         
     | 
| 
       224 
235 
     | 
    
         
             
                end
         
     | 
| 
       225 
236 
     | 
    
         | 
| 
       226 
     | 
    
         
            -
                # if tr   ue
         
     | 
| 
       227 
237 
     | 
    
         
             
                # Recursively fetches required code blocks for a given list of requirements.
         
     | 
| 
       228 
238 
     | 
    
         
             
                #
         
     | 
| 
       229 
239 
     | 
    
         
             
                # @param reqs [Array<String>] An array of requirements to start the recursion from.
         
     | 
| 
         @@ -247,7 +257,6 @@ module MarkdownExec 
     | 
|
| 
       247 
257 
     | 
    
         
             
                  memo
         
     | 
| 
       248 
258 
     | 
    
         
             
                end
         
     | 
| 
       249 
259 
     | 
    
         | 
| 
       250 
     | 
    
         
            -
                # else
         
     | 
| 
       251 
260 
     | 
    
         
             
                # Recursively fetches required code blocks for a given list of requirements.
         
     | 
| 
       252 
261 
     | 
    
         
             
                #
         
     | 
| 
       253 
262 
     | 
    
         
             
                # @param source [String] The name of the code block to start the recursion from.
         
     | 
| 
         @@ -273,8 +282,6 @@ module MarkdownExec 
     | 
|
| 
       273 
282 
     | 
    
         
             
                  memo
         
     | 
| 
       274 
283 
     | 
    
         
             
                end
         
     | 
| 
       275 
284 
     | 
    
         | 
| 
       276 
     | 
    
         
            -
                # end
         
     | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
       278 
285 
     | 
    
         
             
                # Recursively collects dependencies of a given source.
         
     | 
| 
       279 
286 
     | 
    
         
             
                # @param source [String] The name of the initial source block.
         
     | 
| 
       280 
287 
     | 
    
         
             
                # @param memo [Hash] A memoization hash to store resolved dependencies.
         
     | 
| 
         @@ -283,11 +290,10 @@ module MarkdownExec 
     | 
|
| 
       283 
290 
     | 
    
         
             
                  return memo unless source
         
     | 
| 
       284 
291 
     | 
    
         | 
| 
       285 
292 
     | 
    
         
             
                  if (block = get_block_by_anyname(source)).nil? || block.keys.empty?
         
     | 
| 
       286 
     | 
    
         
            -
                    if true
         
     | 
| 
       287 
     | 
    
         
            -
             
     | 
| 
       288 
     | 
    
         
            -
                     
     | 
| 
       289 
     | 
    
         
            -
             
     | 
| 
       290 
     | 
    
         
            -
                    end
         
     | 
| 
      
 293 
     | 
    
         
            +
                    return memo if true
         
     | 
| 
      
 294 
     | 
    
         
            +
             
     | 
| 
      
 295 
     | 
    
         
            +
                    raise "Named code block `#{source}` not found. (@#{__LINE__})"
         
     | 
| 
      
 296 
     | 
    
         
            +
             
     | 
| 
       291 
297 
     | 
    
         
             
                  end
         
     | 
| 
       292 
298 
     | 
    
         | 
| 
       293 
299 
     | 
    
         
             
                  return memo unless block[:reqs]
         
     | 
    
        data/lib/menu.src.yml
    CHANGED
    
    | 
         @@ -96,6 +96,7 @@ 
     | 
|
| 
       96 
96 
     | 
    
         
             
              :default: false
         
     | 
| 
       97 
97 
     | 
    
         
             
              :description: Dump BlocksInFile (stage 1)
         
     | 
| 
       98 
98 
     | 
    
         
             
              :env_var: MDE_DUMP_BLOCKS_IN_FILE
         
     | 
| 
      
 99 
     | 
    
         
            +
              :long_name: dump-blocks-in-file
         
     | 
| 
       99 
100 
     | 
    
         
             
              :opt_name: dump_blocks_in_file
         
     | 
| 
       100 
101 
     | 
    
         
             
              :procname: val_as_bool
         
     | 
| 
       101 
102 
     | 
    
         | 
| 
         @@ -103,6 +104,7 @@ 
     | 
|
| 
       103 
104 
     | 
    
         
             
              :default: false
         
     | 
| 
       104 
105 
     | 
    
         
             
              :description: Dump MenuBlocks (stage 2)
         
     | 
| 
       105 
106 
     | 
    
         
             
              :env_var: MDE_DUMP_MENU_BLOCKS
         
     | 
| 
      
 107 
     | 
    
         
            +
              :long_name: dump-menu-blocks
         
     | 
| 
       106 
108 
     | 
    
         
             
              :opt_name: dump_menu_blocks
         
     | 
| 
       107 
109 
     | 
    
         
             
              :procname: val_as_bool
         
     | 
| 
       108 
110 
     | 
    
         | 
| 
         @@ -110,10 +112,11 @@ 
     | 
|
| 
       110 
112 
     | 
    
         
             
              :default: false
         
     | 
| 
       111 
113 
     | 
    
         
             
              :description: Dump selected block
         
     | 
| 
       112 
114 
     | 
    
         
             
              :env_var: MDE_DUMP_SELECTED_BLOCK
         
     | 
| 
      
 115 
     | 
    
         
            +
              :long_name: dump-selected-block
         
     | 
| 
       113 
116 
     | 
    
         
             
              :opt_name: dump_selected_block
         
     | 
| 
       114 
117 
     | 
    
         
             
              :procname: val_as_bool
         
     | 
| 
       115 
118 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 119 
     | 
    
         
            +
            - :default: fg_rgbh_ff_00_7f
         
     | 
| 
       117 
120 
     | 
    
         
             
              :description: Color of exception detail
         
     | 
| 
       118 
121 
     | 
    
         
             
              :env_var: MDE_EXCEPTION_COLOR_DETAIL
         
     | 
| 
       119 
122 
     | 
    
         
             
              :opt_name: exception_color_detail
         
     | 
| 
         @@ -125,7 +128,7 @@ 
     | 
|
| 
       125 
128 
     | 
    
         
             
              :opt_name: exception_format_detail
         
     | 
| 
       126 
129 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       127 
130 
     | 
    
         | 
| 
       128 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 131 
     | 
    
         
            +
            - :default: fg_rgbh_ff_00_00
         
     | 
| 
       129 
132 
     | 
    
         
             
              :description: Color of exception name
         
     | 
| 
       130 
133 
     | 
    
         
             
              :env_var: MDE_EXCEPTION_COLOR_NAME
         
     | 
| 
       131 
134 
     | 
    
         
             
              :opt_name: exception_color_name
         
     | 
| 
         @@ -158,7 +161,7 @@ 
     | 
|
| 
       158 
161 
     | 
    
         
             
              :opt_name: exclude_expect_blocks
         
     | 
| 
       159 
162 
     | 
    
         
             
              :procname: val_as_bool
         
     | 
| 
       160 
163 
     | 
    
         | 
| 
       161 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 164 
     | 
    
         
            +
            - :default: fg_rgbh_7f_ff_00
         
     | 
| 
       162 
165 
     | 
    
         
             
              :description: execution_report_preview_frame_color
         
     | 
| 
       163 
166 
     | 
    
         
             
              :env_var: MDE_EXECUTION_REPORT_PREVIEW_FRAME_COLOR
         
     | 
| 
       164 
167 
     | 
    
         
             
              :opt_name: execution_report_preview_frame_color
         
     | 
| 
         @@ -320,7 +323,7 @@ 
     | 
|
| 
       320 
323 
     | 
    
         
             
              :opt_name: menu_back_at_top
         
     | 
| 
       321 
324 
     | 
    
         
             
              :procname: val_as_bool
         
     | 
| 
       322 
325 
     | 
    
         | 
| 
       323 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 326 
     | 
    
         
            +
            - :default: fg_rgbh_00_c0_c0
         
     | 
| 
       324 
327 
     | 
    
         
             
              :description: Color of menu bash
         
     | 
| 
       325 
328 
     | 
    
         
             
              :env_var: MDE_MENU_BASH_COLOR
         
     | 
| 
       326 
329 
     | 
    
         
             
              :opt_name: menu_bash_color
         
     | 
| 
         @@ -340,7 +343,7 @@ 
     | 
|
| 
       340 
343 
     | 
    
         
             
              :opt_name: menu_blocks_with_headings
         
     | 
| 
       341 
344 
     | 
    
         
             
              :procname: val_as_bool
         
     | 
| 
       342 
345 
     | 
    
         | 
| 
       343 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 346 
     | 
    
         
            +
            - :default: fg_rgbh_40_c0_c0
         
     | 
| 
       344 
347 
     | 
    
         
             
              :description: Color of menu chrome
         
     | 
| 
       345 
348 
     | 
    
         
             
              :env_var: MDE_MENU_CHROME_COLOR
         
     | 
| 
       346 
349 
     | 
    
         
             
              :opt_name: menu_chrome_color
         
     | 
| 
         @@ -352,7 +355,7 @@ 
     | 
|
| 
       352 
355 
     | 
    
         
             
              :opt_name: menu_chrome_format
         
     | 
| 
       353 
356 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       354 
357 
     | 
    
         | 
| 
       355 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 358 
     | 
    
         
            +
            - :default: fg_rgbh_80_d0_c0
         
     | 
| 
       356 
359 
     | 
    
         
             
              :description: Color of menu divider
         
     | 
| 
       357 
360 
     | 
    
         
             
              :env_var: MDE_MENU_DIVIDER_COLOR
         
     | 
| 
       358 
361 
     | 
    
         
             
              :opt_name: menu_divider_color
         
     | 
| 
         @@ -417,7 +420,7 @@ 
     | 
|
| 
       417 
420 
     | 
    
         
             
              :opt_name: menu_initial_divider
         
     | 
| 
       418 
421 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       419 
422 
     | 
    
         | 
| 
       420 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 423 
     | 
    
         
            +
            - :default: fg_rgbh_e0_e0_20
         
     | 
| 
       421 
424 
     | 
    
         
             
              :description: Color of menu link
         
     | 
| 
       422 
425 
     | 
    
         
             
              :env_var: MDE_MENU_LINK_COLOR
         
     | 
| 
       423 
426 
     | 
    
         
             
              :opt_name: menu_link_color
         
     | 
| 
         @@ -429,7 +432,7 @@ 
     | 
|
| 
       429 
432 
     | 
    
         
             
              :opt_name: menu_link_format
         
     | 
| 
       430 
433 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       431 
434 
     | 
    
         | 
| 
       432 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 435 
     | 
    
         
            +
            - :default: fg_rgbh_b0_b0_b0
         
     | 
| 
       433 
436 
     | 
    
         
             
              :description: Color of menu note
         
     | 
| 
       434 
437 
     | 
    
         
             
              :env_var: MDE_MENU_NOTE_COLOR
         
     | 
| 
       435 
438 
     | 
    
         
             
              :opt_name: menu_note_color
         
     | 
| 
         @@ -463,13 +466,13 @@ 
     | 
|
| 
       463 
466 
     | 
    
         
             
              :opt_name: menu_option_exit_name
         
     | 
| 
       464 
467 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       465 
468 
     | 
    
         | 
| 
       466 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 469 
     | 
    
         
            +
            - :default: fg_rgbh_ff_00_ff
         
     | 
| 
       467 
470 
     | 
    
         
             
              :description: Color of menu opts
         
     | 
| 
       468 
471 
     | 
    
         
             
              :env_var: MDE_MENU_OPTS_COLOR
         
     | 
| 
       469 
472 
     | 
    
         
             
              :opt_name: menu_opts_color
         
     | 
| 
       470 
473 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       471 
474 
     | 
    
         | 
| 
       472 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 475 
     | 
    
         
            +
            - :default: fg_rgbh_7f_00_ff
         
     | 
| 
       473 
476 
     | 
    
         
             
              :description: Color of menu opts
         
     | 
| 
       474 
477 
     | 
    
         
             
              :env_var: MDE_MENU_OPTS_SET_COLOR
         
     | 
| 
       475 
478 
     | 
    
         
             
              :opt_name: menu_opts_set_color
         
     | 
| 
         @@ -481,7 +484,7 @@ 
     | 
|
| 
       481 
484 
     | 
    
         
             
              :opt_name: menu_opts_set_format
         
     | 
| 
       482 
485 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       483 
486 
     | 
    
         | 
| 
       484 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 487 
     | 
    
         
            +
            - :default: fg_rgbh_ff_ff_ff
         
     | 
| 
       485 
488 
     | 
    
         
             
              :description: Color of menu task
         
     | 
| 
       486 
489 
     | 
    
         
             
              :env_var: MDE_MENU_TASK_COLOR
         
     | 
| 
       487 
490 
     | 
    
         
             
              :opt_name: menu_task_color
         
     | 
| 
         @@ -505,13 +508,13 @@ 
     | 
|
| 
       505 
508 
     | 
    
         
             
              :opt_name: menu_task_symbol
         
     | 
| 
       506 
509 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       507 
510 
     | 
    
         | 
| 
       508 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 511 
     | 
    
         
            +
            - :default: fg_rgbh_ff_a0_ff
         
     | 
| 
       509 
512 
     | 
    
         
             
              :description: Color of menu vars
         
     | 
| 
       510 
513 
     | 
    
         
             
              :env_var: MDE_MENU_VARS_COLOR
         
     | 
| 
       511 
514 
     | 
    
         
             
              :opt_name: menu_vars_color
         
     | 
| 
       512 
515 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       513 
516 
     | 
    
         | 
| 
       514 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 517 
     | 
    
         
            +
            - :default: fg_rgbh_00_ff_ff
         
     | 
| 
       515 
518 
     | 
    
         
             
              :description: Color of menu vars
         
     | 
| 
       516 
519 
     | 
    
         
             
              :env_var: MDE_MENU_VARS_SET_COLOR
         
     | 
| 
       517 
520 
     | 
    
         
             
              :opt_name: menu_vars_set_color
         
     | 
| 
         @@ -558,13 +561,13 @@ 
     | 
|
| 
       558 
561 
     | 
    
         
             
              :opt_name: output_execution_label_format
         
     | 
| 
       559 
562 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       560 
563 
     | 
    
         | 
| 
       561 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 564 
     | 
    
         
            +
            - :default: fg_rgbh_00_ff_00
         
     | 
| 
       562 
565 
     | 
    
         
             
              :description: Color of output_execution_label_name
         
     | 
| 
       563 
566 
     | 
    
         
             
              :env_var: MDE_OUTPUT_EXECUTION_LABEL_NAME_COLOR
         
     | 
| 
       564 
567 
     | 
    
         
             
              :opt_name: output_execution_label_name_color
         
     | 
| 
       565 
568 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       566 
569 
     | 
    
         | 
| 
       567 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 570 
     | 
    
         
            +
            - :default: fg_rgbh_00_ff_00
         
     | 
| 
       568 
571 
     | 
    
         
             
              :description: Color of output_execution_label_value
         
     | 
| 
       569 
572 
     | 
    
         
             
              :env_var: MDE_OUTPUT_EXECUTION_LABEL_VALUE_COLOR
         
     | 
| 
       570 
573 
     | 
    
         
             
              :opt_name: output_execution_label_value_color
         
     | 
| 
         @@ -626,7 +629,7 @@ 
     | 
|
| 
       626 
629 
     | 
    
         
             
              :opt_name: prompt_approve_block
         
     | 
| 
       627 
630 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       628 
631 
     | 
    
         | 
| 
       629 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 632 
     | 
    
         
            +
            - :default: fg_rgbh_00_ff_00
         
     | 
| 
       630 
633 
     | 
    
         
             
              :description: Color of prompt after script execution
         
     | 
| 
       631 
634 
     | 
    
         
             
              :env_var: MDE_PROMPT_COLOR_AFTER_SCRIPT_EXECUTION
         
     | 
| 
       632 
635 
     | 
    
         
             
              :opt_name: prompt_color_after_script_execution
         
     | 
| 
         @@ -768,7 +771,7 @@ 
     | 
|
| 
       768 
771 
     | 
    
         
             
              :opt_name: saved_stdout_glob
         
     | 
| 
       769 
772 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       770 
773 
     | 
    
         | 
| 
       771 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 774 
     | 
    
         
            +
            - :default: fg_rgbh_00_ff_7f
         
     | 
| 
       772 
775 
     | 
    
         
             
              :description: script_execution_frame_color
         
     | 
| 
       773 
776 
     | 
    
         
             
              :env_var: MDE_SCRIPT_EXECUTION_FRAME_COLOR
         
     | 
| 
       774 
777 
     | 
    
         
             
              :opt_name: script_execution_frame_color
         
     | 
| 
         @@ -786,7 +789,7 @@ 
     | 
|
| 
       786 
789 
     | 
    
         
             
              :opt_name: script_execution_tail
         
     | 
| 
       787 
790 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       788 
791 
     | 
    
         | 
| 
       789 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 792 
     | 
    
         
            +
            - :default: fg_rgbh_7f_ff_00
         
     | 
| 
       790 
793 
     | 
    
         
             
              :description: Color of output divider
         
     | 
| 
       791 
794 
     | 
    
         
             
              :env_var: MDE_OUTPUT_DIVIDER_COLOR
         
     | 
| 
       792 
795 
     | 
    
         
             
              :opt_name: script_preview_frame_color
         
     | 
| 
         @@ -846,13 +849,13 @@ 
     | 
|
| 
       846 
849 
     | 
    
         
             
              :opt_name: shell
         
     | 
| 
       847 
850 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       848 
851 
     | 
    
         | 
| 
       849 
     | 
    
         
            -
            - :default: "#  -^-  +%{ 
     | 
| 
      
 852 
     | 
    
         
            +
            - :default: "#  -^-  +%{block_name}  -o-  %{document_filename}  -^-"
         
     | 
| 
       850 
853 
     | 
    
         
             
              :description: shell_code_label_format_above
         
     | 
| 
       851 
854 
     | 
    
         
             
              :env_var: MDE_SHELL_CODE_LABEL_FORMAT_ABOVE
         
     | 
| 
       852 
855 
     | 
    
         
             
              :opt_name: shell_code_label_format_above
         
     | 
| 
       853 
856 
     | 
    
         
             
              :procname: val_as_str
         
     | 
| 
       854 
857 
     | 
    
         | 
| 
       855 
     | 
    
         
            -
            - :default: "#  -v-  +%{ 
     | 
| 
      
 858 
     | 
    
         
            +
            - :default: "#  -v-  +%{block_name}  -v-"
         
     | 
| 
       856 
859 
     | 
    
         
             
              :description: shell_code_label_format_below
         
     | 
| 
       857 
860 
     | 
    
         
             
              :env_var: MDE_SHELL_CODE_LABEL_FORMAT_BELOW
         
     | 
| 
       858 
861 
     | 
    
         
             
              :opt_name: shell_code_label_format_below
         
     | 
| 
         @@ -877,7 +880,7 @@ 
     | 
|
| 
       877 
880 
     | 
    
         
             
              :procname: version
         
     | 
| 
       878 
881 
     | 
    
         
             
              :short_name: v
         
     | 
| 
       879 
882 
     | 
    
         | 
| 
       880 
     | 
    
         
            -
            - :default:  
     | 
| 
      
 883 
     | 
    
         
            +
            - :default: fg_rgbh_ff_7f_00
         
     | 
| 
       881 
884 
     | 
    
         
             
              :description: Color of warning message
         
     | 
| 
       882 
885 
     | 
    
         
             
              :env_var: MDE_WARNING_COLOR
         
     | 
| 
       883 
886 
     | 
    
         
             
              :opt_name: warning_color
         
     |