tableview 0.3.3 → 0.4.0
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/README.md +30 -1
- data/lib/tableview/helper.rb +0 -4
- data/lib/tableview/tv.rb +1 -1
- data/lib/tableview/version.rb +1 -1
- data/lib/tableview/view_handler.rb +4 -4
- metadata +54 -82
data/README.md
CHANGED
@@ -10,13 +10,15 @@ Installation
|
|
10
10
|
|
11
11
|
In your Gemfile:
|
12
12
|
|
13
|
-
|
14
13
|
gem 'tableview'
|
15
14
|
|
16
15
|
then
|
17
16
|
|
18
17
|
$ bundle install
|
19
18
|
$ rails g tableview:install
|
19
|
+
|
20
|
+
Usage
|
21
|
+
=====
|
20
22
|
|
21
23
|
To apply to a resource use the built in generator:
|
22
24
|
|
@@ -36,6 +38,10 @@ This will create a partial named `_table.tv` in which you can use a DSL like thi
|
|
36
38
|
= @registration.other_scope, "Works as title in other formats as well"
|
37
39
|
end
|
38
40
|
|
41
|
+
DSL
|
42
|
+
===
|
43
|
+
|
44
|
+
|
39
45
|
The DSL is a simple superset of ruby with a few special characters (only work if first printable character on line, won't work with eval and friends).
|
40
46
|
|
41
47
|
Character | Meaning
|
@@ -45,6 +51,29 @@ Character | Meaning
|
|
45
51
|
`+` | Defines a column. If passed a symbol, Tableview will use I18n to lookup the header and call the method on the model to get the value. Strings will be used literally. Optionally use a block to generate values.
|
46
52
|
`=` | Render a subtable for the passed collection. Not all formatters support subtables, use at own risk (notably the CSV formatter has no support for this). Is meant mainly to have nice full-featured excel files.
|
47
53
|
|
54
|
+
What if I don't like the DSL?
|
55
|
+
=============================
|
56
|
+
|
57
|
+
You may simply create a `.rb` file instead, it will just have to include some boilerplate code (same result as above):
|
58
|
+
|
59
|
+
format = Tableview::Helper::Format.new(params)
|
60
|
+
tv = Tableview::ViewHandler.table do |table|
|
61
|
+
table.table_for @registrations
|
62
|
+
|
63
|
+
table.column :first_name
|
64
|
+
table.column :surname
|
65
|
+
table.column :address {|reg| reg.address + "\n" + reg.postcode }
|
66
|
+
table.column :friends if format.html?
|
67
|
+
|
68
|
+
if format.xls?
|
69
|
+
table.generate_subtable_for @registrations.some_scope, "Workbook title"
|
70
|
+
table.generate_subtable_for @registration.other_scope, "Works as title in other formats as well"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
output = Tableview::output_class(params[:format]).new
|
74
|
+
output.process(tv)
|
75
|
+
output.to_s
|
76
|
+
|
48
77
|
It will also add a few lines of code to your controller:
|
49
78
|
|
50
79
|
- `self.responder = ApplicationResponder` this sets up the correct code path to use for dynamically rendering all the formats.
|
data/lib/tableview/helper.rb
CHANGED
@@ -10,13 +10,9 @@ module Tableview::Helper
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def method_missing(name, *args, &blk)
|
13
|
-
puts name.inspect
|
14
13
|
if m = name.to_s.match(/^(.+)\?$/)
|
15
|
-
puts "matched"
|
16
|
-
#puts m.inspect, name.inspect
|
17
14
|
@params[:format] == m.captures.first
|
18
15
|
else
|
19
|
-
puts "did not match"
|
20
16
|
super
|
21
17
|
end
|
22
18
|
end
|
data/lib/tableview/tv.rb
CHANGED
@@ -9,7 +9,7 @@ module Tableview
|
|
9
9
|
source.gsub!(/#{start}\*#{ending}/, 'table.config(\1)')
|
10
10
|
%{
|
11
11
|
format = Tableview::Helper::Format.new(params)
|
12
|
-
tv = Tableview::ViewHandler.
|
12
|
+
tv = Tableview::ViewHandler.table do |table|
|
13
13
|
#{source}
|
14
14
|
end
|
15
15
|
output = Tableview::output_class(params[:format]).new
|
data/lib/tableview/version.rb
CHANGED
@@ -6,7 +6,7 @@ module Tableview
|
|
6
6
|
|
7
7
|
attr_reader :table
|
8
8
|
|
9
|
-
def self.
|
9
|
+
def self.table(opts = {}, &block)
|
10
10
|
ret = Table.new opts
|
11
11
|
#ret.instance_eval &block
|
12
12
|
yield(ret)
|
@@ -82,10 +82,10 @@ module Tableview
|
|
82
82
|
@current_part.send :row, opts, &block
|
83
83
|
end
|
84
84
|
|
85
|
-
def column(title,
|
85
|
+
def column(title, method = nil, opts = {}, &block)
|
86
86
|
if title.is_a? Symbol
|
87
87
|
method = title unless block_given?
|
88
|
-
title = I18n.translate("activerecord.attributes.#{@collection.klass.name.downcase}.#{title}")
|
88
|
+
title = I18n.translate("activerecord.attributes.#{@collection.klass.name.downcase}.#{title}")
|
89
89
|
end
|
90
90
|
if block_given?
|
91
91
|
proc = block#lambda { |val| block.call(val) }
|
@@ -93,7 +93,7 @@ module Tableview
|
|
93
93
|
proc = lambda { |val| val.send(method) }
|
94
94
|
end
|
95
95
|
|
96
|
-
@headers << Cell.new(title, opts
|
96
|
+
@headers << Cell.new(title, opts)
|
97
97
|
@procs << proc
|
98
98
|
@column_based = true
|
99
99
|
end
|
metadata
CHANGED
@@ -1,89 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: tableview
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 3
|
8
|
-
- 3
|
9
|
-
version: 0.3.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Jakub Hampl
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-09-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: bundler
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70176550766880 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 1
|
30
|
-
- 0
|
31
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 1.0.0
|
33
22
|
type: :development
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: terminal-table
|
37
23
|
prerelease: false
|
38
|
-
|
24
|
+
version_requirements: *70176550766880
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: terminal-table
|
27
|
+
requirement: &70176550765640 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
|
-
requirements:
|
29
|
+
requirements:
|
41
30
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
- 1
|
45
|
-
- 4
|
46
|
-
version: "1.4"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.4'
|
47
33
|
type: :runtime
|
48
|
-
version_requirements: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: spreadsheet
|
51
34
|
prerelease: false
|
52
|
-
|
35
|
+
version_requirements: *70176550765640
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: spreadsheet
|
38
|
+
requirement: &70176550764080 !ruby/object:Gem::Requirement
|
53
39
|
none: false
|
54
|
-
requirements:
|
40
|
+
requirements:
|
55
41
|
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
- 0
|
59
|
-
- 6
|
60
|
-
version: "0.6"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.6'
|
61
44
|
type: :runtime
|
62
|
-
version_requirements: *id003
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: railties
|
65
45
|
prerelease: false
|
66
|
-
|
46
|
+
version_requirements: *70176550764080
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: railties
|
49
|
+
requirement: &70176550762880 !ruby/object:Gem::Requirement
|
67
50
|
none: false
|
68
|
-
requirements:
|
51
|
+
requirements:
|
69
52
|
- - ~>
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
|
72
|
-
- 3
|
73
|
-
- 0
|
74
|
-
version: "3.0"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
75
55
|
type: :runtime
|
76
|
-
|
77
|
-
|
78
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70176550762880
|
58
|
+
description: Supported formats are ASCII, MS Excel, HTML and CSV; it is easy to create
|
59
|
+
your own exporter class.
|
60
|
+
email:
|
79
61
|
- honitom@seznam.cz
|
80
62
|
executables: []
|
81
|
-
|
82
63
|
extensions: []
|
83
|
-
|
84
64
|
extra_rdoc_files: []
|
85
|
-
|
86
|
-
files:
|
65
|
+
files:
|
87
66
|
- .gitignore
|
88
67
|
- .rvm
|
89
68
|
- Gemfile
|
@@ -102,39 +81,32 @@ files:
|
|
102
81
|
- lib/tableview/version.rb
|
103
82
|
- lib/tableview/view_handler.rb
|
104
83
|
- tableview.gemspec
|
105
|
-
has_rdoc: true
|
106
84
|
homepage: http://rubygems.org/gems/tableview
|
107
85
|
licenses: []
|
108
|
-
|
109
86
|
post_install_message:
|
110
87
|
rdoc_options: []
|
111
|
-
|
112
|
-
require_paths:
|
88
|
+
require_paths:
|
113
89
|
- lib
|
114
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
91
|
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
segments:
|
120
97
|
- 0
|
121
|
-
|
122
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
hash: -4193223840860407879
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
100
|
none: false
|
124
|
-
requirements:
|
125
|
-
- -
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
segments:
|
128
|
-
- 1
|
129
|
-
- 3
|
130
|
-
- 6
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
131
104
|
version: 1.3.6
|
132
105
|
requirements: []
|
133
|
-
|
134
106
|
rubyforge_project: tableview
|
135
|
-
rubygems_version: 1.
|
107
|
+
rubygems_version: 1.8.15
|
136
108
|
signing_key:
|
137
109
|
specification_version: 3
|
138
|
-
summary: Tableview is a DSL for specifying tables in Rails views that can output in
|
110
|
+
summary: Tableview is a DSL for specifying tables in Rails views that can output in
|
111
|
+
multiple formats
|
139
112
|
test_files: []
|
140
|
-
|