comma-heaven 0.5.5 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -38,7 +38,7 @@ module CommaHeaven
38
38
 
39
39
  def sql_as
40
40
  return as % index if as
41
- return [table_alias(:singularize), attribute].compact.join('_')
41
+ return [table_alias(:singularize).gsub(/^_+/, ''), attribute].compact.join('_')
42
42
  end
43
43
 
44
44
  protected
@@ -32,14 +32,21 @@ module CommaHeaven
32
32
  end
33
33
 
34
34
  def table_alias(method = :pluralize)
35
- case method
36
- when :pluralize
37
- return [((parent && parent.parent) ? parent.table_alias(method) : nil), table, index].compact.join('_')
38
- when :singularize
39
- return [((parent && parent.parent) ? parent.table_alias(method) : nil), model.name.underscore, index].compact.join('_')
35
+ return prefix + case method
36
+ when :pluralize then
37
+ [((parent && parent.parent) ? parent.table_alias(method) : nil), table, index].compact.join('_')
38
+ when :singularize then
39
+ [((parent && parent.parent) ? parent.table_alias(method) : nil), model.name.underscore, index].compact.join('_')
40
40
  end
41
41
  end
42
42
 
43
+ def prefix
44
+ return case self
45
+ when HasManyColumns, BelongsToColumns, HasOneColumns then "_"
46
+ else ''
47
+ end
48
+ end
49
+
43
50
  protected
44
51
  def limit
45
52
  (options[:limit] || 1).to_i
@@ -8,14 +8,14 @@ describe "BelongsToColumns" do
8
8
 
9
9
  it "should build correct SQL select clause" do
10
10
  column = CommaHeaven::Sqler::BelongsToColumns.new(@association, {:age => {4 => {:include => '1', :as => ''}}}, 1, @leaf)
11
- column.select.should == "trees.age AS \"tree_age\""
11
+ column.select.should == "_trees.age AS \"tree_age\""
12
12
  end
13
13
 
14
14
  it "should build correct SQL joins clause" do
15
15
  column = CommaHeaven::Sqler::BelongsToColumns.new(@association, {:age => {4 => {:include => '1', :as => ''}}}, 1, @leaf)
16
16
  column.joins.should == <<-EOS.gsub(/\n/, ' ').squeeze(' ').strip
17
- LEFT JOIN "trees" AS trees
18
- ON trees.id = leafs.tree_id
17
+ LEFT JOIN "trees" AS _trees
18
+ ON _trees.id = leafs.tree_id
19
19
  EOS
20
20
  end
21
21
  end
@@ -146,23 +146,23 @@ describe "Columns" do
146
146
 
147
147
  it "should build correct SQL select and joins clauses exporting has many association" do
148
148
  columns = CommaHeaven::Sqler::Columns.new(Tree, {:name => {0 => {:include => '1', :as => ''}}, :age => {1 => {:include => '1', :as => ''}}, :leafs => {2 => {:export => {:position => {4 => {:include => '1', :as => ''}}}, :limit => '3'}}})
149
- columns.select.should == 'trees.name AS "tree_name", trees.age AS "tree_age", leafs_0.position AS "leaf_0_position", leafs_1.position AS "leaf_1_position", leafs_2.position AS "leaf_2_position"'
149
+ columns.select.should == 'trees.name AS "tree_name", trees.age AS "tree_age", _leafs_0.position AS "leaf_0_position", _leafs_1.position AS "leaf_1_position", _leafs_2.position AS "leaf_2_position"'
150
150
  columns.joins.should =~ /LEFT JOIN/
151
151
  end
152
152
 
153
153
  it "should build correct SQL select and joins clauses exporting belongs to association" do
154
154
  columns = CommaHeaven::Sqler::Columns.new(Tree, {:name => {0 => {:include => '1', :as => ''}}, :age => {1 => {:include => '1', :as => ''}}, :gardener => {2 => {:export => {:surname => {4 => {:include => '1', :as => ''}}}}}})
155
- columns.select.should == 'trees.name AS "tree_name", trees.age AS "tree_age", gardeners.surname AS "gardener_surname"'
156
- columns.joins.should =~ /\sgardeners\s/
155
+ columns.select.should == 'trees.name AS "tree_name", trees.age AS "tree_age", _gardeners.surname AS "gardener_surname"'
156
+ columns.joins.should =~ /\s_gardeners\s/
157
157
  columns.joins.should =~ /LEFT JOIN/
158
158
  end
159
159
 
160
160
  it "should build corrent SQL select and joins clauses for deeper associations" do
161
161
  columns = CommaHeaven::Sqler::Columns.new(Gardener, {:name => {0 => {:include => '1', :as => ''}}, :trees => {1 => {:export => {:name => {0 => {:include => '1', :as => ''}}, :age => {1 => {:include => '1', :as => ''}}, :gardener => {2 => {:export => {:surname => {4 => {:include => '1', :as => ''}}}}}}, :limit => 3}}})
