class TableCreator::Col
Attributes
anchor[RW]
colspan[RW]
data[RW]
data_type[RW]
link_to[RW]
options[RW]
row[RW]
type[RW]
Public Class Methods
new(data, row, type = nil)
click to toggle source
# File lib/table_creator/col.rb, line 7 def initialize(data, row, type = nil) @row = row @options = {} if data.is_a? Hash @colspan = data[:colspan] @data = data[:data] @link_to = data[:link_to] @anchor = data[:anchor] @options = data.except(:colspan, :data, :link_to, :anchor) else @data = data end @data_type = case @data.class.to_s.to_sym when :Integer :number when :String :text else nil end @type = type || :data self end
Public Instance Methods
quote(data)
click to toggle source
# File lib/table_creator/col.rb, line 44 def quote(data) formatted_data = format_csv(data) quoted = formatted_data.to_s.gsub('"', '\"') if formatted_data.to_s.include?(',') '"'+quoted+'"' else quoted end end
to_csv()
click to toggle source
# File lib/table_creator/col.rb, line 32 def to_csv if @colspan && @colspan > 1 cols = [quote(@data)] (@colspan-1).times do cols << '' end cols else quote(@data) end end
to_html()
click to toggle source
# File lib/table_creator/col.rb, line 54 def to_html formatter = TableCreator.formatters(:html)[@data.class] content = if formatter result = formatter.is_a?(Symbol) ? @data.send(formatter) : formatter.call(@data) if result.is_a?(Hash) link_to = result[:link_to] anchor = result[:anchor] @options[:class] ||= @data.class.name.underscore result.fetch(:data) else @options[:class] ||= @data.class.name.underscore result end else @data end # Links are passed in manually too link_to ||= @link_to col_tag = type == :header ? :th : :td content = content_tag :a, content, :href => link_to if link_to content = content_tag :a, content, :name => anchor if anchor tag_class = [options[:class].presence, data_type.presence].compact.join(' ') attributes = options.except(:type).merge(:class => tag_class, :colspan => colspan) content_tag col_tag, content.to_s.gsub(/\n/, tag(:br)).html_safe, attributes end
Private Instance Methods
format_csv(data)
click to toggle source
# File lib/table_creator/col.rb, line 85 def format_csv(data) formatter = TableCreator.formatters(:csv)[data.class] return data unless formatter result = formatter.is_a?(Symbol) ? @data.send(formatter) : formatter.call(@data) if result.is_a?(Hash) result.fetch(:data) else result end end