wrap_it 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/.yardopts +3 -0
  4. data/README.md +67 -66
  5. data/lib/wrap_it.rb +16 -16
  6. data/lib/wrap_it/arguments.rb +368 -0
  7. data/lib/wrap_it/base.rb +56 -47
  8. data/lib/wrap_it/callbacks.rb +24 -5
  9. data/lib/wrap_it/capture_array.rb +140 -0
  10. data/lib/wrap_it/container.rb +69 -25
  11. data/lib/wrap_it/derived_attributes.rb +22 -6
  12. data/lib/wrap_it/enums.rb +44 -34
  13. data/lib/wrap_it/frameworks.rb +7 -3
  14. data/lib/wrap_it/helpers.rb +66 -1
  15. data/lib/wrap_it/html.rb +149 -0
  16. data/lib/wrap_it/html_class.rb +164 -183
  17. data/lib/wrap_it/html_data.rb +28 -15
  18. data/lib/wrap_it/link.rb +40 -17
  19. data/lib/wrap_it/sections.rb +90 -2
  20. data/lib/wrap_it/switches.rb +33 -29
  21. data/lib/wrap_it/text_container.rb +83 -10
  22. data/lib/wrap_it/version.rb +2 -1
  23. data/spec/frameworks/log/development.log +2108 -0
  24. data/spec/integration/base_spec.rb +2 -2
  25. data/spec/integration/container_spec.rb +3 -3
  26. data/spec/integration/examples_spec.rb +16 -15
  27. data/spec/integration/text_container_spec.rb +3 -3
  28. data/spec/lib/arguments_array_spec.rb +37 -27
  29. data/spec/lib/arguments_spec.rb +153 -0
  30. data/spec/lib/base_spec.rb +2 -25
  31. data/spec/lib/callbacks_spec.rb +1 -1
  32. data/spec/lib/container_spec.rb +1 -1
  33. data/spec/lib/derived_attributes_spec.rb +1 -1
  34. data/spec/lib/enums_spec.rb +2 -3
  35. data/spec/lib/html_class_spec.rb +269 -80
  36. data/spec/lib/html_data_spec.rb +18 -12
  37. data/spec/lib/html_spec.rb +124 -0
  38. data/spec/lib/link_spec.rb +2 -2
  39. data/spec/lib/sections_spec.rb +1 -1
  40. data/spec/lib/switches_spec.rb +3 -3
  41. data/spec/lib/text_container_spec.rb +2 -2
  42. data/spec/support/example_groups/{wrap_it_example_group.rb → wrapped_example_group.rb} +5 -5
  43. data/wrap_it.gemspec +2 -0
  44. metadata +15 -8
  45. data/lib/wrap_it/arguments_array.rb +0 -128
  46. data/lib/wrap_it/module_helpers.rb +0 -23
@@ -1,118 +1,307 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe WrapIt::HTMLClass do
4
- it_behaves_like 'Base module'
4
+ describe 'self.sanitize' do
5
+ it { expect(described_class.sanitize).to match_array [] }
5
6
 
6
- it 'has self.html_class and #html_class methods' do
7
- wrapper_class.class_eval { html_class :a, [:b, 'c'] }
8
- expect(wrapper.html_class).to eq %w(a b c)
9
- sub_class = Class.new(wrapper_class) { html_class :a, [:d, 'e'] }
10
- expect(sub_class.new(template_wrapper).html_class).to eq %w(a d e b c)
11
- end
7
+ it { expect(described_class.sanitize('test')).to match_array %w(test) }
8
+
9
+ it 'removes all except strings and symbols' do
10
+ expect(described_class.sanitize(0, :some, true, nil, Object, 'test'))
11
+ .to match_array %w(some test)
12
+ end
12
13
 
13
- describe '#html_class_prefix' do
14
- it 'returns empty string by default' do
15
- expect(wrapper.html_class_prefix).to eq ''
14
+ it 'removes repeated classes' do
15
+ expect(described_class.sanitize('a', :a, 'b')).to match_array %w(a b)
16
16
  end
