html_format 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/lib/html_format/generator.rb +50 -44
- data/lib/html_format/version.rb +1 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +5551 -0
- data/test/dummy/log/test.log +436 -0
- data/test/dummy/tmp/pids/server.pid +1 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15a5d06beaa01fe23e72b23952879b4f7bf3ec3e
|
4
|
+
data.tar.gz: a9e44f86a7b748196a541462ff2a15e82ae80725
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d127c1a85828f90491cc1bebbc7343837bc15ce30ac08f6442cf2bfccec535782d60d352c5b484067b38393e3c1f25615d77b4b7abd7574e1954c1a6273224e
|
7
|
+
data.tar.gz: 4de2bef2f5ecd4f9f8c49325985c19e8e17b64ea9736da8ee18adc1b3095a631644bffc1ac1592cf8a0b9559c7c06e37e2dd91b45d4a9d1dfc65ea1a040c9e9f
|
@@ -5,7 +5,7 @@ require 'action_view'
|
|
5
5
|
module HtmlFormat
|
6
6
|
mattr_accessor :default_options
|
7
7
|
self.default_options = {
|
8
|
-
table_class: 'table table-striped table-bordered table-hover',
|
8
|
+
table_class: ['table', 'table-striped', 'table-bordered', 'table-hover'],
|
9
9
|
nesting: false,
|
10
10
|
title_tag: :h2,
|
11
11
|
header_patch: false, # If there is no header, add it
|
@@ -54,58 +54,63 @@ module HtmlFormat
|
|
54
54
|
|
55
55
|
info = function_table.find { |e| e[:_case].call(obj) }
|
56
56
|
body = ''.html_safe
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
57
|
+
|
58
|
+
if v = @options[:caption].presence
|
59
|
+
body << v
|
61
60
|
end
|
62
61
|
if @options[:header_patch]
|
63
|
-
if info[:
|
64
|
-
if v = info[:
|
62
|
+
if info[:header_process]
|
63
|
+
if v = info[:header_process].call(obj)
|
65
64
|
body << v
|
66
65
|
end
|
67
66
|
end
|
68
67
|
end
|
69
68
|
body << info[:process].call(obj)
|
70
|
-
body =
|
69
|
+
body = tag.table(body, :class => table_class(info))
|
71
70
|
if @options[:depth].zero?
|
72
71
|
if @options[:responsive]
|
73
|
-
body =
|
72
|
+
body = tag.div(body, :class => 'table-responsive')
|
74
73
|
end
|
75
74
|
if @options[:title].present?
|
76
|
-
body =
|
75
|
+
body = tag.(@options[:title_tag], @options[:title], :class => 'title') + body
|
77
76
|
end
|
78
77
|
end
|
79
|
-
|
78
|
+
tag.div(body, :class => ['html_format', "html_format_depth_#{@options[:depth]}"])
|
80
79
|
end
|
81
80
|
|
82
81
|
private
|
83
82
|
|
84
83
|
def function_table
|
85
84
|
[
|
85
|
+
# Hash
|
86
|
+
#
|
86
87
|
# {a: 1, b: 2}
|
88
|
+
#
|
87
89
|
# [a][1]
|
88
90
|
# [b][2]
|
89
91
|
{
|
90
92
|
_case: -> e { e.kind_of?(Hash) },
|
91
93
|
css_class: 'html_format_type_hash',
|
92
|
-
|
93
|
-
|
94
|
-
tr do
|
95
|
-
th(@options[:key_label]) + th(@options[:value_label])
|
94
|
+
header_process: -> e {
|
95
|
+
tag.thead do
|
96
|
+
tag.tr do
|
97
|
+
tag.th(@options[:key_label]) + tag.th(@options[:value_label])
|
96
98
|
end
|
97
99
|
end
|
98
100
|
},
|
99
101
|
process: -> e {
|
100
102
|
e.collect {|key, val|
|
101
|
-
tr do
|
102
|
-
th(key) + td(val)
|
103
|
+
tag.tr do
|
104
|
+
tag.th(key) + td(val)
|
103
105
|
end
|
104
106
|
}.join.html_safe
|
105
107
|
},
|
106
108
|
},
|
107
109
|
|
110
|
+
# Array of Hash
|
111
|
+
#
|
108
112
|
# [{a: 1, b: 2}, {a: 3, b: 4}]
|
113
|
+
#
|
109
114
|
# [a][b]
|
110
115
|
# [1][2]
|
111
116
|
# [3][4]
|
@@ -115,14 +120,14 @@ module HtmlFormat
|
|
115
120
|
process: -> e {
|
116
121
|
keys = e.inject([]) { |a, e| a | e.keys }
|
117
122
|
body = ''.html_safe
|
118
|
-
body +=
|
119
|
-
tr do
|
120
|
-
keys.collect {|e| th(e) }.join.html_safe
|
123
|
+
body += tag.thead do
|
124
|
+
tag.tr do
|
125
|
+
keys.collect {|e| tag.th(e) }.join.html_safe
|
121
126
|
end
|
122
127
|
end
|
123
|
-
body +
|
128
|
+
body + tag.tbody do
|
124
129
|
e.collect { |hash|
|
125
|
-
tr do
|
130
|
+
tag.tr do
|
126
131
|
keys.collect { |key| td(hash[key]) }.join.html_safe
|
127
132
|
end
|
128
133
|
}.join.html_safe
|
@@ -130,24 +135,28 @@ module HtmlFormat
|
|
130
135
|
},
|
131
136
|
},
|
132
137
|
|
138
|
+
# Array of Array
|
139
|
+
#
|
133
140
|
# [[:a, :b], [ 1, 2], [ 3, 4]]
|
141
|
+
#
|
134
142
|
# [a][b]
|
135
143
|
# [1][2]
|
136
144
|
# [3][4]
|
137
145
|
{
|
138
146
|
_case: -> e { e.kind_of?(Array) && e.all?{|e|e.kind_of?(Array)} },
|
139
147
|
css_class: 'html_format_type_array_of_array',
|
140
|
-
|
148
|
+
header_process: -> e {
|
141
149
|
if e.first.kind_of?(Array)
|
142
|
-
|
143
|
-
|
150
|
+
tag.thead do
|
151
|
+
# I do not know the meaning of the column so make it empty label
|
152
|
+
e.first.collect { td('') }.join.html_safe
|
144
153
|
end
|
145
154
|
end
|
146
155
|
},
|
147
156
|
process: -> e {
|
148
|
-
|
157
|
+
tag.tbody do
|
149
158
|
e.collect { |elems|
|
150
|
-
tr do
|
159
|
+
tag.tr do
|
151
160
|
elems.collect { |e| td(e) }.join.html_safe
|
152
161
|
end
|
153
162
|
}.join.html_safe
|
@@ -155,44 +164,42 @@ module HtmlFormat
|
|
155
164
|
},
|
156
165
|
},
|
157
166
|
|
167
|
+
# Array
|
168
|
+
#
|
158
169
|
# [:a, :b]
|
170
|
+
#
|
159
171
|
# [a][b]
|
160
172
|
{
|
161
173
|
_case: -> e { e.kind_of?(Array) },
|
162
174
|
css_class: 'html_format_type_array',
|
163
175
|
process: -> e {
|
164
|
-
|
165
|
-
tr do
|
176
|
+
tag.tbody do
|
177
|
+
tag.tr do
|
166
178
|
e.collect { |e| td(e) }.join.html_safe
|
167
179
|
end
|
168
180
|
end
|
169
181
|
},
|
170
182
|
},
|
171
183
|
|
184
|
+
# Ohter
|
185
|
+
#
|
172
186
|
# :a
|
187
|
+
#
|
173
188
|
# [a]
|
174
189
|
{
|
175
190
|
_case: -> e { true },
|
176
191
|
css_class: 'html_format_type_object',
|
177
192
|
process: -> e {
|
178
|
-
|
179
|
-
tr { td(e) }
|
193
|
+
tag.tbody do
|
194
|
+
tag.tr { td(e) }
|
180
195
|
end
|
181
196
|
},
|
182
197
|
},
|
183
198
|
]
|
184
199
|
end
|
185
200
|
|
186
|
-
def tr(&block)
|
187
|
-
content_tag(:tr, &block)
|
188
|
-
end
|
189
|
-
|
190
|
-
def th(val)
|
191
|
-
content_tag(:th, val)
|
192
|
-
end
|
193
|
-
|
194
201
|
def td(val)
|
195
|
-
|
202
|
+
tag.td(value_as_string(val))
|
196
203
|
end
|
197
204
|
|
198
205
|
def value_as_string(val)
|
@@ -209,11 +216,10 @@ module HtmlFormat
|
|
209
216
|
|
210
217
|
def table_class(info)
|
211
218
|
if @options[:depth] == 0
|
212
|
-
|
213
|
-
"table #{info[:css_class]} #{@options[:table_class]}".squish.scan(/\S+/).uniq.join(' ')
|
219
|
+
['table', info[:css_class], @options[:table_class]].join(' ').squish.scan(/\S+/).uniq.join(' ')
|
214
220
|
else
|
215
|
-
#
|
216
|
-
'table table-condensed'
|
221
|
+
# Keep nested tables small and avoid decorations
|
222
|
+
['table', 'table-condensed']
|
217
223
|
end
|
218
224
|
end
|
219
225
|
end
|
data/lib/html_format/version.rb
CHANGED
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|