Sha256: 2a24e9a6e35ff0eee98a5c39bc6816f8c92995577dccc8f6c52e69cd00931b3b

Contents?: true

Size: 1.36 KB

Versions: 49

Compression:

Stored size: 1.36 KB

Contents

require 'tilt/template'

module Tilt

  # CSV Template implementation. See:
  # http://ruby-doc.org/stdlib/libdoc/csv/rdoc/CSV.html
  #
  # == Example
  #
  #    # Example of csv template
  #    tpl = <<-EOS
  #      # header
  #      csv << ['NAME', 'ID']
  #
  #      # data rows
  #      @people.each do |person|
  #        csv << [person[:name], person[:id]]
  #      end
  #    EOS
  #
  #    @people = [
  #      {:name => "Joshua Peek", :id => 1},
  #      {:name => "Ryan Tomayko", :id => 2},
  #      {:name => "Simone Carletti", :id => 3}
  #    ]
  #
  #    template = Tilt::CSVTemplate.new { tpl }
  #    template.render(self)
  #
  class CSVTemplate < Template
    self.default_mime_type = 'text/csv'

    def self.engine_initialized?
      engine
    end

    def self.engine
      if RUBY_VERSION >= '1.9.0' && defined? ::CSV
        ::CSV
      elsif defined? ::FasterCSV
        ::FasterCSV 
      end
    end

    def initialize_engine
      if RUBY_VERSION >= '1.9.0'
        require_template_library 'csv'
      else
        require_template_library 'fastercsv'
      end
    end

    def prepare
      @code =<<-RUBY
        #{self.class.engine}.generate do |csv|
          #{data}
        end
      RUBY
    end

    def precompiled_template(locals)
      @code
    end

    def precompiled(locals)
      source, offset = super
      [source, offset + 1]
    end

  end
end

Version data entries

49 entries across 42 versions & 11 rubygems

Version Path
arcabouco-0.2.13 vendor/bundle/gems/tilt-1.4.1/lib/tilt/csv.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/tilt-1.4.1/lib/tilt/csv.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/tilt-1.4.1/lib/tilt/csv.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/tilt-1.4.1/lib/tilt/csv.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-1.0.5 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-1.0.4 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-1.0.3 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-1.0.3.pre lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-1.0.2 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-1.0.1 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-1.0.0 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-0.5.5 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-0.5.5.pre lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-0.5.4 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-0.5.3 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-0.5.2 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
scout_realtime-0.5.1 lib/vendor/tilt-1.4.1/lib/tilt/csv.rb
mango-0.8.0 vendor/bundler/ruby/2.1.0/gems/tilt-1.4.1/lib/tilt/csv.rb
mango-0.7.1 vendor/bundler/ruby/2.0.0/gems/tilt-1.4.1/lib/tilt/csv.rb