17
17
 
18
- it 'returns value setted by class method' do
19
- wrapper_class.class_eval { html_class_prefix 'e-' }
20
- expect(wrapper.html_class_prefix).to eq 'e-'
18
+ it 'flats recursive arrays' do
19
+ expect(described_class.sanitize(:a, [:b, [:c, :d, :a]]))
20
+ .to match_array %w(a b c d)
21
21
  end
22
22
 
23
- it 'returns derived value' do
24
- wrapper_class.class_eval { html_class_prefix 'e-' }
25
- sub_class = Class.new(wrapper_class)
26
- expect(sub_class.new(template_wrapper).html_class_prefix).to eq 'e-'
23
+ it 'removes repeated and trailing spaces' do
24
+ expect(described_class.sanitize(" some \n\ttest", 'class array '))
25
+ .to match_array %w(some test class array)
27
26
  end
28
27
  end
29
28
 
30
- it 'has #add_html_class with chaining' do
31
- expect(wrapper.add_html_class(:test).options[:class]).to eq %w(test)
32
- @wrapper = nil
33
- expect(wrapper.add_html_class(:a, 'b').options[:class]).to eq %w(a b)
34
- @wrapper = nil
35
- expect(
36
- wrapper.add_html_class(:a, [:b, :c]).options[:class]
37
- ).to eq %w(a b c)
29
+ it 'overrides #&' do
30
+ subject << 'a b c'
31
+ expect(subject & %w(b d c)).to match_array %w(b c)
32
+ expect(subject & 'b').to match_array %w(b)
33
+ expect(subject & %w(b)).to be_kind_of described_class
38
34
  end
39
35
 
40
- it 'has #remove_html_class with chaining' do
41
- expect(
42
- wrapper.add_html_class(:a, :b).remove_html_class('a').options[:class]
43
- ).to eq %w(b)
36
+ it 'overrides #<<' do
37
+ expect(subject << 'a').to equal subject
38
+ expect(subject << [0, 1, :b]).to match_array %w(a b)
39
+ expect(subject << 'c').to match_array %w(a b c)
44
40
  end
45
41
 
46
- it 'has #html_class? method' do
47
- expect(wrapper.add_html_class(:a1, :b1).html_class?('a1')).to be_true
48
- expect(wrapper.html_class?(:a1, :b1)).to be_true
49
- expect(wrapper.html_class?(:a1, :b2)).to be_false
50
- expect(wrapper.html_class?(:a2)).to be_false
51
- expect(wrapper.html_class?(/\d+/)).to be_true
52
- expect(wrapper.html_class?(%w(a1 c1))).to be_true
53
- expect(wrapper.html_class? { |x| x[0] == 'a' }).to be_true
42
+ it 'overrides #+' do
43
+ subject << 'a b c'
44
+ expect(subject + %w(b d c)).to match_array %w(a b c d)
45
+ expect(subject + 'b').to match_array %w(a b c)
46
+ expect(subject + %w(b)).to be_kind_of described_class
54
47
  end
55
48
 
56
- it 'has #no_html_class? method' do
57
- expect(wrapper.add_html_class(:a1, :b1).no_html_class?('a2')).to be_true
58
- expect(wrapper.no_html_class?(:a2, :b2)).to be_true
59
- expect(wrapper.no_html_class?(:a1, :b2)).to be_false
60
- expect(wrapper.no_html_class?(:a1)).to be_false
61
- expect(wrapper.no_html_class?(/\d+./)).to be_true
62
- expect(wrapper.no_html_class?(%w(c1 d1))).to be_true
63
- expect(wrapper.no_html_class? { |x| x[0] == 'c' }).to be_true
49
+ it 'overrides #-' do
50
+ subject << 'a b c d'
51
+ expect(subject - %w(b c j)).to match_array %w(a d)
52
+ expect(subject - 'd').to match_array %w(a b c)
53
+ expect(subject - %w(b)).to be_kind_of described_class
64
54
  end
