tabletastic 0.2.0.pre → 0.2.0.pre2

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 CHANGED
@@ -1,7 +1,11 @@
1
- Git
1
+ Git (for upcoming v0.2.0 release)
2
+
2
3
  * Updating to Rails3 API and idioms
4
+ * Adding default table html options
5
+ * Adding default lambda (table block) so that table_for can be called without passing a block
3
6
 
4
7
  v0.1.3 (Dec 28, 2009)
8
+
5
9
  * Changing destroy action to have confirmation by default
6
10
 
7
11
  v0.1.2 (Nov 25, 2009)
data/README.rdoc CHANGED
@@ -210,6 +210,63 @@ will product html like:
210
210
 
211
211
  If it _still_ isn't flexible enough for your needs, it might be time to return to static html/erb.
212
212
 
213
+ == Default Options and Tabletastic initializer
214
+
215
+ As of version 0.2.0, you can now setup some of your own defaults in an initializer file.
216
+
217
+ For example, create a file called tabletastic.rb in your config/initializers folder.
218
+
219
+ Within that file, there are several defaults that you can setup for yourself, including:
220
+
221
+ Tabletastic.default_table_html
222
+ Tabletastic.default_table_block
223
+
224
+ Both of these options are setup up so that inline options will still override whatever they are set to,
225
+ but providing them here will save you some code if you commonly reuse options.
226
+
227
+ By default, +default_table_html+ is simple an empty hash <code>{}</code>. By providing your own defaults, you can ensure that all
228
+ of your tables have a specific html +class+ or +cellspacing+, or whatever.
229
+
230
+ If <code>Tabletastic.default_table_html</code> is set to <code>{:cellspacing => 0, :class => 'yowza'}</code>,
231
+ then all tabletastic tables will have this html by default, unless overridden:
232
+
233
+ table_for(@posts) do |t|
234
+
235
+ will produce:
236
+
237
+ <table class="yowza" cellspacing="0" id="posts">
238
+
239
+ Similarly, all of those calls to +table_for+ can get boring since you might be using the same block every time.
240
+ The option +default_table_block+ lets you set a default lambda so that you can omit the block with +table_for+.
241
+ Since by default +default_table_block+ is set to <code>lambda{|table| table.data}</code>, the following:
242
+
243
+ <%= table_for(@posts) %>
244
+
245
+ will be the same as
246
+
247
+ <%= table_for(@posts) do |t|
248
+ t.data
249
+ end %>
250
+
251
+ However, just like +default_table_html+, you can set a different block in the initializer file for your block to default to.
252
+ For example:
253
+
254
+ Tabletastic.default_table_block = lambda {|table| table.data :actions => :all }
255
+
256
+ will make the following equivalent:
257
+
258
+ <%= table_for(@posts) %>
259
+
260
+ <%= table_for(@posts) do |t|
261
+ t.data :actions => :all
262
+ end %>
263
+
264
+ And to omit those action links, you can just use +table_for+ the old-fashioned way:
265
+
266
+ <%= table_for(@posts) do |t|
267
+ t.data
268
+ end %>
269
+
213
270
  == Note on Patches/Pull Requests
214
271
 
215
272
  * Fork the project.
data/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ # Include hook code here
2
+ require 'tabletastic'
@@ -0,0 +1,36 @@
1
+ module Tabletastic
2
+ module Helper
3
+ # returns and outputs a table for the given active record collection
4
+ def table_for(collection, *args, &block)
5
+ block = Tabletastic.default_table_block unless block_given?
6
+ klass = default_class_for(collection)
7
+ options = args.extract_options!
8
+ initialize_html_options(options, klass)
9
+ result = block.call(TableBuilder.new(collection, klass, self))
10
+
11
+ content_tag(:table, result, options[:html])
12
+ end
13
+
14
+ private
15
+ # Finds the class representing the objects within the collection
16
+ def default_class_for(collection)
17
+ if collection.respond_to?(:proxy_reflection)
18
+ collection.proxy_reflection.klass
19
+ elsif !collection.empty?
20
+ collection.first.class
21
+ end
22
+ end
23
+
24
+ def initialize_html_options(options, klass)
25
+ options[:html] ||= {}
26
+ options[:html][:id] ||= get_id_for(klass)
27
+ options[:html].reverse_merge!(Tabletastic.default_table_html)
28
+ end
29
+
30
+ def get_id_for(klass)
31
+ klass ? klass.model_name.collection : ""
32
+ end
33
+ end
34
+ end
35
+
36
+ ActionView::Base.send :include, Tabletastic::Helper
@@ -1,3 +1,3 @@
1
1
  module Tabletastic
2
- VERSION = "0.2.0.pre"
2
+ VERSION = "0.2.0.pre2"
3
3
  end
data/lib/tabletastic.rb CHANGED
@@ -1,28 +1,9 @@
1
1
  require 'tabletastic/table_builder'
2
+ require 'tabletastic/helper'
2
3
 
3
4
  module Tabletastic
4
- # returns and outputs a table for the given active record collection
5
- def table_for(collection, *args, &block)
6
- raise ArgumentError, "you must provide a block" unless block_given?
7
- klass = default_class_for(collection)
8
- options = args.extract_options!
9
- options[:html] ||= {}
10
- options[:html][:id] ||= get_id_for(klass)
11
- result = block.call(TableBuilder.new(collection, klass, self))
12
- content_tag(:table, result, options[:html])
13
- end
5
+ @@default_table_html = {}
6
+ @@default_table_block = lambda {|table| table.data}
14
7
 
15
- private
16
- # Finds the class representing the objects within the collection
17
- def default_class_for(collection)
18
- if collection.respond_to?(:proxy_reflection)
19
- collection.proxy_reflection.klass
20
- elsif !collection.empty?
21
- collection.first.class
22
- end
23
- end
24
-
25
- def get_id_for(klass)
26
- klass ? klass.model_name.collection : ""
27
- end
8
+ mattr_accessor :default_table_html, :default_table_block
28
9
  end
data/spec/spec_helper.rb CHANGED
@@ -17,9 +17,9 @@ smart_require 'rspec', '>= 1.3.0', 'spec'
17
17
  require 'spec/autorun'
18
18
  smart_require 'nokogiri'
19
19
  smart_require 'rspec_tag_matchers', '>= 1.0.0'
20
- smart_require 'activesupport', '>= 3.0.0.beta2', 'active_support'
21
- smart_require 'actionpack', '>= 3.0.0.beta2', 'action_pack'
22
- smart_require 'activerecord', '>= 3.0.0.beta2', 'active_record'
20
+ smart_require 'activesupport', '>= 3.0.0.beta3', 'active_support'
21
+ smart_require 'actionpack', '>= 3.0.0.beta3', 'action_pack'
22
+ smart_require 'activerecord', '>= 3.0.0.beta3', 'active_record'
23
23
  require 'action_controller'
24
24
  require 'action_view/base'
25
25
  require 'action_view/template'
@@ -113,3 +113,4 @@ end
113
113
 
114
114
  include TabletasticSpecHelper
115
115
  include Tabletastic
116
+ include Tabletastic::Helper
@@ -23,4 +23,28 @@ describe "Tabletastic#table_for" do
23
23
  end
24
24
  end
25
25
  end
26
+
27
+ describe "default options" do
28
+ before do
29
+ Tabletastic.default_table_html = {:class => 'default', :cellspacing => 0}
30
+ end
31
+
32
+ it "should allow default table html to be set" do
33
+ concat(table_for([]){})
34
+ output_buffer.should have_tag("table.default")
35
+ end
36
+
37
+ it "can be overridden with inline options" do
38
+ concat(table_for([], :html => {:class => 'newclass'}){})
39
+ output_buffer.should have_tag("table.newclass")
40
+ output_buffer.should_not have_tag("table.default")
41
+ end
42
+ end
43
+
44
+ describe "without a block" do
45
+ it "should use default block" do
46
+ concat table_for([])
47
+ output_buffer.should have_tag("table")
48
+ end
49
+ end
26
50
  end
metadata CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 2
8
8
  - 0
9
- - pre
10
- version: 0.2.0.pre
9
+ - pre2
10
+ version: 0.2.0.pre2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Joshua Davey
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-04-10 00:00:00 -05:00
18
+ date: 2010-04-18 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  version: "0"
31
31
  type: :development
32
32
  version_requirements: *id001
33
- description: A table builder for active record collections that produces semantically rich and accessible markup
33
+ description: A table builder for active record collections that produces semantically rich and accessible table markup
34
34
  email: josh@joshuadavey.com
35
35
  executables: []
36
36
 
@@ -40,6 +40,7 @@ extra_rdoc_files:
40
40
  - README.rdoc
41
41
  - LICENSE
42
42
  files:
43
+ - lib/tabletastic/helper.rb
43
44
  - lib/tabletastic/table_builder.rb
44
45
  - lib/tabletastic/table_field.rb
45
46
  - lib/tabletastic/version.rb
@@ -47,6 +48,7 @@ files:
47
48
  - LICENSE
48
49
  - README.rdoc
49
50
  - CHANGELOG.rdoc
51
+ - init.rb
50
52
  has_rdoc: true
51
53
  homepage: http://github.com/jgdavey/tabletastic
52
54
  licenses: []
@@ -70,8 +72,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
72
  segments:
71
73
  - 1
72
74
  - 3
73
- - 5
74
- version: 1.3.5
75
+ - 6
76
+ version: 1.3.6
75
77
  requirements: []
76
78
 
77
79
  rubyforge_project: