html_table_rails 0.0.1
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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +33 -0
- data/Rakefile +1 -0
- data/html_table_rails.gemspec +25 -0
- data/lib/html_table_rails/version.rb +3 -0
- data/lib/html_table_rails.rb +61 -0
- metadata +85 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# TableRails
|
2
|
+
|
3
|
+
Provides a view helper for [html_table](https://github.com/tomkurt/html_table).
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
* you can call view helpers on the row object
|
8
|
+
* localizes the table headers using human_attribute_name
|
9
|
+
|
10
|
+
## Example
|
11
|
+
|
12
|
+
### HAML
|
13
|
+
|
14
|
+
```haml
|
15
|
+
= %table do |row|
|
16
|
+
= row.column :description, :value => some_view_helper(row.object)
|
17
|
+
= row.column :description, :value => render(:partial => "employee", :collection => row.object.employees)
|
18
|
+
```
|
19
|
+
|
20
|
+
### ERB
|
21
|
+
|
22
|
+
```erb
|
23
|
+
<%= %table do |row|
|
24
|
+
row.column(:description, :value => some_view_helper(row.object)) +
|
25
|
+
row.column(:description, :value => render(:partial => "employee", :collection => row.object.employees))
|
26
|
+
end %>
|
27
|
+
```
|
28
|
+
|
29
|
+
## Installation
|
30
|
+
|
31
|
+
gem install html_table_rails
|
32
|
+
|
33
|
+
Copyright (c) 2011 Tom Maeckelberghe, released under the MIT license
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "html_table_rails/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "html_table_rails"
|
7
|
+
s.version = HtmlTableRails::VERSION
|
8
|
+
s.authors = ["Tom Maeckelberghe"]
|
9
|
+
s.email = ["tom.maeckelberghe@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{This allows the user to call view helpers from inside html_table.}
|
12
|
+
s.description = %q{This will add rails templating to html_table}
|
13
|
+
|
14
|
+
s.rubyforge_project = "html_table_rails"
|
15
|
+
s.add_dependency "html_table"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
# specify any dependencies here; for example:
|
23
|
+
# s.add_development_dependency "rspec"
|
24
|
+
# s.add_runtime_dependency "rest-client"
|
25
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require "html_table_rails/version"
|
2
|
+
require "html_table"
|
3
|
+
|
4
|
+
class HtmlTable::TableBuilder::ColumnHeaders
|
5
|
+
def column_translation column
|
6
|
+
model_class.human_attribute_name(column) rescue column
|
7
|
+
end
|
8
|
+
|
9
|
+
def model_class
|
10
|
+
row.object.class
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class HtmlTable::TableBuilder
|
15
|
+
def initialize(collection, template, options={}, &block)
|
16
|
+
init_instance_vars(options)
|
17
|
+
collection.each do |object|
|
18
|
+
@rows << HtmlTable::TableRowBuilder.new(object, template, &block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class HtmlTable::TableRowBuilder
|
24
|
+
def initialize(object, template)
|
25
|
+
@object = object
|
26
|
+
@columns = []
|
27
|
+
@html_columns = []
|
28
|
+
@template = template
|
29
|
+
capture_method = (template.respond_to?(:is_haml?) && template.is_haml?) ? :capture_haml : :capture
|
30
|
+
@output = template.send(capture_method) do
|
31
|
+
yield(self)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def to_s
|
36
|
+
"<tr>#{@output}</tr>"
|
37
|
+
end
|
38
|
+
|
39
|
+
def value_with_localization column_name, options
|
40
|
+
if column_name &&
|
41
|
+
object.respond_to?(column_name) &&
|
42
|
+
(
|
43
|
+
object.send(column_name).is_a?(Time) ||
|
44
|
+
object.send(column_name).is_a?(Date)
|
45
|
+
)
|
46
|
+
@template.l(object.send(column_name))
|
47
|
+
else
|
48
|
+
value_without_localization(column_name, options)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
alias_method_chain :value, :localization
|
53
|
+
end
|
54
|
+
|
55
|
+
module ::HtmlTable
|
56
|
+
def set_table_builder(collection, options, &block)
|
57
|
+
@table_builder = TableBuilder.new(collection, self, options, &block)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
ActionView::Base.send :include, ::HtmlTable
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: html_table_rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Tom Maeckelberghe
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-02-12 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: html_table
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description: This will add rails templating to html_table
|
35
|
+
email:
|
36
|
+
- tom.maeckelberghe@gmail.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files: []
|
42
|
+
|
43
|
+
files:
|
44
|
+
- .gitignore
|
45
|
+
- Gemfile
|
46
|
+
- README.md
|
47
|
+
- Rakefile
|
48
|
+
- html_table_rails.gemspec
|
49
|
+
- lib/html_table_rails.rb
|
50
|
+
- lib/html_table_rails/version.rb
|
51
|
+
homepage: ""
|
52
|
+
licenses: []
|
53
|
+
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
required_rubygems_version: !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
|
+
requirements: []
|
78
|
+
|
79
|
+
rubyforge_project: html_table_rails
|
80
|
+
rubygems_version: 1.8.10
|
81
|
+
signing_key:
|
82
|
+
specification_version: 3
|
83
|
+
summary: This allows the user to call view helpers from inside html_table.
|
84
|
+
test_files: []
|
85
|
+
|