65
55
 
66
- it 'has html_class setter' do
67
- wrapper.html_class = [:a, :b]
68
- expect(wrapper.options[:class]).to eq %w(a b)
56
+ it 'overrides #[] and #slice' do
57
+ subject << 'a b c'
58
+ %i([] slice).each do |m|
59
+ expect(subject.send(m, 1)).to eq 'b'
60
+ expect(subject.send(m, 0, 2)).to match_array %w(a b)
61
+ expect(subject.send(m, 0, 2)).to be_kind_of described_class
62
+ expect(subject.send(m, 1..-1)).to match_array %w(b c)
63
+ expect(subject.send(m, 1..-1)).to be_kind_of described_class
64
+ end
69
65
  end
70
66
 
71
- describe 'documentation examples' do
72
- let(:element) { wrapper }
67
+ it 'overrides #slice!' do
68
+ subject = WrapIt::HTMLClass.new('a b c')
69
+ expect(subject.slice!(1)).to eq 'b'
70
+ expect(subject).to match_array %w(a c)
71
+ subject = WrapIt::HTMLClass.new('a b c')
72
+ expect(subject.slice!(0, 2)).to match_array %w(a b)
73
+ expect(subject).to match_array %w(c)
74
+ subject = WrapIt::HTMLClass.new('a b c')
75
+ expect(subject.slice!(0, 2)).to be_kind_of described_class
76
+ subject = WrapIt::HTMLClass.new('a b c')
77
+ expect(subject.slice!(1..-1)).to match_array %w(b c)
78
+ expect(subject).to match_array %w(a)
79
+ subject = WrapIt::HTMLClass.new('a b c')
80
+ expect(subject.slice!(1..-1)).to be_kind_of described_class
81
+ end
82
+
83
+ it 'overrides #clear' do
84
+ subject << 'a b c'
85
+ expect(subject.clear).to equal subject
86
+ expect(subject).to be_empty
87
+ end
88
+
89
+ it 'overrides #collect' do
90
+ subject << 'a b c'
91
+ expect(subject.collect { |x| x + '1' }).to match_array %w(a1 b1 c1)
92
+ expect(subject.collect { }).to be_kind_of described_class
93
+ expect(subject.collect).to be_kind_of Enumerator
94
+ end
95
+
96
+ it 'overrides #collect!' do
97
+ subject << 'a b c'
98
+ expect(subject.collect! { |x| [x, 'n'] }).to match_array %w(a b c n)
99
+ expect(subject.collect! { }).to equal subject
100
+ expect(subject.collect!).to be_kind_of Enumerator
101
+ end
102
+
103
+ it 'overrides #concat' do
104
+ subject << 'a b c'
105
+ expect(subject.concat(%w(b d c))).to match_array %w(a b c d)
106
+ expect(subject.concat('e')).to match_array %w(a b c d e)
107
+ expect(subject.concat(%w(b))).to equal subject
108
+ end
73
109
 
74
- it 'html_class=' do
75
- element.html_class = [:a, 'b', ['c', :d, 'a']]
76
- expect(element.html_class).to eq %w(a b c d)
110
+ it 'overrides #delete' do
111
+ subject << 'a b2 c'
112
+ expect(subject.delete(:a)).to match_array %w(b2 c)
113
+ expect(subject.delete('d')).to match_array %w(b2 c)
114
+ expect(subject.delete('d')).to equal subject
115
+ expect(subject.delete('d', :b2)).to match_array %w(c)
116
+ subject << 'a b2'
117
+ expect(subject.delete(/.\d/, 'c')).to match_array %w(a)
118
+ expect(subject.delete { |x| x == 'a' }).to be_empty
119
+ end
120
+
121
+ %i(index rindex).each do |m|
122
+ it "overrides ##{m}" do
123
+ subject << 'a b2 c'
124
+ expect(subject.index(:a)).to eq 0
125
+ expect(subject.index('d')).to be_nil
126
+ expect(subject.index(['d', :b2])).to eq 1
127
+ expect(subject.index(/.\d/)).to eq 1
128
+ expect(subject.index { |x| x == 'c' }).to eq 2
129
+ expect(subject.index).to be_kind_of Enumerator
77
130
  end
131
+ end
78
132
 
79
- it 'add_html_class' do
80
- element.html_class = 'a'
81
- element.add_html_class :b, :c, ['d', :c, :e, 'a']
82
- expect(element.html_class).to include(*%w(a b c d e))
83
- expect(element.html_class.size).to eq 5
133
+ it 'overrides #drop' do
134
+ subject << 'a b c'
135
+ expect(subject.drop(1)).to match_array %w(b c)
136
+ expect(subject.drop(1)).to be_kind_of described_class
137
+ expect(subject).to match_array %w(a b c)
138
+ end
139
+
140
+ {drop_while: %w(c d), reject: %w(c), select: %w(a b d)}.each do |m, v|
141
+ it "overrides ##{m}" do
142
+ subject << 'a b c d'
143
+ expect(subject.send(m) { |x| x != 'c' }).to match_array v
144
+ expect(subject.send(m) { |x| x != 'c' }).to be_kind_of described_class
145
+ expect(subject.send(m)).to be_kind_of Enumerator
84
146
  end
147
+ end
85
148
 
86
- it 'remove_html_class' do
87
- element.add_html_class %w(a b c d e)
88
- element.remove_html_class :b, ['c', :e]
89
- expect(element.html_class).to eq %w(a d)
149
+ {map: %w(ac bc cc dc)}.each do |m, v|
150
+ it "overrides ##{m}" do
151
+ subject << 'a b c d'
152
+ expect(subject.send(m) { |x| x = x + 'c' }).to match_array v
153
+ expect(subject.send(m) { |x| x = x + 'c' }).to be_kind_of described_class
154
+ expect(subject.send(m)).to be_kind_of Enumerator
90
155
  end
156
+ end
157
+
158
+ it "overrides #map!" do
159
+ subject << 'a b c d'
160
+ expect(subject.map! { |x| x = x + 'c' }).to equal subject
161
+ expect(subject).to match_array %w(ac bc cc dc)
162
+ expect(subject.map!).to be_kind_of Enumerator
163
+ end
91
164
 
92
- it 'html_class? with Symbol or String' do
93
- element.html_class = [:a, :b, :c]
94
- expect(element.html_class?(:a)).to be_true
95
- expect(element.html_class?(:d)).to be_false
96
- expect(element.html_class?(:a, 'b')).to be_true
97
- expect(element.html_class?(:a, :d)).to be_false
165
+ it "overrides #reject!" do
166
+ subject << 'a b1 c1 d'
167
+ expect(subject.reject! { |x| /\d/ =~ x }).to equal subject
168
+ expect(subject).to match_array %w(a d)
169
+ expect(subject.reject!).to be_kind_of Enumerator
170
+ end
171
+
172
+ %i(each each_index).each do |m|
173
+ it "overrides ##{m}" do
174
+ subject << 'a b c'
175
+ i = 0
176
+ expect(subject.send(m) { |x| i += 1 }).to equal subject
177
+ expect(i).to eq 3
178
+ expect(subject.send(m)).to be_kind_of Enumerator
98
179
  end
180
+ end
99
181
 
100
- it 'html_class? with Regexp' do
101
- element.html_class = [:some, :test]
102
- expect(element.html_class?(/some/)).to be_true
103
- expect(element.html_class?(/some/, /bad/)).to be_false
104
- expect(element.html_class?(/some/, :test)).to be_true
182
+ {first: %w(a b), last: %w(c b)}.each do |m, v|
183
+ it "overrides ##{m}" do
184
+ expect(subject.send(m)).to be_nil
185
+ subject << 'a b c'
186
+ expect(subject.send(m)).to eq v[0]
187
+ expect(subject.send(m, 2)).to match_array v
188
+ expect(subject.send(m, 2)).to be_kind_of described_class
105
189
  end
190
+ end
191
+
192
+ it "overrides #pop" do
193
+ expect(subject.pop).to be_nil
194
+ subject << 'a b c'
195
+ expect(subject.pop).to eq 'c'
196
+ expect(subject).to match_array %w(a b)
197
+ subject << 'c'
198
+ expect(subject.pop(2)).to match_array %w(b c)
199
+ expect(subject).to match_array %w(a)
200
+ subject << 'b c'
201
+ expect(subject.pop(2)).to be_kind_of described_class
202
+ end
203
+
204
+ it "overrides #shift" do
205
+ expect(subject.shift).to be_nil
206
+ subject << 'a b c'
207
+ expect(subject.shift).to eq 'a'
208
+ expect(subject).to match_array %w(b c)
209
+ subject << 'a'
210
+ expect(subject.shift(2)).to match_array %w(b c)
211
+ expect(subject).to match_array %w(a)
212
+ subject << 'b c'
213
+ expect(subject.shift(2)).to be_kind_of described_class
214
+ end
215
+
216
+ it 'overrides #include?' do
217
+ subject << 'a b2 c'
218
+ expect(subject.include?(:a)).to be_true
219
+ expect(subject.include?('d')).to be_false
220
+ expect(subject.include?('d', :b2)).to be_false
221
+ expect(subject.include?('a', :b2)).to be_true
222
+ expect(subject.include?(/.\d/)).to be_true
223
+ expect(subject.include?(proc { |x| x == 'c' })).to be_true
224
+ end
225
+
226
+ it 'overrides #replace' do
227
+ subject << 'a b c'
228
+ expect(subject.replace('d e f')).to match_array %w(d e f)
229
+ expect(subject.replace('a b')).to equal subject
230
+ end
231
+
232
+ it 'overrides #keep_if' do
233
+ subject << 'a b c'
234
+ expect(subject.keep_if { |x| x != 'c' }).to match_array %w(a b)
235
+ expect(subject.keep_if { |x| x != 'c' }).to equal subject
236
+ expect(subject.keep_if).to be_kind_of Enumerator
237
+ end
238
+
239
+ it 'overrides #push' do
240
+ subject << 'a b c'
241
+ expect(subject.push('a d')).to equal subject
242
+ expect(subject).to match_array %w(a b c d)
243
+ end
244
+
245
+ it 'overrides #unshift' do
246
+ subject << 'a b c'
247
+ expect(subject.unshift('a d')).to equal subject
248
+ expect(subject).to match_array %w(a d b c)
249
+ end
250
+
251
+ it 'overrides #values_at' do
252
+ subject << 'a b c'
253
+ expect(subject.values_at(0, 2)).to match_array %w(a c)
254
+ expect(subject.values_at(1)).to be_kind_of described_class
255
+ end
256
+
257
+ it 'overrides #|' do
258
+ subject << 'a b c'
259
+ expect(subject | 'b c d').to match_array %w(a b c d)
260
+ expect(subject | 'b c d').to be_kind_of described_class
261
+ end
106
262
 
107
- it 'html_class? with Array' do
108
- element.html_class = [:a, :b, :c]
109
- expect(element.html_class?(%w(a d))).to be_true
110
- expect(element.html_class?(%w(e d))).to be_false
263
+ {
264
+ :'<=>' => [%w(b c d e)],
265
+ :== => [%w(b c d e)],
266
+ at: [1],
267
+ count: [],
268
+ count: ['a'],
269
+ delete_at: [1],
270
+ fetch: [1],
271
+ hash: [],
272
+ inspect: [],
273
+ to_s: [],
274
+ join: ['-'],
275
+ length: [],
276
+ size: [],
277
+ take: [2],
278
+ to_a: [],
279
+ }.each do |m, args|
280
+ it "passes through ##{m}" do
281
+ a = %w(a b c d)
282
+ subject << a
283
+ expect(subject.send(m, *args)).to eq a.send(m, *args)
111
284
  end