162
- columns.select.should == 'gardeners.name AS "gardener_name", trees_0.name AS "tree_0_name", trees_0.age AS "tree_0_age", trees_0_gardeners.surname AS "tree_0_gardener_surname", trees_1.name AS "tree_1_name", trees_1.age AS "tree_1_age", trees_1_gardeners.surname AS "tree_1_gardener_surname", trees_2.name AS "tree_2_name", trees_2.age AS "tree_2_age", trees_2_gardeners.surname AS "tree_2_gardener_surname"'
162
+ columns.select.should == 'gardeners.name AS "gardener_name", _trees_0.name AS "tree_0_name", _trees_0.age AS "tree_0_age", __trees_0_gardeners.surname AS "tree_0_gardener_surname", _trees_1.name AS "tree_1_name", _trees_1.age AS "tree_1_age", __trees_1_gardeners.surname AS "tree_1_gardener_surname", _trees_2.name AS "tree_2_name", _trees_2.age AS "tree_2_age", __trees_2_gardeners.surname AS "tree_2_gardener_surname"'
163
163
  columns.joins.should =~ /LEFT JOIN/
164
- columns.joins.should =~ /trees/
165
- columns.joins.should =~ /gardeners/
164
+ columns.joins.should =~ /_trees/
165
+ columns.joins.should =~ /_gardeners/
166
166
  end
167
167
 
168
168
  it "should build corrent SQL select and joins clauses for deeper and deeper associations" do
@@ -187,7 +187,7 @@ describe "Columns" do
187
187
  columns.joins.should =~ /trees/
188
188
  columns.joins.should =~ /gardeners/
189
189
  columns.joins.should =~ /leafs/
190
- columns.select.should == 'gardeners.name AS "gardener_name", trees_0.name AS "tree_0_name", trees_0.age AS "tree_0_age", trees_0_gardeners.surname AS "tree_0_gardener_surname", trees_0_leafs_0.position AS "tree_0_leaf_0_position", trees_0_leafs_1.position AS "tree_0_leaf_1_position", trees_1.name AS "tree_1_name", trees_1.age AS "tree_1_age", trees_1_gardeners.surname AS "tree_1_gardener_surname", trees_1_leafs_0.position AS "tree_1_leaf_0_position", trees_1_leafs_1.position AS "tree_1_leaf_1_position", trees_2.name AS "tree_2_name", trees_2.age AS "tree_2_age", trees_2_gardeners.surname AS "tree_2_gardener_surname", trees_2_leafs_0.position AS "tree_2_leaf_0_position", trees_2_leafs_1.position AS "tree_2_leaf_1_position"'
190
+ columns.select.should == 'gardeners.name AS "gardener_name", _trees_0.name AS "tree_0_name", _trees_0.age AS "tree_0_age", __trees_0_gardeners.surname AS "tree_0_gardener_surname", __trees_0_leafs_0.position AS "tree_0_leaf_0_position", __trees_0_leafs_1.position AS "tree_0_leaf_1_position", _trees_1.name AS "tree_1_name", _trees_1.age AS "tree_1_age", __trees_1_gardeners.surname AS "tree_1_gardener_surname", __trees_1_leafs_0.position AS "tree_1_leaf_0_position", __trees_1_leafs_1.position AS "tree_1_leaf_1_position", _trees_2.name AS "tree_2_name", _trees_2.age AS "tree_2_age", __trees_2_gardeners.surname AS "tree_2_gardener_surname", __trees_2_leafs_0.position AS "tree_2_leaf_0_position", __trees_2_leafs_1.position AS "tree_2_leaf_1_position"'
191
191
 
192
192
  Gardener.scoped(:joins => columns.joins).count.should == 2
193
193
  Gardener.scoped(:joins => columns.joins, :select => columns.select).first.attributes.to_a.length.should == 16
@@ -8,20 +8,20 @@ describe "HasManyColumns" do
8
8
 
9
9
  it "should build correct SQL select clause" do
10
10
  column = CommaHeaven::Sqler::HasManyColumns.new(@association, {:position => {4 => {:include => '1', :as => ''}}}, 1, @tree, 1, :limit => '3')
11
- column.select.should == 'leafs_1.position AS "leaf_1_position"'
11
+ column.select.should == '_leafs_1.position AS "leaf_1_position"'
12
12
  end
13
13
 
14
14
  it "should build correct SQL select clause for multiple fields" do
15
15
  column = CommaHeaven::Sqler::HasManyColumns.new(@association, {:position => {4 => {:include => '1', :as => ''}}, :size => {5 => {:include => '1', :as => ''}}}, 1, @tree, 1, :limit => '3')
