comma-heaven 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,8 +21,14 @@ module CommaHeaven
21
21
  headers = columns.sql_as
22
22
 
23
23
  find(:all, :limit => options[:limit], :joins => columns.joins, :select => columns.select).each do |resource|
24
- fields = columns.sql_as.inject([]) do |a, f|
25
- a << options[:converter].call(resource.send(f))
24
+ fields = columns.sql_as.inject([]) do |acc, field|
25
+ value = resource.send(field)
26
+
27
+ if options[:format]
28
+ value = value.to_time.strftime(options[:format][:datetime]) if value =~ %r{(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)} && options[:format][:datetime]
29
+ end
30
+
31
+ acc << options[:converter].call(value)
26
32
  end
27
33
 
28
34
  table << FasterCSV::Row.new(headers, fields)
@@ -2,8 +2,8 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe "CommaHeaven" do
4
4
  before(:each) do
5
- alice = Gardener.create(:name => 'Alice')
6
- bob = Gardener.create(:name => 'Bob')
5
+ alice = Gardener.create(:name => 'Alice', :birthdate => 6.years.ago)
6
+ bob = Gardener.create(:name => 'Bob', :birthdate => 8.years.ago)
7
7
 
8
8
  olmo = Tree.create(:name => 'Olmo', :age => 100, :gardener => alice)
9
9
  olmo.leafs.create(:position => 'top')
@@ -192,4 +192,13 @@ Ulivo,150
192
192
  Ulivo Grande,""
193
193
  EOS
194
194
  end
195
+
196
+ it "should allow custom formats on dates and times" do
197
+ Tree.to_comma_heaven(:format => {:datetime => '%d/%m/%Y %H:%M'}, :export => {:name => {0 => {}}, :gardener => {1 => {:export => {:name => {1 => {}}, :surname => {2 => {}}, :birthdate => {3 => {}}}}}}).to_csv.should == <<-EOS
198
+ tree_name,gardener_name,gardener_surname,gardener_birthdate
199
+ Olmo,Alice,,#{Gardener.find_by_name('Alice').birthdate.strftime('%d/%m/%Y %H:%M')}
200
+ Ulivo,Bob,,#{Gardener.find_by_name('Bob').birthdate.strftime('%d/%m/%Y %H:%M')}
201
+ EOS
202
+ end
203
+
195
204
  end
data/spec/spec_helper.rb CHANGED
@@ -27,6 +27,7 @@ ActiveRecord::Schema.define(:version => 1) do
27
27
  create_table :gardeners do |t|
28
28
  t.string :name
29
29
  t.string :surname
30
+ t.datetime :birthdate
30
31
  end
31
32
 
32
33
  create_table :gardener_clones do |t|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comma-heaven
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 1
10
+ version: 0.4.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Silvano Stralla
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-09 00:00:00 +01:00
18
+ date: 2011-01-14 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency