Commit 784f8c86 authored by Miguel Angel Reina Ortega's avatar Miguel Angel Reina Ortega
Browse files

Fix for checking correctness of generated tables + adding the markdown_pipeline file

parent ba12f69c
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -352,17 +352,17 @@ module Banzai
                raise "Misaligned delimiters in partial separator: #{line}" unless check_delimiter_alignment(line,
                  delimiter_positions)

                cells_content = line.strip.gsub(/^(\+|\|)/, '').split(/[\|\+]/)
                parts = line.strip.gsub(/^(\+|\|)/, '').split(/[\|\+]/)

                rows << Row.new(number_of_columns)
                aux_delimiter_index = 0
                auxiliar_cell_index = 0

                cells_content.each_with_index do |_, i|
                parts.each_with_index do |_, i|
                  next unless auxiliar_cell_index < number_of_columns

                  aux_delimiter_index += cells_content[i].length + 1
                  rows[-1][auxiliar_cell_index].position_start = aux_delimiter_index - cells_content[i].length
                  aux_delimiter_index += parts[i].length + 1
                  rows[-1][auxiliar_cell_index].position_start = aux_delimiter_index - parts[i].length
                  rows[-1][auxiliar_cell_index].position = aux_delimiter_index
                  rows[-1][auxiliar_cell_index].calculate_and_set_alignment(header_delimiter_positions,
                    default_alignments)
@@ -372,12 +372,12 @@ module Banzai
                  auxiliar_cell_index += 1
                end

                raise "More cells than columns found" unless cells_content.length <= number_of_columns
                raise "More cells than columns found" unless parts.length <= number_of_columns

                column_index = 0
                max_row_tracker = rows_tracker.max_value

                cells_content.each_with_index do |content, _i|
                parts.each_with_index do |content, _i|
                  if GRID_TABLE_BODY_SEPARATOR_LINE.match?(content) # Separator - split row
                    rows_tracker[column_index] = max_row_tracker + 1
                    rows[rows_tracker[column_index]][column_index].list_flag = false
@@ -418,6 +418,10 @@ module Banzai
                raise "Misaligned delimiters in row: #{line}" unless check_delimiter_alignment(
                  line, delimiter_positions)

                raise "Missing delimiters in previous separator line" if parts.length < cells_content.length 

                raise "Missing delimiters in row: #{line}: delimiters = #{cells_content.length}, expected delimiters = #{parts.length}" if parts.length > cells_content.length
                
                column_index = 0

                if cells_content.length < number_of_columns
@@ -486,17 +490,17 @@ module Banzai
          rows.each_with_index do |row, row_index|
            forward_rowspan = Array.new(row.length, 0) if forward_rowspan.empty?
            sum = 0

            row_forward_rowspan = forward_rowspan.dup
            row.each_with_index do |cell, cell_index|
              sum += cell.colspan

              if row_index > 0 && cell.colspan == 0
                if forward_rowspan[cell_index] > 0
              if cell.colspan == 0
                if row_forward_rowspan[cell_index] > 0
                  sum += 1 
                forward_rowspan[cell_index] -= 1
              end
            end
              if forward_rowspan[cell_index] == 0 && cell.rowspan > 1
              if row_forward_rowspan[cell_index] == 0 && cell.rowspan > 1
                forward_rowspan[cell_index] = cell.rowspan - 1
                colspan = 1
                while cell.colspan > colspan
+21 −0
Original line number Diff line number Diff line
# frozen_string_literal: true

module Banzai
    module Pipeline
      class PlainMarkdownPipeline < BasePipeline
        def self.filters
          FilterArray[
            Filter::IncludeFilter,
            Filter::GridTableFilter,
            Filter::MarkdownPreEscapeLegacyFilter,
            Filter::DollarMathPreLegacyFilter,
            Filter::BlockquoteFenceLegacyFilter,
            Filter::MarkdownFilter,
            Filter::ConvertTextToDocFilter,
            Filter::DollarMathPostLegacyFilter,
            Filter::MarkdownPostEscapeLegacyFilter
          ]
        end
      end
    end
  end
 No newline at end of file