htmlgrid 1.2.3 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87d0fe1b57b1446781886b5c03fff8f9eaef864515f05cfb0312269bb933b925
4
- data.tar.gz: c134762161a92b02cd1e8658fb22efd6a2d0d89f57c9d088b05236dfd5a3b9dc
3
+ metadata.gz: ac32c5daad4ba30a32d15b25f2e7204a333847a571b86d6dc4ff3674327ffd7a
4
+ data.tar.gz: 521a04676dbb15f3522c1c5defd8d1813bc8bf87cb1a7ca7cf5982b02e2e1589
5
5
  SHA512:
6
- metadata.gz: bb5d41e32a404dd906968f050859a7312466d01ce71c57afd8deabb48fbf8caa0884f450e61b59524abeb9cf7d0e224757df0712203163a3243148ac7c323f19
7
- data.tar.gz: 02c89a8f66c5ce317a14f144d42d9f174ac62f3ae9e63ef1fca735df94ebe504ff69cf259f2aa3500af1fad5fdf02ab0b1b5de70e95f4d19d0dc0733e3b95f3e
6
+ metadata.gz: 14e4e35e3639f44ff835416fedd0ec82471e179e6cdeead718aac1bdf49657d558412bf1c52797f82fd366bff37f9cfa3291c284f85f1dde2c6c119fb451918f
7
+ data.tar.gz: 4134060a38dee891f9da25d635c3e65956ce8e94943c1e0bbdd262f34bee18a07c1c19a6df548f1db75f0f2a178189453b81efa79704c7c1a1c5bd1d6298e652
@@ -172,7 +172,7 @@ module HtmlGrid
172
172
  def escape(txt)
173
173
  @@html_entities.each_with_object(txt.to_s.dup) { |map, str|
174
174
  char, entity = map
175
- str.gsub!(char, "&" << entity << ";")
175
+ str.gsub!(char, "&" + entity + ";")
176
176
  }
177
177
  end
178
178
 
@@ -180,8 +180,8 @@ module HtmlGrid
180
180
  def escape_symbols(txt)
181
181
  esc = ""
