mdless 2.1.35 → 2.1.36
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 +1 -4
- data/lib/mdless/console.rb +5 -0
- data/lib/mdless/converter.rb +62 -65
- data/lib/mdless/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 99d20a886a23bd77ae38be29d68c25ed6673fe32815ac8c06f621cf7fd101b27
         | 
| 4 | 
            +
              data.tar.gz: a87049e15d202db34aff6960212561cb9026a3a6627d73a532d700495de070fe
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 047faebf6bc49ed8c56916b36a9b0428c0af508ae956ea76f0547792a744b7e3be80726d1c4435542b5b9fbc7a2b8339b22614bffe2ebb2042e861cd28b636e2
         | 
| 7 | 
            +
              data.tar.gz: 41c7e129de92b8cc7852aaa71ab61bca9964066a5aee1b1b196d77c6a0b23429960ca1203180a7a540a3253e387b59023e140186da36f874eed0f8eaa1020aad
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,7 +1,3 @@ | |
| 1 | 
            -
            2.1.26
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            2.1.32
         | 
| 4 | 
            -
             | 
| 5 1 | 
             
            2.1.35
         | 
| 6 2 | 
             
            : Ruby 2.7 error (again)
         | 
| 7 3 |  | 
| @@ -38,6 +34,7 @@ | |
| 38 34 | 
             
            : TaskPaper file with metadata causing negative argument error
         | 
| 39 35 | 
             
            : Remove `<br>` from metadata
         | 
| 40 36 | 
             
            : YAML metadata and negative line lengths
         | 
| 37 | 
            +
            >>>>>>> release/2.1.30
         | 
| 41 38 |  | 
| 42 39 | 
             
            2.1.14
         | 
| 43 40 | 
             
            : Spaces on a line separating metadata won't break display
         | 
    
        data/lib/mdless/console.rb
    CHANGED
    
    | @@ -828,10 +828,15 @@ module Redcarpet | |
| 828 828 | 
             
                    end
         | 
| 829 829 | 
             
                  end
         | 
| 830 830 |  | 
| 831 | 
            +
                  def fix_image_attributes(input)
         | 