16
- column.select.should == 'leafs_1.position AS "leaf_1_position", leafs_1.size AS "leaf_1_size"'
16
+ column.select.should == '_leafs_1.position AS "leaf_1_position", _leafs_1.size AS "leaf_1_size"'
17
17
  end
18
18
 
19
19
  it "should build correct SQL joins clause" do
20
20
  column = CommaHeaven::Sqler::HasManyColumns.new(@association, {:position => {4 => {:include => '1', :as => ''}}}, 1, @tree, 1, :limit => '3')
21
21
  column.joins.should == <<-EOS.gsub(/\n/, ' ').squeeze(' ').strip
22
- LEFT JOIN "leafs" AS leafs_1
23
- ON trees.id = leafs_1.tree_id
24
- AND leafs_1.id = (SELECT id FROM "leafs" WHERE tree_id = trees.id LIMIT 1, 1)
22
+ LEFT JOIN "leafs" AS _leafs_1
23
+ ON trees.id = _leafs_1.tree_id
24
+ AND _leafs_1.id = (SELECT id FROM "leafs" WHERE tree_id = trees.id LIMIT 1, 1)
25
25
  EOS
26
26
  end
27
27
  end
@@ -8,14 +8,14 @@ describe "HasOneColumns" do
8
8
 
9
9
  it "should build correct SQL select clause" do
10
10
  column = CommaHeaven::Sqler::HasOneColumns.new(@association, {:name => {4 => {:include => '1', :as => ''}}}, 1, @gardener)
11
- column.select.should == "gardener_clones.name AS \"gardener_clone_name\""
11
+ column.select.should == "_gardener_clones.name AS \"gardener_clone_name\""
12
12
  end
13
13
 
14
14
  it "should build correct SQL joins clause" do
15
15
  column = CommaHeaven::Sqler::HasOneColumns.new(@association, {:name => {4 => {:include => '1', :as => ''}}}, 1, @gardener)
16
16
  column.joins.should == <<-EOS.gsub(/\n/, ' ').squeeze(' ').strip
17
- LEFT JOIN "gardener_clones" AS gardener_clones
18
- ON gardeners.id = gardener_clones.gardener_id
17
+ LEFT JOIN "gardener_clones" AS _gardener_clones
18
+ ON gardeners.id = _gardener_clones.gardener_id
19
19
  EOS
20
20
  end
21
21
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comma-heaven
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 5
9
- - 5
10
- version: 0.5.5
4
+ prerelease:
5
+ version: 0.6.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - Silvano Stralla
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-02-08 00:00:00 +01:00
13
+ date: 2011-05-16 00:00:00 +02:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,11 +21,6 @@ dependencies:
26
21
  requirements:
27
22
  - - ">="
28
23
  - !ruby/object:Gem::Version
29
- hash: 13
30
- segments:
31
- - 1
32
- - 2
33
- - 9
34
24
  version: 1.2.9
35
25
  type: :development
36
26
  version_requirements: *id001
@@ -42,9 +32,6 @@ dependencies:
42
32
  requirements:
43
33
  - - ">="
44
34
  - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
35
  version: "0"
49
36
  type: :runtime
50
37
  version_requirements: *id002
@@ -56,26 +43,9 @@ dependencies:
56
43
  requirements:
57
44
  - - ">="
58
45
  - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
46
  version: "0"
63
47
  type: :runtime
64
48
  version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: fastercsv
67
- prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
77
- type: :runtime
78
- version_requirements: *id004
79
49
  description: CommaHeaven permits easy exports of Rails models to CSV
80
50
  email: silvano.stralla@sistrall.it
81
51
  executables: []
@@ -121,32 +91,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
91
  requirements:
122
92
  - - ">="
123
93
  - !ruby/object:Gem::Version
124
- hash: 3
125
- segments:
126
- - 0
127
94
  version: "0"
128
95
  required_rubygems_version: !ruby/object:Gem::Requirement
129
96
  none: false
130
97
  requirements:
131
98
  - - ">="
132
99
  - !ruby/object:Gem::Version
133
- hash: 3
134
- segments:
135
- - 0
136
100
  version: "0"
137
101
  requirements: []
138
102
 
139
103
  rubyforge_project:
140
- rubygems_version: 1.3.7
104
+ rubygems_version: 1.6.1
141
105
  signing_key:
142
106
  specification_version: 3
143
107
  summary: CSV exporter for Rails
144
- test_files:
145
- - spec/active_record/to_comma_heaven_spec.rb
146
- - spec/export_spec.rb
147
- - spec/spec_helper.rb
148
- - spec/sqler/belongs_to_association_spec.rb
149
- - spec/sqler/column_spec.rb
150
- - spec/sqler/columns_spec.rb
151
- - spec/sqler/has_many_columns_spec.rb
152
- - spec/sqler/has_one_association_spec.rb
108
+ test_files: []
109
+