182
182
  txt.to_s.each_byte { |byte|
183
- esc << if (entity = @@symbol_entities[byte])
184
- "&" << entity << ";"
183
+ esc += if (entity = @@symbol_entities[byte])
184
+ "&" + entity + ";"
185
185
  else
186
186
  byte
187
187
  end
@@ -37,9 +37,9 @@ module HtmlGrid
37
37
  def to_html(context)
38
38
  res = ""
39
39
  @grid&.each_with_index { |div, idx|
40
- res << context.div(tag_attributes(idx)) {
40
+ res += context.div(tag_attributes(idx)) {
41
41
  div.flatten.inject("") { |html, item|
42
- html << if item.respond_to?(:to_html)
42
+ html += if item.respond_to?(:to_html)
43
43
  item.to_html(context).force_encoding("utf-8")
44
44
  else
45
45
  item.to_s
@@ -62,10 +62,10 @@ module HtmlGrid
62
62
  else
63
63
  attrs.store("href", @dojo_tooltip)
64
64
  end
65
- html << context.div(attrs)
65
+ html += context.div(attrs)
66
66
  elsif @dojo_tooltip.respond_to?(:to_html)
67
67
  @dojo_tooltip.attributes.update(attrs)
68
- html << @dojo_tooltip.to_html(context).force_encoding("utf-8")
68
+ html += @dojo_tooltip.to_html(context).force_encoding("utf-8")
69
69
  end
70
70
  unless html.empty? || dojo_parse_on_load
71
71
  html << context.script("type" => "text/javascript") {
@@ -73,7 +73,7 @@ module HtmlGrid
73
73
  }
74
74
  end
75
75
  # call original dynamic_html
76
- dojo_dynamic_html(context) << html
76
+ "#{dojo_dynamic_html(context)}#{html}"
77
77
  end
78
78
  end
79
79
  end
@@ -114,7 +114,7 @@ module HtmlGrid
114
114
  ].join(",")
115
115
  args.store("data-dojo-config", config)
116
116
  args.store("src", dojo_path)
117
- headers << context.script(args)
117
+ headers += context.script(args)
118
118
  args = {"type" => "text/javascript"}
119
119
  headers << context.script(args) {
120
120
  package_paths = self.class::DOJO_REQUIRE.map { |req|
data/lib/htmlgrid/form.rb CHANGED
@@ -63,11 +63,10 @@ module HtmlGrid
63
63
  private
64
64
 
65
65
  def hidden_fields(context)
66
- "" <<
67
- context.hidden("flavor", @lookandfeel.flavor) <<
68
- context.hidden("language", @lookandfeel.language) <<
66
+ context.hidden("flavor", @lookandfeel.flavor) +
67
+ context.hidden("language", @lookandfeel.language) +
69
68
  context.hidden({"NAME" => "event", "ID" => "event",
70
- "VALUE" => event.to_s}) <<
69
+ "VALUE" => event.to_s}) +
71
70
  context.hidden("state_id", @session.state.object_id.to_s)
72
71
  end
73
72
 
data/lib/htmlgrid/grid.rb CHANGED
@@ -96,10 +96,10 @@ module HtmlGrid
96
96
  def component_html(cgi)
97
97
  html = ""
98
98
  @components.each { |component|
99
- html << if component.respond_to? :to_html
100
- component.to_html(cgi).to_s.dup.force_encoding("utf-8")
99
+ if component.respond_to? :to_html
100
+ html += component.to_html(cgi).to_s.dup.force_encoding("utf-8")
101
101
  else
102
- component.to_s
102
+ html += component.to_s
103
103
  end
104
104
  }
105
105
  html = "&nbsp;" if html.empty?
@@ -162,7 +162,7 @@ module HtmlGrid
162
162
  span = 1
163
163
  @fields.each { |field|
164
164
  if span < 2
165
- html << field.to_html(cgi)
165
+ html += field.to_html(cgi)
166
166
  span = field.colspan
167
167
  else
168
168
  span -= 1
data/lib/htmlgrid/list.rb CHANGED
@@ -90,7 +90,7 @@ module HtmlGrid
90
90
  ystep = step.at(1)
91
91
  components.each { |matrix, component|
92
92
  key = lookandfeel_key(component)
93
- header_key = "th_" << key.to_s
93
+ header_key = "th_" + key.to_s
94
94
  if (txt = @lookandfeel.lookup(header_key))
95
95
  if self.class::SORT_HEADER
96
96
  @grid.add(sort_link(header_key, matrix, component), *matrix)
@@ -113,7 +113,7 @@ module HtmlGrid
113
113
 
114
114
  def meta_tags(context)
115
115
  self.class::META_TAGS.inject("") { |inj, properties|
116
- inj << context.meta(properties)
116
+ inj += context.meta(properties)
117
117
  }
118
118
  end
119
119
 
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  module HtmlGrid
4
- VERSION = "1.2.3"
4
+ VERSION = "1.2.4"
5
5
  end
data/test/test_grid.rb CHANGED
@@ -255,15 +255,15 @@ class TestGrid < Minitest::Test
255
255
  assert_equal(expected, @grid.to_html(CGI.new))
256
256
  @grid.add(nil, 1, 1)
257
257
  @grid.add_style("bar", 0, 1, 2)
258
- expected = '<TABLE cellspacing="0"><TR><TD class="foo">&nbsp;</TD>'
259
- expected << '<TD>&nbsp;</TD></TR><TR><TD class="bar">&nbsp;</TD>'
260
- expected << '<TD class="bar">&nbsp;</TD></TR></TABLE>'
258
+ expected = '<TABLE cellspacing="0"><TR><TD class="foo">&nbsp;</TD>'+
259
+ '<TD>&nbsp;</TD></TR><TR><TD class="bar">&nbsp;</TD>' +
260
+ '<TD class="bar">&nbsp;</TD></TR></TABLE>'
261
261
  assert_equal(expected, @grid.to_html(CGI.new))
262
262
  @grid.add_style("foobar", 0, 0, 2, 2)
263
- expected = '<TABLE cellspacing="0"><TR><TD class="foobar">&nbsp;</TD>'
264
- expected << '<TD class="foobar">&nbsp;</TD></TR>'
265
- expected << '<TR><TD class="foobar">&nbsp;</TD>'
266
- expected << '<TD class="foobar">&nbsp;</TD></TR></TABLE>'
263
+ expected = '<TABLE cellspacing="0"><TR><TD class="foobar">&nbsp;</TD>' +
264
+ '<TD class="foobar">&nbsp;</TD></TR>' +
265
+ '<TR><TD class="foobar">&nbsp;</TD>' +
266
+ '<TD class="foobar">&nbsp;</TD></TR></TABLE>'
267
267
  assert_equal(expected, @grid.to_html(CGI.new))
268
268
  end
269
269
 
@@ -292,9 +292,9 @@ class TestGrid < Minitest::Test
292
292
  def test_push
293
293
  @grid.add("bar", 4, 0)
294
294
  @grid.push("foo")
295
- expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>&nbsp;</TD>'
296
- expected << "<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>bar</TD></TR>"
297
- expected << '<TR><TD colspan="5">foo</TD></TR></TABLE>'
295
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>&nbsp;</TD>' +
296
+ "<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>bar</TD></TR>" +
297
+ '<TR><TD colspan="5">foo</TD></TR></TABLE>'
298
298
  assert_equal(expected, @grid.to_html(CGI.new))
299
299
  end
300
300
 
data/test/test_label.rb CHANGED
@@ -109,10 +109,10 @@ class TestLabel < Minitest::Test
109
109
  def test_to_html1
110
110
  composite = StubLabelComposite.new(StubLabelModel.new, @session)
111
111
  expected = '<TABLE cellspacing="0"><TR>'
112
- expected << '<TD><LABEL for="componentname">Label</LABEL></TD>'
113
- expected << "<TD>component</TD></TR>"
114
- expected << '<TR><TD><LABEL for="componentname">Named Label</LABEL></TD>'
115
- expected << "<TD>component</TD></TR></TABLE>"
112
+ expected += '<TD><LABEL for="componentname">Label</LABEL></TD>'
113
+ expected += "<TD>component</TD></TR>"
114
+ expected += '<TR><TD><LABEL for="componentname">Named Label</LABEL></TD>'
115
+ expected += "<TD>component</TD></TR></TABLE>"
116
116
  assert_equal(expected, composite.to_html(CGI.new))
117
117
  end
118
118
 
@@ -93,8 +93,7 @@ class TestTemplate < Minitest::Test
93
93
  end
94
94
 
95
95
  def test_to_html
96
- result = ""
97
- result << @template.to_html(CGI.new)
96
+ result = @template.to_html(CGI.new)
98
97
  expected = [
99
98
  "<TITLE>Test</TITLE>",
100
99
  '<LINK rel="stylesheet" type="text/css" async="true" href="http://testserver.com:80/resources/gcc/test.css">',
@@ -111,8 +110,7 @@ class TestTemplate < Minitest::Test
111
110
  @lookandfeel.should_receive(:lookup).with(:html_title).and_return("html_title").by_default
112
111
  @lookandfeel.should_receive(:lookup).with(any).and_return(nil).by_default
113
112
  @template = Template.new(nil, @lookandfeel, nil)
114
- result = ""
115
- result << @template.to_html(CGI.new)
113
+ result = @template.to_html(CGI.new)
116
114
  expected = [
117
115
  "<TITLE>html_title</TITLE>",
118
116
  "this is a dummy CSS file, which should be inlined",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: htmlgrid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaomi Hatakeyama, Zeno R.R. Davatz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 1980-01-01 00:00:00.000000000 Z
11
+ date: 2025-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sbsm
@@ -189,7 +189,6 @@ files:
189
189
  - lib/htmlgrid/button.rb
190
190
  - lib/htmlgrid/centeredcomposite.rb
191
191
  - lib/htmlgrid/component.rb
192
- - lib/htmlgrid/component.rb~
193
192
  - lib/htmlgrid/composite.rb
194
193
  - lib/htmlgrid/datevalue.rb
195
194
  - lib/htmlgrid/div.rb
@@ -236,12 +235,10 @@ files:
236
235
  - lib/htmlgrid/urllink.rb
237
236
  - lib/htmlgrid/value.rb
238
237
  - lib/htmlgrid/version.rb
239
- - lib/htmlgrid/version.rb~
240
238
  - test/stub/cgi.rb
241
239
  - test/suite.rb
242
240
  - test/test_add_row.rb
243
241
  - test/test_component.rb
244
- - test/test_component.rb~
245
242
  - test/test_composite.rb
246
243
  - test/test_datevalue.rb
247
244
  - test/test_divlist.rb
@@ -260,8 +257,9 @@ files:
260
257
  homepage: https://github.com/zdavatz/htmlgrid/
261
258
  licenses:
262
259
  - GPL v2.1
263
- metadata: {}
264
- post_install_message:
260
+ metadata:
261
+ changelog_uri: https://github.com/zdavatz/htmlgrid//blob/master/History.md
262
+ post_install_message:
265
263
  rdoc_options: []
266
264
  require_paths:
267
265
  - lib
@@ -276,8 +274,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
276
274
  - !ruby/object:Gem::Version
277
275
  version: '0'
278
276
  requirements: []
279
- rubygems_version: 3.3.20
280
- signing_key:
277
+ rubygems_version: 3.5.3
278
+ signing_key:
281
279
  specification_version: 4
282
280
  summary: HtmlGrid is a Html-ToolKit for Ruby Webframeworks.
283
281
  test_files: []
@@ -1,252 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- #--
4
- # HtmlGrid -- HyperTextMarkupLanguage Framework
5
- # Copyright (C) 2003 ywesee - intellectual capital connected
6
- # Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
7
- #
8
- # This library is free software; you can redistribute it and/or
9
- # modify it under the terms of the GNU Lesser General Public
10
- # License as published by the Free Software Foundation; either
11
- # version 2.1 of the License, or (at your option) any later version.
12
- #
13
- # This library is distributed in the hope that it will be useful,
14
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
- # Lesser General Public License for more details.
17
- #
18
- # You should have received a copy of the GNU Lesser General Public
19
- # License along with this library; if not, write to the Free Software
20
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
- #
22
- # ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
23
- # htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
24
- #
25
- # HtmlGrid::Component -- htmlgrid -- 23.12.2012 -- mhatakeyama@ywesee.com
26
- # HtmlGrid::Component -- htmlgrid -- 23.10.2002 -- hwyss@ywesee.com
27
- #++
28
-
29
- module HtmlGrid
30
- class Component
31
- # sets the 'class' html-attribute
32
- CSS_CLASS = nil
33
- # sets the 'id' html-attribute
34
- CSS_ID = nil
35
- # other html-attributes
36
- HTML_ATTRIBUTES = {}
37
- # default http-headers
38
- HTTP_HEADERS = {
39
- "Content-Type" => "text/html",
40
- "Cache-Control" => "no-cache, max-age=3600, must-revalidate"
41
- }
42
- # precede instances of this class with a label?
43
- LABEL = false
44
- @@html_entities = [
45
- ["&", "amp"],
46
- ["<", "lt"],
47
- [">", "gt"]
48
- ] # :nodoc:
49
- @@symbol_entities = {
50
- 34 => "forall",
51
- 36 => "exist",
52
- 42 => "lowast",
53
- 45 => "minus",
54
- 64 => "cong",
55
- 65 => "Alpha", 97 => "alpha",
56
- 66 => "Beta", 98 => "beta",
57
- 67 => "Chi", 99 => "chi",
58
- 68 => "Delta", 100 => "delta",
59
- 69 => "Epsilon", 101 => "epsilon",
60
- 70 => "Phi", 102 => "phi",
61
- 71 => "Gamma", 103 => "gamma",
62
- 72 => "Eta", 104 => "eta",
63
- 73 => "Iota", 105 => "iota",
64
- 75 => "Kappa", 107 => "kappa",
65
- 76 => "Lambda", 108 => "lambda",
66
- 77 => "Mu", 109 => "mu",
67
- 78 => "Nu", 110 => "nu",
68
- 79 => "Omicron", 111 => "omicron",
69
- 80 => "Pi", 112 => "pi",
70
- 81 => "Theta", 113 => "theta",
71
- 82 => "Rho", 114 => "rho",
72
- 83 => "Sigma", 115 => "sigma",
73
- 84 => "Tau", 116 => "tau",
74
- 85 => "Upsilon", 117 => "upsilon",
75
- 86 => "sigmaf",
76
- 87 => "Omega", 119 => "omega",
77
- 88 => "Xi", 120 => "xi",
78
- 89 => "Psi", 121 => "psi",
79
- 90 => "Zeta", 122 => "zeta",
80
- 94 => "perp", 126 => "sim",
81
- 163 => "le",
82
- 165 => "infin",
83
- 166 => "fnof",
84
- 171 => "harr",
85
- 172 => "larr",
86
- 173 => "uarr",
87
- 174 => "rarr",
88
- 175 => "darr",
89
- 179 => "ge",
90
- 181 => "prop",
91
- 182 => "part",
92
- 185 => "ne",
93
- 186 => "equiv",
94
- 187 => "asymp",
95
- 191 => "crarr",
96
- 196 => "otimes",
97
- 197 => "oplus",
98
- 198 => "empty",
99
- 199 => "cap",
100
- 200 => "cup",
101
- 201 => "sup",
102
- 202 => "supe",
103
- 203 => "nsub",
104
- 204 => "sub",
105
- 205 => "sube",
106
- 206 => "isin",
107
- 207 => "notin",
108
- 208 => "ang",
109
- 209 => "nabla",
110
- 213 => "prod",
111
- 214 => "radic",
112
- 215 => "sdot",
113
- 217 => "and",
114
- 218 => "or",
115
- 219 => "hArr",
116
- 220 => "lArr",
117
- 221 => "uArr",
118
- 222 => "rArr",
119
- 223 => "dArr",
120
- 229 => "sum",
121
- 242 => "int"
122
- } # :nodoc:
123
- attr_reader :attributes, :model
124
- attr_accessor :value
125
- def initialize(model, session = nil, container = nil)
126
- @model = model
127
- @session = session
128
- @lookandfeel = session.lookandfeel if session.respond_to?(:lookandfeel)
129
- @container = container
130
- @attributes = self.class::HTML_ATTRIBUTES.dup
131
- if css_class
132
- @attributes.store("class", css_class)
133
- end
134
- if css_id
135
- @attributes.store("id", css_id)
136
- end
137
- @value = nil
138
- @label = self.class::LABEL
139
- init
140
- end
141
-
142
- # delegator to @container, default definition in Form
143
- def autofill?
144
- @container.autofill? if @container.respond_to?(:autofill?)
145
- end
146
-
147
- # gets the 'class' html-attribute if defined
148
- def css_class
149
- @css_class ||= self.class::CSS_CLASS
150
- end
151
-
152
- # sets the 'class' html-attribute
153
- def css_class=(css_class)
154
- @css_class = @attributes["class"] = css_class
155
- end
156
-
157
- # gets the 'id' html-attribute if defined
158
- def css_id
159
- @css_id ||= self.class::CSS_ID
160
- end
161
-
162
- # sets the 'id' html-attribute
163
- def css_id=(css_id)
164
- @css_id = @attributes["id"] = css_id
165
- end
166
-
167
- def dynamic_html(context)
168
- ""
169
- end
170
-
171
- # escape '&', '<' and '>' characters in txt
172
- def escape(txt)
173
- @@html_entities.each_with_object(txt.to_s.dup) { |map, str|
174
- char, entity = map
175
- str.gsub!(char, "&" << entity << ";")
176
- }
177
- end
178
-
179
- # escape symbol-font strings
180
- def escape_symbols(txt)
181
- esc = ""
182
- txt.to_s.each_byte { |byte|
183
- esc << if (entity = @@symbol_entities[byte])
184
- "&" << entity << ";"
185
- else
186
- byte
187
- end
188
- }
189
- esc
190
- end
191
-
192
- # delegator to @container, default definition in Form
193
- def formname
194
- @container.formname if @container.respond_to?(:formname)
195
- end
196
-
197
- def http_headers
198
- self.class::HTTP_HEADERS.dup
199
- end
200
-
201
- # precede this instance with a label?
202
- def label?
203
- @label
204
- end
205
-
206
- attr_writer :label
207
-
208
- def onclick=(onclick)
209
- @attributes["onclick"] = onclick
210
- end
211
-
212
- # delegator to @container, default definition in Template
213
- def onload=(onload)
214
- @container.onload = onload if @container.respond_to? :onload=
215
- end
216
-
217
- # delegator to @container, default definition in Form
218
- def onsubmit=(onsubmit)
219
- @container.onsubmit = onsubmit if @container.respond_to? :onsubmit=
220
- end
221
-
222
- # set a html attribute
223
- def set_attribute(key, value)
224
- @attributes.store(key, value)
225
- end
226
-
227
- def tabindex=(tab)
228
- @attributes.store("tabIndex", tab.to_s)
229
- end
230
-
231
- def to_html(context)
232
- _to_html(context, @value).to_s.encode("utf-8")
233
- end
234
- @@nl2br_ptrn = /(\r\n)|(\n)|(\r)/
235
- def _to_html(context, value = @value)
236
- if value.is_a?(Array)
237
- value.collect { |item| _to_html(context, item) }.join(" ")
238
- elsif value.respond_to?(:to_html)
239
- value.to_html(context).to_s.dup.force_encoding("utf-8")
240
- elsif value&.is_a?(String)
241
- _value = CGI.unescape(value.gsub("+", CGI.escape("+")))
242
- # elsif value&.is_a?(Integer)
243
- # _value = value.to_s
244
- end
245
- end
246
-
247
- private
248
-
249
- def init
250
- end
251
- end
252
- end
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- module HtmlGrid
4
- VERSION = "1.2.2"
5
- end
@@ -1,204 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # HtmlGrid -- HyperTextMarkupLanguage Framework
4
- # Copyright (C) 2003 ywesee - intellectual capital connected
5
- # Hannes Wyss
6
- #
7
- # This library is free software; you can redistribute it and/or
8
- # modify it under the terms of the GNU Lesser General Public
9
- # License as published by the Free Software Foundation; either
10
- # version 2.1 of the License, or (at your option) any later version.
11
- #
12
- # This library is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
- # Lesser General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Lesser General Public
18
- # License along with this library; if not, write to the Free Software
19
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- #
21
- # ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
22
- # htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
23
- #
24
- # TestComponent -- htmlgrid -- 26.11.2002 -- hwyss@ywesee.com
25
-
26
- $: << File.expand_path("../lib", File.dirname(__FILE__))
27
- $: << File.expand_path("../ext", File.dirname(__FILE__))
28
- $: << File.dirname(__FILE__)
29
-
30
- require "minitest/autorun"
31
- require "htmlgrid/component"
32
- require "stub/cgi"
33
-
34
- module HtmlGrid
35
- class Component
36
- attr_reader :session, :container
37
- end
38
- end
39
-
40
- class TestComponent < Minitest::Test
41
- STRING_WITH_SHARP = "Test_#_gartenhat"
42
- STRING_WITH_PLUS = "Test_+_plus"
43
- STRING_WITH_UMLAUT = "Test_with_Umlaut_üé"
44
- class StubAttributeComponent < HtmlGrid::Component
45
- HTML_ATTRIBUTES = {"key" => "val"}
46
- end
47
-
48
- class StubInitComponent < HtmlGrid::Component
49
- attr_reader :init_called
50
- def init
51
- @init_called = true
52
- end
53
- end
54
-
55
- class StubLabelComponent < HtmlGrid::Component
56
- LABEL = true
57
- end
58
-
59
- class StubContainer
60
- attr_accessor :onsubmit
61
- end
62
-
63
- class ToHTMLreturnFrozen
64
- def initialize content
65
- @content = content
66
- end
67
-
68
- def to_html(what)
69
- @content.to_s.freeze
70
- end
71
- end
72
-
73
- def setup
74
- @component = HtmlGrid::Component.new(nil, nil)
75
- end
76
-
77
- def test_initialize1
78
- HtmlGrid::Component.new("foo", "bar")
79
- comp = HtmlGrid::Component.new("foo", "bar")
80
- assert_equal("foo", comp.model)
81
- assert_equal("bar", comp.session)
82
- assert_nil(comp.container)
83
- assert_equal(false, comp.label?)
84
- comp.label = true
85
- assert_equal(true, comp.label?)
86
- end
87
-
88
- def test_initialize2
89
- HtmlGrid::Component.new("foo", "bar", "baz")
90
- comp = HtmlGrid::Component.new("foo", "bar", "baz")
91
- assert_equal("foo", comp.model)
92
- assert_equal("bar", comp.session)
93
- assert_equal("baz", comp.container)
94
- end
95
-
96
- def test_to_html
97
- comp = HtmlGrid::Component.new("foo", "bar", "baz").to_html(CGI.new)
98
- assert_equal("", comp)
99
- end
100
-
101
- # Next is test for https://github.com/zdavatz/oddb.org/issues/118 FrozenError at /de/just-medical
102
- def test_to_html_frozen_empty
103
- comp = HtmlGrid::Component.new("context")
104
- comp.value = ToHTMLreturnFrozen.new("")
105
- result = comp.to_html(CGI.new)
106
- assert_equal("", result)
107
- end
108
-
109
- def test_gartenhag_to_html
110
- comp = HtmlGrid::Component.new("context")
111
- comp.value = STRING_WITH_SHARP
112
- result = comp.to_html(CGI.new)
113
- assert_equal(STRING_WITH_SHARP, result)
114
- end
115
-
116
- def test_minus_to_html
117
- comp = HtmlGrid::Component.new("context")
118
- comp.value = STRING_WITH_PLUS
119
- result = comp.to_html(CGI.new)
120
- assert_equal(STRING_WITH_PLUS, result)
121
- end
122
-
123
- def test_umlaut_to_html
124
- comp = HtmlGrid::Component.new("context")
125
- comp.value = STRING_WITH_UMLAUT
126
- result = comp.to_html(CGI.new)
127
- assert_equal(STRING_WITH_UMLAUT, result)
128
- end
129
-
130
- def test_escaped_STRING_WITH_UMLAUT_to_html
131
- comp = HtmlGrid::Component.new("context")
132
- comp.value = CGI.escape(STRING_WITH_UMLAUT)
133
- result = comp.to_html(CGI.new)
134
- assert_equal(STRING_WITH_UMLAUT, result)
135
- end
136
-
137
- def test_initialize3
138
- comp = StubAttributeComponent.new("foo", "bar")
139
- expected = {"key" => "val"}
140
- assert_respond_to(comp, :attributes)
141
- assert_equal(expected, comp.attributes)
142
- assert_equal(expected, StubAttributeComponent::HTML_ATTRIBUTES)
143
- comp.attributes.store("other", "val")
144
- expected2 = {"key" => "val", "other" => "val"}
145
- assert_equal(expected2, comp.attributes)
146
- assert_equal(expected, StubAttributeComponent::HTML_ATTRIBUTES)
147
- assert_equal({}, @component.attributes)
148
- assert_equal({}, HtmlGrid::Component::HTML_ATTRIBUTES)
149
- @component.attributes.store("third", "val")
150
- expected = {"third" => "val"}
151
- assert_equal(expected, @component.attributes)
152
- assert_equal({}, HtmlGrid::Component::HTML_ATTRIBUTES)
153
- end
154
-
155
- def test_initialize4
156
- comp = StubInitComponent.new("foo", "bar")
157
- assert_equal(true, comp.init_called)
158
- end
159
-
160
- def test_initialize5
161
- comp = StubLabelComponent.new(nil, nil)
162
- assert_equal(true, comp.label?)
163
- end
164
-
165
- def test_integer_to_html
166
- comp = HtmlGrid::Component.new("context")
167
- comp.value = 3
168
- result = comp.to_html(CGI.new)
169
- assert_equal("xx", result)
170
- end
171
-
172
- def test_escape
173
- txt = "Guten Tag! & wie gehts uns denn heute? '<' schlechter oder '>' besser?"
174
- control = txt.dup
175
- expected = "Guten Tag! &amp; wie gehts uns denn heute? '&lt;' schlechter oder '&gt;' besser?"
176
- assert_equal(expected, @component.escape(txt))
177
- assert_equal(control, txt)
178
- assert_equal(expected, @component.escape(txt))
179
- end
180
-
181
- def test_escape_symbols
182
- txt = "\263"
183
- expected = "&ge;"
184
- assert_equal(expected, @component.escape_symbols(txt))
185
- end
186
-
187
- def test_onsubmit
188
- @component.onsubmit = "submitted"
189
- assert_equal({}, @component.attributes)
190
- cont = StubContainer.new
191
- comp = HtmlGrid::Component.new("foo", "bar", cont)
192
- comp.onsubmit = "submitted"
193
- assert_equal("submitted", cont.onsubmit)
194
- end
195
-
196
- def test_set_attribute
197
- assert_equal({}, @component.attributes)
198
- @component.set_attribute("href", "http://www.ywesee.com")
199
- expected = {
200
- "href" => "http://www.ywesee.com"
201
- }
202
- assert_equal(expected, @component.attributes)
203
- end
204
- end