class Sqlite::HtmlRenderer

Public Instance Methods

render_error(result, solution, error) click to toggle source
# File lib/html_renderer.rb, line 15
def render_error(result, solution, error)
  @error = error
  @table_name = result[:table_name]
  @result = parse_dataset(result[:dataset].header, result[:dataset].rows)
  @solution = parse_dataset(solution[:dataset].header, solution[:dataset].rows)
  @expected_message = expected_message result
  @obtained_message = I18n.t 'obtained'
  template_file_error.result binding
end
render_success(result, message) click to toggle source
# File lib/html_renderer.rb, line 6
def render_success(result, message)
  @message = message
  @table_name = result[:table_name]
  @header = result[:dataset].header
  @rows = result[:dataset].rows
  @extra_message = extra_message result
  template_file_success.result binding
end

Protected Instance Methods

diff_class_of(value) click to toggle source
# File lib/html_renderer.rb, line 57
def diff_class_of(value)
  case value
    when '+'
      'required'
    when '-'
      'errored'
    else
      'nothing'
  end
end
expected_message(result) click to toggle source
# File lib/html_renderer.rb, line 72
def expected_message(result)
  if result[:show_query]
    I18n.t('message.failure.show_query', query: result[:query])
  else
    I18n.t 'expected'
  end
end
extra_message(result) click to toggle source
# File lib/html_renderer.rb, line 68
def extra_message(result)
  result[:show_query] ? I18n.t('message.success.show_query', query: result[:query]) : ''
end
first_column(row) click to toggle source
# File lib/html_renderer.rb, line 53
def first_column(row)
  row.first.present? && row.first =~ /^[+-]$/ ? row.shift : '✓'
end
parse_dataset(header, rows) click to toggle source
# File lib/html_renderer.rb, line 27
def parse_dataset(header, rows)
  header_sign = first_column(header)
  rows = rows.map do |row|
    {
        sign: first_column(row),
        row: row
    }
  end

  {
      header: {
          sign: header_sign,
          class: diff_class_of(header_sign),
          fields: header
      },
      rows: rows.map do |row|
        {
            sign: row[:sign],
            class: diff_class_of(row[:sign]),
            fields: row[:row]
        }
      end
  }

end
template_file_error() click to toggle source
# File lib/html_renderer.rb, line 84
def template_file_error
  ERB.new File.read("#{__dir__}/view/rows_error.html.erb")
end
template_file_success() click to toggle source
# File lib/html_renderer.rb, line 80
def template_file_success
  ERB.new File.read("#{__dir__}/view/rows_success.html.erb")
end