display_for 0.1.5 → 0.1.6
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/.rspec +2 -0
- data/Rakefile +0 -10
- data/VERSION +1 -1
- data/display_for.gemspec +7 -4
- data/lib/display_for/builder/base.rb +1 -3
- data/lib/display_for/builder/table.rb +14 -2
- data/lib/display_for/element/attribute.rb +2 -0
- data/lib/display_for/element/base.rb +4 -0
- data/spec/lib/builder/table_spec.rb +33 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/support/test_model.rb +5 -0
- data/spec/support/test_template.rb +6 -0
- metadata +8 -5
- data/test/helper.rb +0 -18
- data/test/test_display_for.rb +0 -7
data/.rspec
ADDED
data/Rakefile
CHANGED
@@ -32,16 +32,6 @@ Rake::TestTask.new(:test) do |test|
|
|
32
32
|
test.verbose = true
|
33
33
|
end
|
34
34
|
|
35
|
-
=begin
|
36
|
-
require 'rcov/rcovtask'
|
37
|
-
Rcov::RcovTask.new do |test|
|
38
|
-
test.libs << 'test'
|
39
|
-
test.pattern = 'test/**/test_*.rb'
|
40
|
-
test.verbose = true
|
41
|
-
test.rcov_opts << '--exclude "gems/*"'
|
42
|
-
end
|
43
|
-
=end
|
44
|
-
|
45
35
|
task :default => :test
|
46
36
|
|
47
37
|
require 'rdoc/task'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
data/display_for.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "display_for"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mateo Murphy"]
|
12
|
-
s.date = "2012-10-
|
12
|
+
s.date = "2012-10-19"
|
13
13
|
s.description = "A Rails library for display data, in tabular and other formats"
|
14
14
|
s.email = "mateo.murphy@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
+
".rspec",
|
21
22
|
"Gemfile",
|
22
23
|
"Gemfile.lock",
|
23
24
|
"LICENSE.txt",
|
@@ -39,8 +40,10 @@ Gem::Specification.new do |s|
|
|
39
40
|
"lib/display_for/element/base.rb",
|
40
41
|
"lib/display_for/element/html.rb",
|
41
42
|
"lib/display_for/helper.rb",
|
42
|
-
"
|
43
|
-
"
|
43
|
+
"spec/lib/builder/table_spec.rb",
|
44
|
+
"spec/spec_helper.rb",
|
45
|
+
"spec/support/test_model.rb",
|
46
|
+
"spec/support/test_template.rb"
|
44
47
|
]
|
45
48
|
s.homepage = "http://github.com/mateomurphy/display_for"
|
46
49
|
s.licenses = ["MIT"]
|
@@ -10,10 +10,8 @@ module DisplayFor
|
|
10
10
|
@attributes = []
|
11
11
|
@actions = []
|
12
12
|
@html_options = html_options
|
13
|
-
|
14
|
-
raise "invalid resource class #{resource_class}" unless resource_class.respond_to?(:human_attribute_name)
|
15
13
|
|
16
|
-
block.call(self)
|
14
|
+
block.call(self) if block_given?
|
17
15
|
end
|
18
16
|
|
19
17
|
def attribute(name, options = {}, &block)
|
@@ -14,11 +14,13 @@ module DisplayFor
|
|
14
14
|
def build_row(resource)
|
15
15
|
result = ''
|
16
16
|
@attributes.each do |attribute|
|
17
|
-
result << content_tag(:td, attribute.content(resource))
|
17
|
+
result << content_tag(:td, attribute.content(resource), attribute.html_options)
|
18
18
|
end
|
19
19
|
result << content_tag(:td, build_actions(resource)) if @actions.any?
|
20
20
|
|
21
|
-
|
21
|
+
options = {}
|
22
|
+
options[:id] = "#{@resource_class}_#{resource.id}".underscore if resource
|
23
|
+
content_tag(:tr, result.html_safe, options) << "\n"
|
22
24
|
end
|
23
25
|
|
24
26
|
def build_actions(resource)
|
@@ -40,9 +42,19 @@ module DisplayFor
|
|
40
42
|
|
41
43
|
result = build_header + content_tag(:tbody, result)
|
42
44
|
|
45
|
+
if @footer
|
46
|
+
result << content_tag(:tfoot, @footer.build_row(nil))
|
47
|
+
end
|
48
|
+
|
43
49
|
html_options[:class] ||= "table table-bordered table-striped #{@resource_class.to_s.underscore}-table"
|
44
50
|
content_tag(:table, result, html_options).html_safe
|
45
51
|
end
|
52
|
+
|
53
|
+
def footer
|
54
|
+
@footer = Table.new(resource_class, [], html_options, template)
|
55
|
+
yield @footer
|
56
|
+
end
|
57
|
+
|
46
58
|
end
|
47
59
|
end
|
48
60
|
end
|
@@ -2,6 +2,8 @@ module DisplayFor
|
|
2
2
|
module Element
|
3
3
|
class Attribute < Base
|
4
4
|
def default_label(resource_class)
|
5
|
+
raise "#{resource_class} does not respond to human_attribute_name" unless resource_class.respond_to?(:human_attribute_name)
|
6
|
+
|
5
7
|
resource_class.human_attribute_name(@name.to_s)
|
6
8
|
end
|
7
9
|
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
OUTPUT = %q|<table class="table table-bordered table-striped test_model-table"><thead><tr><th class="test_model_id">id</th><th class="test_model_first_name">first_name</th><th class="test_model_last_name">last_name</th></tr></thead>
|
4
|
+
<tbody><tr id="test_model_1"><td>1</td><td>foo</td><td>bar</td></tr>
|
5
|
+
</tbody><tfoot><tr><td colspan="3"> </td></tr>
|
6
|
+
</tfoot></table>|
|
7
|
+
|
8
|
+
module DisplayFor
|
9
|
+
module Builder
|
10
|
+
describe Table, :focus => true do
|
11
|
+
context 'when given a footer' do
|
12
|
+
subject :table do
|
13
|
+
Table.new(TestModel, [TestModel.new(1, 'foo', 'bar')], {}, TestTemplate.new) do |t|
|
14
|
+
t.attribute :id
|
15
|
+
t.attribute :first_name
|
16
|
+
t.attribute :last_name
|
17
|
+
t.footer do |f|
|
18
|
+
f.html :form, :html => { :colspan => 3 } do
|
19
|
+
' '.html_safe
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#to_s' do
|
26
|
+
it 'renders the table' do
|
27
|
+
table.to_s.should eq(OUTPUT)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'action_view'
|
5
|
+
require 'display_for'
|
6
|
+
|
7
|
+
Dir['./spec/support/**/*.rb'].each {|f| require f }
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
11
|
+
config.run_all_when_everything_filtered = true
|
12
|
+
config.filter_run :focus
|
13
|
+
config.order = 'random'
|
14
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: display_for
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
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: 2012-10-
|
12
|
+
date: 2012-10-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -116,6 +116,7 @@ extra_rdoc_files:
|
|
116
116
|
- README.rdoc
|
117
117
|
files:
|
118
118
|
- .document
|
119
|
+
- .rspec
|
119
120
|
- Gemfile
|
120
121
|
- Gemfile.lock
|
121
122
|
- LICENSE.txt
|
@@ -137,8 +138,10 @@ files:
|
|
137
138
|
- lib/display_for/element/base.rb
|
138
139
|
- lib/display_for/element/html.rb
|
139
140
|
- lib/display_for/helper.rb
|
140
|
-
-
|
141
|
-
-
|
141
|
+
- spec/lib/builder/table_spec.rb
|
142
|
+
- spec/spec_helper.rb
|
143
|
+
- spec/support/test_model.rb
|
144
|
+
- spec/support/test_template.rb
|
142
145
|
homepage: http://github.com/mateomurphy/display_for
|
143
146
|
licenses:
|
144
147
|
- MIT
|
@@ -154,7 +157,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
154
157
|
version: '0'
|
155
158
|
segments:
|
156
159
|
- 0
|
157
|
-
hash:
|
160
|
+
hash: -3711101849509490407
|
158
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
162
|
none: false
|
160
163
|
requirements:
|
data/test/helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
-
require 'display_for'
|
16
|
-
|
17
|
-
class Test::Unit::TestCase
|
18
|
-
end
|