285
+ end
286
+
287
+ it 'passes through #empty?' do
288
+ expect(subject.empty?).to be_true
289
+ end
112
290
 
113
- it 'html_class? with block' do
114
- element.html_class = [:a, :b, :c]
115
- expect(element.html_class? { |x| x == 'a' }).to be_true
291
+ it 'resticts unusefull methods' do
292
+ %i(
293
+ * []= assoc bsearch combination compact compact! fill flatten flatten!
294
+ insert pack permutation product rassoc repeated_combination rotate
295
+ repeated_permutation reverse reverse! reverse_each sample rotate! shuffle
296
+ shuffle! sort sort! sort_by! transpose uniq uniq! zip flat_map max max_by
297
+ min min_by minmax minmax_by
298
+ ).each do |m|
299
+ expect { subject.send(m) }.to raise_error
116
300
  end
117
301
  end
302
+
303
+ it 'provides #to_html' do
304
+ subject << [:a, :b, :c]
305
+ expect(subject.to_html).to eq 'a b c'
306
+ end
118
307
  end
@@ -1,21 +1,27 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe WrapIt::HTMLData do
4
- it_behaves_like 'Base module'
4
+ describe 'self.sanitize' do
5
+ it { expect(described_class.sanitize).to eq ({}) }
5
6
 
6
- describe '#set_html_data' do
7
- it 'sets data' do
8
- wrapper.set_html_data(:one, 'test')
9
- expect(wrapper.options[:data]).to eq(one: 'test')
7
+ it 'stringifies values' do
8
+ expect(described_class.sanitize(test: 1, subj: 2))
9
+ .to eq(test: '1', subj: '2')
10
+ end
11
+
12
+ it 'splits dashed keys' do
13
+ expect(described_class.sanitize(:'test-me-now' => 1, subj: 2))
14
+ .to eq(test: {me: {now: '1'}}, subj: '2')
10
15
  end
11
- end
12
16
 
13
- describe '#remove_html_data' do
14
- it 'removes data' do
15
- wrapper.set_html_data(:one, 'test')
16
- wrapper.remove_html_data(:one)
17
- expect(wrapper.options[:data]).to be_empty
17
+ it 'parses nested hash' do
18
+ expect(described_class.sanitize(test: {:'me-now' => 1}, subj: 2))
19
+ .to eq(test: {me: {now: '1'}}, subj: '2')
20
+ end
21
+
22
+ it 'removes bogous symbols from keys' do
23
+ expect(described_class.sanitize(test: {:'me_n%ow' => 1}, subj: 2))
24
+ .to eq(test: {me_now: '1'}, subj: '2')
18
25
  end
19
26
  end
20
27
  end
21
-
@@ -0,0 +1,124 @@
1
+ require 'spec_helper'
2
+
3
+ describe WrapIt::HTML, type: :wrapped do
4
+ it_behaves_like 'Base module'
5
+
6
+ describe '#html_data' do
7
+ it 'sets data as {} by default' do
8
+ expect(wrapper.html_data).to be_kind_of(Hash)
9
+ end
10
+ end
11
+
12
+ describe '#html_attr' do
13
+ it 'sets attr as {} by default' do
14
+ expect(wrapper.html_attr).to be_kind_of(Hash)
15
+ end
16
+ end
17
+
18
+ describe '#html_class' do
19
+ it 'sets class HTMLClass by default' do
20
+ expect(wrapper.html_class).to be_kind_of(WrapIt::HTMLClass)
21
+ end
22
+ end
23
+
24
+ it 'has self.html_class and #html_class methods' do
25
+ wrapper_class.class_eval { html_class :a, [:b, 'c'] }
26
+ expect(wrapper.html_class).to match_array %w(a b c)
27
+ sub_class = Class.new(wrapper_class) { html_class :a, [:d, 'e'] }
28
+ expect(sub_class.new(template_wrapper).html_class)
29
+ .to match_array %w(a d e b c)
30
+ end
31
+
32
+ describe '#html_class_prefix' do
33
+ it 'returns empty string by default' do
34
+ expect(wrapper.html_class_prefix).to eq ''
35
+ end
36
+
37
+ it 'returns value setted by class method' do
38
+ wrapper_class.class_eval { html_class_prefix 'e-' }
39
+ expect(wrapper.html_class_prefix).to eq 'e-'
40
+ end
41
+
42
+ it 'returns derived value' do
43
+ wrapper_class.class_eval { html_class_prefix 'e-' }
44
+ sub_class = Class.new(wrapper_class)
45
+ expect(sub_class.new(template_wrapper).html_class_prefix).to eq 'e-'
46
+ end
47
+ end
48
+ end
49
+
50
+ describe WrapIt::HTMLClass do
51
+ it 'has #<< with chaining' do
52
+ expect(subject << :test).to match_array %w(test)
53
+ subject.clear
54
+ expect(subject << :a << 'b').to match_array %w(a b)
55
+ subject.clear
56
+ expect(subject << :a << [:b, :c]).to match_array %w(a b c)
57
+ end
58
+
59
+ it 'has #delete' do
60
+ subject << :a << :b
61
+ expect(subject.delete('a')).to match_array %w(b)
62
+ end
63
+
64
+ it 'has #include? method' do
65
+ subject << [:a1, :b1]
66
+ expect(subject.include?('a1')).to be_true
67
+ expect(subject.include?(:a1, :b1)).to be_true
68
+ expect(subject.include?(:a1, :b2)).to be_false
69
+ expect(subject.include?(:a2)).to be_false
70
+ expect(subject.include?(/\d+/)).to be_true
71
+ expect(subject.include?(%w(a1 c1))).to be_true
72
+ expect(subject.include? { |x| x[0] == 'a' }).to be_true
73
+ end
74
+
75
+ =begin
76
+ describe 'documentation examples' do
77
+ let(:element) { wrapper }
78
+
79
+ it 'html_class=' do
80
+ element.html_class = [:a, 'b', ['c', :d, 'a']]
81
+ expect(element.html_class).to eq %w(a b c d)
82
+ end
83
+
84
+ it 'add_html_class' do
85
+ element.html_class = 'a'
86
+ element.add_html_class :b, :c, ['d', :c, :e, 'a']
87
+ expect(element.html_class).to include(*%w(a b c d e))
88
+ expect(element.html_class.size).to eq 5
89
+ end
90
+
91
+ it 'remove_html_class' do
92
+ element.add_html_class %w(a b c d e)
93
+ element.remove_html_class :b, ['c', :e]
94
+ expect(element.html_class).to eq %w(a d)
95
+ end
96
+
97
+ it 'html_class? with Symbol or String' do
98
+ element.html_class = [:a, :b, :c]
99
+ expect(element.html_class?(:a)).to be_true
100
+ expect(element.html_class?(:d)).to be_false
101
+ expect(element.html_class?(:a, 'b')).to be_true
102
+ expect(element.html_class?(:a, :d)).to be_false
103
+ end
104
+
105
+ it 'html_class? with Regexp' do
106
+ element.html_class = [:some, :test]
107
+ expect(element.html_class?(/some/)).to be_true
108
+ expect(element.html_class?(/some/, /bad/)).to be_false
109
+ expect(element.html_class?(/some/, :test)).to be_true
110
+ end
111
+
112
+ it 'html_class? with Array' do
113
+ element.html_class = [:a, :b, :c]
114
+ expect(element.html_class?(%w(a d))).to be_true
115
+ expect(element.html_class?(%w(e d))).to be_false
116
+ end
117
+
118
+ it 'html_class? with block' do
119
+ element.html_class = [:a, :b, :c]
120
+ expect(element.html_class? { |x| x == 'a' }).to be_true
121
+ end
122
+ end
123
+ =end
124
+ end