Class Tilt::CSVTemplate
In: lib/tilt/csv.rb
Parent: Template

CSV Template implementation. See: 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)

Methods

Public Class methods

[Source]

    # File lib/tilt/csv.rb, line 37
37:     def self.engine
38:       if RUBY_VERSION >= '1.9.0' && defined? ::CSV
39:         ::CSV
40:       elsif defined? ::FasterCSV
41:         ::FasterCSV 
42:       end
43:     end

[Source]

    # File lib/tilt/csv.rb, line 33
33:     def self.engine_initialized?
34:       engine
35:     end

Public Instance methods

[Source]

    # File lib/tilt/csv.rb, line 45
45:     def initialize_engine
46:       if RUBY_VERSION >= '1.9.0'
47:         require_template_library 'csv'
48:       else
49:         require_template_library 'fastercsv'
50:       end
51:     end

[Source]

    # File lib/tilt/csv.rb, line 66
66:     def precompiled(locals)
67:       source, offset = super
68:       [source, offset + 1]
69:     end

[Source]

    # File lib/tilt/csv.rb, line 62
62:     def precompiled_template(locals)
63:       @code
64:     end

[Source]

    # File lib/tilt/csv.rb, line 53
53:     def prepare
54:       @code ="\#{self.class.engine}.generate do |csv|\n\#{data}\nend\n"
55:     end

[Validate]