wrap_it 0.2.0 → 1.0.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.
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