table-for 3.1.4 → 3.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +3 -0
- data/README.rdoc +17 -0
- data/VERSION +1 -1
- data/lib/table_for/helper_methods.rb +14 -1
- data/spec/integration/table_for_spec.rb +52 -0
- data/table-for.gemspec +2 -2
- metadata +3 -3
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -148,3 +148,20 @@ TODO
|
|
148
148
|
|
149
149
|
== Using "Before" and "After" hooks
|
150
150
|
TODO
|
151
|
+
|
152
|
+
== Internationalization
|
153
|
+
+table-for+ can do some dirty job for you, if you are using i18n by common rails conventions. For example, you have following in your en.yml:
|
154
|
+
|
155
|
+
en:
|
156
|
+
activerecord:
|
157
|
+
attributes:
|
158
|
+
user:
|
159
|
+
id: '#'
|
160
|
+
name: "Username"
|
161
|
+
bio: "Short biography"
|
162
|
+
|
163
|
+
Then, +table-for+ will automatically catch up correct translations for column headers. If you are not familiar with i18n, you can always pass a custom header to the column:
|
164
|
+
|
165
|
+
<%= table_for @users do |table| %>
|
166
|
+
<% table.column :parent_name, header: "Mr. Smith" %>
|
167
|
+
<% end %>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.5
|
@@ -36,7 +36,7 @@ module TableFor
|
|
36
36
|
elsif column.anonymous
|
37
37
|
nil
|
38
38
|
else
|
39
|
-
column.name.to_s.titleize
|
39
|
+
I18n.t("#{translation_lookup_prefix}.#{column.name.to_s.underscore}", :default => column.name.to_s.titleize)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -83,6 +83,19 @@ module TableFor
|
|
83
83
|
view.capture(self, &block)
|
84
84
|
end
|
85
85
|
end
|
86
|
+
|
87
|
+
private
|
88
|
+
def translation_lookup_prefix
|
89
|
+
if global_options[:records].respond_to?(:model)
|
90
|
+
"activerecord.attributes.#{global_options[:records].model.to_s.underscore}"
|
91
|
+
elsif global_options[:records].all? {|record| record.is_a?(ActiveRecord::Base) && record.class == global_options[:records].first.class }
|
92
|
+
"activerecord.attributes.#{global_options[:records].first.class.to_s.underscore}"
|
93
|
+
elsif global_options[:records].all? {|record| record.class == global_options[:records].first.class }
|
94
|
+
"tables.columns.#{global_options[:records].first.class.to_s.underscore}"
|
95
|
+
else
|
96
|
+
"tables.columns"
|
97
|
+
end
|
98
|
+
end
|
86
99
|
end
|
87
100
|
end
|
88
101
|
end
|
@@ -9,6 +9,13 @@ describe "table_for" do
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
class Offer
|
13
|
+
attr_accessor :first_name
|
14
|
+
def initialize(first_name)
|
15
|
+
@first_name = first_name
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
12
19
|
before :each do
|
13
20
|
User.create! :email => "andrew.hunter@livingsocial.com", :first_name => "Andrew", :last_name => "Hunter"
|
14
21
|
User.create! :email => "todd.fisher@livingsocial.com", :first_name => "Todd", :last_name => "Fisher"
|
@@ -75,6 +82,51 @@ describe "table_for" do
|
|
75
82
|
xml = XmlSimple.xml_in(%%<table><thead style="background-color: orange"><tr></tr></thead><tbody><tr></tr></tbody></table>%)
|
76
83
|
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
77
84
|
end
|
85
|
+
|
86
|
+
it "should translate column names" do
|
87
|
+
rails_4_active_record_array = @users[0, 1].clone
|
88
|
+
rails_4_active_record_array.expects(:model => User)
|
89
|
+
I18n.expects(:t).with("activerecord.attributes.user.first_name", :default => "First Name").returns("Vorname")
|
90
|
+
buffer = @view.table_for rails_4_active_record_array do |table|
|
91
|
+
table.column :first_name
|
92
|
+
end
|
93
|
+
xml = XmlSimple.xml_in(%%<table><thead><tr><th>Vorname</th></tr></thead><tbody><tr><td>Andrew</td></tr></tbody></table>%)
|
94
|
+
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
95
|
+
|
96
|
+
I18n.expects(:t).with("activerecord.attributes.user.first_name", :default => "First Name").returns("Vorname2")
|
97
|
+
buffer = @view.table_for @users[0,1] do |table|
|
98
|
+
table.column :first_name
|
99
|
+
end
|
100
|
+
xml = XmlSimple.xml_in(%%<table><thead><tr><th>Vorname2</th></tr></thead><tbody><tr><td>Andrew</td></tr></tbody></table>%)
|
101
|
+
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
102
|
+
|
103
|
+
non_activerecord_array = [Offer.new("Timmy")]
|
104
|
+
|
105
|
+
I18n.expects(:t).with("tables.columns.offer.first_name", :default => "First Name").returns("Vorname3")
|
106
|
+
buffer = @view.table_for non_activerecord_array do |table|
|
107
|
+
table.column :first_name
|
108
|
+
end
|
109
|
+
xml = XmlSimple.xml_in(%%<table><thead><tr><th>Vorname3</th></tr></thead><tbody><tr><td>Timmy</td></tr></tbody></table>%)
|
110
|
+
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
111
|
+
|
112
|
+
# the rare case where the array has objects of different types
|
113
|
+
mixed_array = [@users.first, Offer.new("Timmy")]
|
114
|
+
I18n.expects(:t).with("tables.columns.first_name", :default => "First Name").returns("Vorname3")
|
115
|
+
buffer = @view.table_for mixed_array do |table|
|
116
|
+
table.column :first_name
|
117
|
+
end
|
118
|
+
xml = XmlSimple.xml_in(%%<table><thead><tr><th>Vorname3</th></tr></thead><tbody><tr><td>Andrew</td></tr><tr><td>Timmy</td></tr></tbody></table>%)
|
119
|
+
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should not translate column name if header passed" do
|
123
|
+
I18n.expects(:t).never
|
124
|
+
buffer = @view.table_for @users[0,1] do |table|
|
125
|
+
table.column :first_name, :header => "My First Name"
|
126
|
+
end
|
127
|
+
xml = XmlSimple.xml_in(%%<table><thead><tr><th>My First Name</th></tr></thead><tbody><tr><td>Andrew</td></tr></tbody></table>%)
|
128
|
+
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
129
|
+
end
|
78
130
|
end
|
79
131
|
|
80
132
|
describe "header_row block" do
|
data/table-for.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "table-for"
|
8
|
-
s.version = "3.1.
|
8
|
+
s.version = "3.1.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrew Hunter"]
|
12
|
-
s.date = "2013-10-
|
12
|
+
s.date = "2013-10-31"
|
13
13
|
s.description = "table-for is a table builder for an array of objects, easily allowing overriding of how any aspect of the table is generated"
|
14
14
|
s.email = "hunterae@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: table-for
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -234,7 +234,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
234
234
|
version: '0'
|
235
235
|
segments:
|
236
236
|
- 0
|
237
|
-
hash:
|
237
|
+
hash: 2078517187188360372
|
238
238
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
239
|
none: false
|
240
240
|
requirements:
|