Class: EventReporter::SaveTo
- Inherits:
-
Object
- Object
- EventReporter::SaveTo
- Defined in:
- lib/event_reporter/save_to.rb
Instance Method Summary collapse
-
#initialize(input, queue) ⇒ SaveTo
constructor
A new instance of SaveTo.
- #parse_user_input(input) ⇒ Object
- #write_csv(filename) ⇒ Object
- #write_json(filename) ⇒ Object
- #write_txt(filename) ⇒ Object
- #write_xml(filename) ⇒ Object
Constructor Details
#initialize(input, queue) ⇒ SaveTo
Returns a new instance of SaveTo.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/event_reporter/save_to.rb', line 7 def initialize(input,queue) @input = input @queue = queue @writer_contents = "" if @input == "event_attendees.csv" || @input == "save" puts "Saving to default_file.csv" @filename = 'default_file.csv' default_filename = File.join(File.dirname(__FILE__),"../../files/default_filename.csv") write_csv(default_filename) else default_filename = File.join(File.dirname(__FILE__),"../../files/", @input) parse_user_input(default_filename) end end |
Instance Method Details
#parse_user_input(input) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/event_reporter/save_to.rb', line 86 def parse_user_input(input) filetype = input[-4..-1] if filetype == ".csv" write_csv(input) elsif filetype == "json" write_json(input) elsif filetype == ".txt" write_txt(input) elsif filetype == ".xml" write_xml(input) else puts "does not compute" end end |
#write_csv(filename) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/event_reporter/save_to.rb', line 34 def write_csv(filename) CSV.open(filename,'w') do |file| file << %w"id regdate first_name last_name email_address homephone street city state zipcode" @queue.each do |person| file << [person[:id],person[:regdate],person[:first_name].capitalize,person[:last_name].capitalize,person[:email],person[:phone],person[:street],person[:city].capitalize,person[:state].upcase,person[:zipcode]] end end puts "Queue Saved to #{filename}" end |
#write_json(filename) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/event_reporter/save_to.rb', line 44 def write_json(filename) begin puts @queue.to_json File.open(filename,"w") do |file| file.puts @queue.to_json end puts "Queue Saved to #{filename}" rescue puts "Cannot write to JSON" end end |
#write_txt(filename) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/event_reporter/save_to.rb', line 24 def write_txt(filename) File.open(filename, "w") do |file| file.puts "id\tregdate\tfirst_name\tlast_name\temail_address\thomephone\tstreet\tcity\tstate\tzipcode" @queue.each do |person| file.puts "#{person[:id]}\t#{person[:regdate]}\t#{person[:first_name].capitalize}\t#{person[:last_name].capitalize}\t#{person[:email]}\t#{person[:phone]}\t#{person[:street]}\t#{person[:city].capitalize}\t#{person[:state].upcase}\t#{person[:zipcode]}" end end puts "Queue Saved to #{filename}" end |
#write_xml(filename) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/event_reporter/save_to.rb', line 56 def write_xml(filename) builder = Nokogiri::XML::Builder.new do |xml| xml.root { xml.event_attendees { @queue.each do |person| xml.attendee { xml.person_id person[:id] xml.registration_date person[:regdate] xml.first_name person[:first_name].capitalize xml.last_name person[:last_name].capitalize xml.email person[:email] xml.phone person[:phone] xml.address { xml.street person[:street] xml.city person[:city].capitalize xml.state person[:state].upcase xml.zipcode person[:zipcode] } } end } } end puts builder.to_xml File.open(filename,"w") do |file| file.puts builder.to_xml end puts "Queue Saved to #{filename}" end |