| 832 | 
            +
                    input.gsub(/^( {0,3}\[.*?\]: *\S+) +([^"].*?)$/, '\1')
         | 
| 833 | 
            +
                  end
         | 
| 834 | 
            +
             | 
| 831 835 | 
             
                  def preprocess(input)
         | 
| 832 836 | 
             
                    input = color_meta(input)
         | 
| 833 837 | 
             
                    input = mmd_transclude(input) if MDLess.options[:transclude]
         | 
| 834 838 | 
             
                    input = mmd_metadata_replace(input) if MDLess.options[:mmd_metadata]
         | 
| 839 | 
            +
                    input = fix_image_attributes(input)
         | 
| 835 840 |  | 
| 836 841 | 
             
                    replaced_input = input.clone
         | 
| 837 842 | 
             
                    ## Replace setex headers with ATX
         | 
    
        data/lib/mdless/converter.rb
    CHANGED
    
    | @@ -280,7 +280,6 @@ module CLIMarkdown | |
| 280 280 | 
             
                  end
         | 
| 281 281 |  | 
| 282 282 | 
             
                  @output = ''
         | 
| 283 | 
            -
                  @headers = []
         | 
| 284 283 | 
             
                  @setheaders = []
         | 
| 285 284 |  | 
| 286 285 | 
             
                  input = ''
         | 
| @@ -304,13 +303,14 @@ module CLIMarkdown | |
| 304 303 | 
             
                                                     tables: true,
         | 
| 305 304 | 
             
                                                     underline: false)
         | 
| 306 305 |  | 
| 307 | 
            -
                  spinner = TTY::Spinner.new("[:spinner] Processing ...", format: :dots_3, clear: true)
         | 
| 308 | 
            -
             | 
| 309 306 | 
             
                  if !args.empty?
         | 
| 310 307 | 
             
                    files = args.delete_if { |f| !File.exist?(f) }
         | 
| 308 | 
            +
                    @multifile = files.count > 1
         | 
| 311 309 | 
             
                    files.each do |file|
         | 
| 310 | 
            +
                      spinner = TTY::Spinner.new("[:spinner] Processing #{File.basename(file)}...", format: :dots_3, clear: true)
         | 
| 312 311 | 
             
                      spinner.run do |spinner|
         | 
| 313 312 | 
             
                        MDLess.log.info(%(Processing "#{file}"))
         | 
| 313 | 
            +
                        @output << "#{c(%i[b green])}[#{c(%i[b white])}#{file}#{c(%i[b green])}]#{xc}\n\n" if @multifile
         | 
| 314 314 | 
             
                        MDLess.file = file
         | 
| 315 315 |  | 
| 316 316 | 
             
                        begin
         | 
| @@ -322,7 +322,7 @@ module CLIMarkdown | |
| 322 322 |  | 
| 323 323 | 
             
                        input.scrub!
         | 
| 324 324 | 
             
                        input.gsub!(/\r?\n/, "\n")
         | 
| 325 | 
            -
             | 
| 325 | 
            +
                        @headers = headers(input)
         | 
| 326 326 | 
             
                        if MDLess.options[:taskpaper] == :auto
         | 
| 327 327 | 
             
                          MDLess.options[:taskpaper] = if CLIMarkdown::TaskPaper.is_taskpaper?(input)
         | 
| 328 328 | 
             
                                                         MDLess.log.info('TaskPaper detected')
         | 
| @@ -333,26 +333,26 @@ module CLIMarkdown | |
| 333 333 | 
             
                        end
         | 
| 334 334 |  | 
| 335 335 | 
             
                        if MDLess.options[:list]
         | 
| 336 | 
            -
                          if MDLess.options[:taskpaper]
         | 
| 337 | 
            -
             | 
| 338 | 
            -
             | 
| 339 | 
            -
             | 
| 340 | 
            -
             | 
| 341 | 
            -
             | 
| 336 | 
            +
                          @output << if MDLess.options[:taskpaper]
         | 
| 337 | 
            +
                                       CLIMarkdown::TaskPaper.list_projects(input)
         | 
| 338 | 
            +
                                     else
         | 
| 339 | 
            +
                                       list_headers(input)
         | 
| 340 | 
            +
                                     end
         | 
| 341 | 
            +
                        elsif MDLess.options[:taskpaper]
         | 
| 342 | 
            +
                          input = input.color_meta(MDLess.cols)
         | 
| 343 | 
            +
                          input = CLIMarkdown::TaskPaper.highlight(input)
         | 
| 344 | 
            +
                          @output << input.highlight_tags
         | 
| 342 345 | 
             
                        else
         | 
| 343 | 
            -
                           | 
| 344 | 
            -
                            input = input.color_meta(MDLess.cols)
         | 
| 345 | 
            -
                            input = CLIMarkdown::TaskPaper.highlight(input)
         | 
| 346 | 
            -
                            @output = input.highlight_tags
         | 
| 347 | 
            -
                          else
         | 
| 348 | 
            -
                            @output = markdown.render(input)
         | 
| 349 | 
            -
                          end
         | 
| 346 | 
            +
                          @output << markdown.render(input)
         | 
| 350 347 | 
             
                        end
         | 
| 348 | 
            +
                        @output << "\n\n"
         | 
| 351 349 | 
             
                      end
         | 
| 352 350 | 
             
                    end
         | 
| 351 | 
            +
             | 
| 353 352 | 
             
                    printout
         | 
| 354 353 | 
             
                  elsif !$stdin.isatty
         | 
| 355 354 | 
             
                    MDLess.log.info(%(Processing STDIN))
         | 
| 355 | 
            +
                    spinner = TTY::Spinner.new("[:spinner] Processing ...", format: :dots_3, clear: true)
         | 
| 356 356 | 
             
                    spinner.run do |spinner|
         | 
| 357 357 | 
             
                      MDLess.file = nil
         | 
| 358 358 | 
             
                      input = $stdin.read.scrub
         | 
| @@ -366,6 +366,7 @@ module CLIMarkdown | |
| 366 366 | 
             
                                                       false
         | 
| 367 367 | 
             
                                                     end
         | 
| 368 368 | 
             
                      end
         | 
| 369 | 
            +
                      @headers = headers(input)
         | 
| 369 370 |  | 
| 370 371 | 
             
                      if MDLess.options[:list]
         | 
| 371 372 | 
             
                        if MDLess.options[:taskpaper]
         | 
| @@ -417,34 +418,32 @@ module CLIMarkdown | |
| 417 418 | 
             
                  end
         | 
| 418 419 | 
             
                end
         | 
| 419 420 |  | 
| 420 | 
            -
                def  | 
| 421 | 
            -
                   | 
| 422 | 
            -
             | 
| 423 | 
            -
             | 
| 424 | 
            -
             | 
| 425 | 
            -
             | 
| 426 | 
            -
                     | 
| 427 | 
            -
             | 
| 428 | 
            -
             | 
| 429 | 
            -
                       | 
| 430 | 
            -
             | 
| 431 | 
            -
             | 
| 432 | 
            -
                       | 
| 433 | 
            -
             | 
| 434 | 
            -
             | 
| 435 | 
            -
                       | 
| 436 | 
            -
             | 
| 437 | 
            -
             | 
| 438 | 
            -
             | 
| 439 | 
            -
                       | 
| 440 | 
            -
             | 
| 441 | 
            -
             | 
| 442 | 
            -
             | 
| 443 | 
            -
                      ]
         | 
| 444 | 
            -
                    end
         | 
| 421 | 
            +
                def headers(string)
         | 
| 422 | 
            +
                  hs = []
         | 
| 423 | 
            +
                  input = string.remove_meta
         | 
| 424 | 
            +
                  doc_headers = input.scan(/^((?!#!)(\#{1,6})\s*([^#]+?)(?: #+)?\s*|(\S.+)\n([=-]+))$/i)
         | 
| 425 | 
            +
             | 
| 426 | 
            +
                  doc_headers.each do |h|
         | 
| 427 | 
            +
                    hlevel = 6
         | 
| 428 | 
            +
                    title = nil
         | 
| 429 | 
            +
                    if h[4] =~ /=+/
         | 
| 430 | 
            +
                      hlevel = 1
         | 
| 431 | 
            +
                      title = h[3]
         | 
| 432 | 
            +
                    elsif h[4] =~ /-+/
         | 
| 433 | 
            +
                      hlevel = 2
         | 
| 434 | 
            +
                      title = h[3]
         | 
| 435 | 
            +
                    else
         | 
| 436 | 
            +
                      hlevel = h[1].length
         | 
| 437 | 
            +
                      title = h[2]
         | 
| 438 | 
            +
                    end
         | 
| 439 | 
            +
                    hs << [
         | 
| 440 | 
            +
                      '#' * hlevel,
         | 
| 441 | 
            +
                      title,
         | 
| 442 | 
            +
                      h[0]
         | 
| 443 | 
            +
                    ]
         | 
| 445 444 | 
             
                  end
         | 
| 446 445 |  | 
| 447 | 
            -
                   | 
| 446 | 
            +
                  hs
         | 
| 448 447 | 
             
                end
         | 
| 449 448 |  | 
| 450 449 | 
             
                def list_headers(input)
         | 
| @@ -455,7 +454,6 @@ module CLIMarkdown | |
| 455 454 | 
             
                    new_level.positive? ? '#' * new_level : ''
         | 
| 456 455 | 
             
                  end
         | 
| 457 456 |  | 
| 458 | 
            -
                  @headers = get_headers(input)
         | 
| 459 457 | 
             
                  last_level = 0
         | 
| 460 458 | 
             
                  headers_out = []
         | 
| 461 459 | 
             
                  len = (@headers.count + 1).to_s.length
         | 
| @@ -479,16 +477,16 @@ module CLIMarkdown | |
| 479 477 | 
             
                             else
         | 
| 480 478 | 
             
                               '  '
         | 
| 481 479 | 
             
                             end
         | 
| 482 | 
            -
                    headers_out.push format("%<d>#{len}d: %<s>s",
         | 
| 480 | 
            +
                    headers_out.push format("%<c>s%<d>#{len}d: %<s>s",
         | 
| 481 | 
            +
                                            c: c(%i[magenta]),
         | 
| 483 482 | 
             
                                            d: idx + 1,
         | 
| 484 483 | 
             
                                            s: "#{c(%i[x black])}#{'.' * level}#{c(%i[x yellow])}#{subdoc}#{title.strip}#{xc}")
         | 
| 485 484 | 
             
                  end
         | 
| 486 485 |  | 
| 487 | 
            -
                  headers_out.join("\n")
         | 
| 486 | 
            +
                  headers_out.join("\n#{xc}")
         | 
| 488 487 | 
             
                end
         | 
| 489 488 |  | 
| 490 489 | 
             
                def highest_header(input)
         | 
| 491 | 
            -
                  @headers = get_headers(input)
         | 
| 492 490 | 
             
                  top = 6
         | 
| 493 491 | 
             
                  @headers.each { |h| top = h[0].length if h[0].length < top }
         | 
| 494 492 | 
             
                  top
         | 
| @@ -564,7 +562,7 @@ module CLIMarkdown | |
| 564 562 | 
             
                    IO.select [input]
         | 
| 565 563 |  | 
| 566 564 | 
             
                    pager = which_pager
         | 
| 567 | 
            -
                    MDLess.log.info("Using  | 
| 565 | 
            +
                    MDLess.log.info("Using `#{pager.join(' ')}` as pager")
         | 
| 568 566 | 
             
                    begin
         | 
| 569 567 | 
             
                      exec(pager.join(' '))
         | 
| 570 568 | 
             
                    rescue SystemCallError => e
         | 
| @@ -614,7 +612,7 @@ module CLIMarkdown | |
| 614 612 |  | 
| 615 613 | 
             
                def which_pager
         | 
| 616 614 | 
             
                  # pagers = [ENV['PAGER'], ENV['GIT_PAGER']]
         | 
| 617 | 
            -
                  pagers = [ENV['PAGER']]
         | 
| 615 | 
            +
                  pagers = ENV['PAGER'] ? [ENV['PAGER']] : []
         | 
| 618 616 |  | 
| 619 617 | 
             
                  # if exec_available('git')
         | 
| 620 618 | 
             
                  #   git_pager = `git config --get-all core.pager || true`.split.first
         | 
| @@ -623,29 +621,28 @@ module CLIMarkdown | |
| 623 621 |  | 
| 624 622 | 
             
                  pagers.concat(['less', 'more', 'cat', 'pager'])
         | 
| 625 623 |  | 
| 624 | 
            +
                  pagers.delete_if { |pg| !TTY::Which.exist?(pg) }
         | 
| 625 | 
            +
             | 
| 626 626 | 
             
                  pagers.select! do |f|
         | 
| 627 | 
            -
                     | 
| 628 | 
            -
             | 
| 629 | 
            -
             | 
| 630 | 
            -
             | 
| 631 | 
            -
             | 
| 632 | 
            -
                        false
         | 
| 633 | 
            -
                      else
         | 
| 634 | 
            -
                        system "which #{f}", out: File::NULL, err: File::NULL
         | 
| 635 | 
            -
                      end
         | 
| 636 | 
            -
                    else
         | 
| 627 | 
            +
                    pg = f.split(/[ ]/)[0]
         | 
| 628 | 
            +
                    return false unless pg
         | 
| 629 | 
            +
             | 
| 630 | 
            +
                    if pg == 'most'
         | 
| 631 | 
            +
                      MDLess.log.warn('most not allowed as pager')
         | 
| 637 632 | 
             
                      false
         | 
| 633 | 
            +
                    else
         | 
| 634 | 
            +
                      TTY::Which.which(pg)
         | 
| 638 635 | 
             
                    end
         | 
| 639 636 | 
             
                  end
         | 
| 640 637 |  | 
| 641 638 | 
             
                  pg = pagers.first
         | 
| 642 639 | 
             
                  args = case pg
         | 
| 643 640 | 
             
                         # when 'delta'
         | 
| 644 | 
            -
                         #   ' --pager="less - | 
| 641 | 
            +
                         #   ' --pager="less -FXr"'
         | 
| 645 642 | 
             
                         when 'less'
         | 
| 646 | 
            -
                           ' | 
| 643 | 
            +
                           '-FXr'
         | 
| 647 644 | 
             
                         # when 'bat'
         | 
| 648 | 
            -
                         #   ' -p --pager="less - | 
| 645 | 
            +
                         #   ' -p --pager="less -FXr"'
         | 
| 649 646 | 
             
                         else
         | 
| 650 647 | 
             
                           ''
         | 
| 651 648 | 
             
                         end
         | 
| @@ -654,10 +651,10 @@ module CLIMarkdown | |
| 654 651 | 
             
                end
         | 
| 655 652 |  | 
| 656 653 | 
             
                def exec_available(cli)
         | 
| 657 | 
            -
                  if  | 
| 658 | 
            -
                     | 
| 654 | 
            +
                  if TTY::Which.exist?(cli)
         | 
| 655 | 
            +
                    TTY::Which.which(cli)
         | 
| 659 656 | 
             
                  else
         | 
| 660 | 
            -
                     | 
| 657 | 
            +
                    false
         | 
| 661 658 | 
             
                  end
         | 
| 662 659 | 
             
                end
         | 
| 663 660 | 
             
              end
         | 
    
        data/lib/mdless/version.rb
    CHANGED