Skip to content

Instantly share code, notes, and snippets.

@brandonweiss
Last active December 1, 2023 04:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brandonweiss/5a8b8dcb3281da100010aa84a57f3085 to your computer and use it in GitHub Desktop.
Save brandonweiss/5a8b8dcb3281da100010aa84a57f3085 to your computer and use it in GitHub Desktop.
CeeEssVee - quickly output a CSV
require "csv"
class CeeEssVee
def initialize(objects)
@objects = objects
@columns = {}
end
def method_missing(method_name, *args, &block)
return if method_name == :to_ary
@columns[method_name.to_s] = block || nil
end
def to_s
CSV.generate do |csv|
csv << @columns.keys
@objects.each do |object|
csv << @columns.map do |(column_name, transform)|
transform.nil? ? object.send(column_name) : transform[object]
end
end
end
end
end
organizations = Organization.all

csv = CeeEssVee.new(organizations)

csv.name do |organization|
  url = "https://api.supernormal.com/internal/org/#{organization.hashid}"
  "<a href='#{url}'>#{organization.name}</a>"
end
csv.created_at
csv.current_period_end
csv.plan_name

puts csv

Then copy and paste the output into a Markdown table converter like https://www.convertsimple.com/convert-csv-to-markdown-table/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment