Sha256: 140c37d0b0a89ffbf9eb7bc09bdd7c7c64cacd26133d881ad8af6876247eb3cb

Contents?: true

Size: 1.12 KB

Versions: 7

Compression:

Stored size: 1.12 KB

Contents

module DiningTable
  
  module Presenters

    class SpreadsheetPresenter < Presenter
      
      def render_row( object )
        values = columns.map do |column|
          value = column.value( object )
          value = clean( value ) if !!options[:clean]
          value
        end
        add_row( values )
      end

      def render_header
        add_row( header_strings )
      end
      
      def render_footer
        footers = footer_strings
        if footers.map { |s| blank?(s) }.uniq != [ true ]
          add_row( footers )
        end
      end
      
      private
      
        def header_strings
          columns.map(&:header)
        end
        
        def footer_strings
          columns.map(&:footer)
        end

        def add_row( row )
          raise NotImplementedError
        end

        def clean(string)
          replacements = [['&mdash;', '--'], ['&ndash;', '-'], ['&nbsp;', ' '] ]
          base = view_context.strip_tags(string)
          replacements.each do |pattern, replacement|
            base.gsub!(pattern, replacement)
          end
          base
        end
        
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dining-table-1.1.3 lib/dining-table/presenters/spreadsheet_presenter.rb
dining-table-1.1.2 lib/dining-table/presenters/spreadsheet_presenter.rb
dining-table-1.1.1 lib/dining-table/presenters/spreadsheet_presenter.rb
dining-table-1.1.0 lib/dining-table/presenters/spreadsheet_presenter.rb
dining-table-1.0.0 lib/dining-table/presenters/spreadsheet_presenter.rb
dining-table-0.2.1 lib/dining-table/presenters/spreadsheet_presenter.rb
dining-table-0.2.0 lib/dining-table/presenters/spreadsheet_presenter.rb