Sha256: d12c82c97738f0050b44fe1b23838bbdc9a10301b3a262b6873739c290707f1d

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

require 'cgi'
module DocParser
  # The XLSXOutput class generates an HTML file containing a table
  # @see Output
  class HTMLOutput < Output
    # @!visibility private
    HTMLHEADER = <<~EOS
      <!DOCTYPE html>
      <html>
      <head>
      <title>HTML output "#FILENAME#"</title>
      <meta charset="utf-8">
      <style type="text/css">
      body {
        font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;
        font-size:12px;
      }
      table {
        border:1px solid #69c;
        border-collapse:collapse;
        font-size:12px;
        text-align:left;
        width:480px;
      }
      th {
        border-bottom:1px dashed #69c;
        color:#039;
        font-size:14px;
        font-weight:normal;
        padding:12px 17px;
      }
      td {
        color:#669;
        padding:7px 17px;
        white-space: pre;
      }
      tbody tr:hover td {
        background:#d0dafd;
        color:#339;
      }
      tbody tr:nth-child(even) {
        background:#e0eaff;
      }
      </style>
      </head>
      <body>
      <table>
    EOS
    # @!visibility private
    HTMLFOOTER = <<~EOS
      </tbody>
      </table>
      <p>#COUNT# rows</p>
      </body>
      </html>
    EOS
    def open_file
      @file << HTMLHEADER.gsub('#FILENAME#', @filename)
    end

    def header
      return if @header.nil? || @header.empty?

      @file << '<thead><tr>'
      @file << @header.map { |f| '<th>' + f + '</th>' }.join
      @file << "</tr></thead>\n<tbody>\n"
      @tbody = true
    end

    def write_row(row)
      unless @tbody
        @file << "<tbody>\n"
        @tbody = true
      end
      @file << '<tr>'
      @file << row.map { |f| '<td>' + CGI.escapeHTML(f.to_s) + '</td>' }.join
      @file << "</tr>\n"
    end

    def footer
      @file << HTMLFOOTER.gsub('#COUNT#', @rowcount.to_s)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
docparser-0.3.0 lib/docparser/output/html_output.rb