code_terminator 0.5.2 → 0.5.3
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/exercises/get_elements.html +1 -0
- data/exercises/html/check_body_tag_exist.html +0 -0
- data/exercises/html/check_comment_text.html +1 -0
- data/exercises/html/check_div_children_exist.html +10 -0
- data/exercises/html/check_div_exist.html +8 -0
- data/exercises/html/check_div_same_children_exist.html +11 -0
- data/exercises/html/check_div_same_empty_children_exist.html +11 -0
- data/exercises/html/check_divs_exist.html +15 -0
- data/exercises/html/check_empty_divs_exist.html +12 -0
- data/exercises/html/check_get_children_in_parent.html +10 -0
- data/exercises/html/check_get_empty_children_in_parent.html +10 -0
- data/exercises/html/check_head_tag_exist.html +0 -0
- data/exercises/{issue21.html → html/check_imgs_empty_exist.html} +2 -1
- data/exercises/{issue20.html → html/check_text_empty_children.html} +2 -2
- data/exercises/html/check_text_empty_parent.html +7 -0
- data/exercises/html/check_text_exists_children.html +8 -0
- data/exercises/html/check_text_exists_parent.html +8 -0
- data/exercises/issue19.html +2 -0
- data/exercises/issue23.html +20 -0
- data/exercises/new_file.html +1 -0
- data/exercises/print_elements.html +1 -0
- data/exercises/read_file.html +1 -0
- data/lib/code_terminator/html.rb +211 -113
- data/lib/code_terminator/html2.rb +657 -0
- data/lib/code_terminator/version.rb +1 -1
- metadata +26 -6
- /data/exercises/{issue18.html → html/check_comment_empty.html} +0 -0
- /data/exercises/{issue16.html → html/check_comment_exist.html} +0 -0
data/lib/code_terminator/html.rb
CHANGED
@@ -62,7 +62,7 @@ class CodeTerminator::Html
|
|
62
62
|
@elements << node
|
63
63
|
|
64
64
|
#search elements from body section
|
65
|
-
if
|
65
|
+
if reader.at('body')
|
66
66
|
node = Hash.new
|
67
67
|
node[:parent] = "html"
|
68
68
|
node[:tag] = "body"
|
@@ -72,8 +72,8 @@ class CodeTerminator::Html
|
|
72
72
|
node = Hash.new
|
73
73
|
node[:parent] = "html"
|
74
74
|
node[:tag] = "body"
|
75
|
-
node[:attribute] = element_attribute.name if
|
76
|
-
node[:value] = element_attribute.value if
|
75
|
+
node[:attribute] = element_attribute.name if element_attribute.name
|
76
|
+
node[:value] = element_attribute.value if element_attribute.value
|
77
77
|
node[:pointer] = element_attribute.pointer_id
|
78
78
|
@elements << node
|
79
79
|
end
|
@@ -81,7 +81,7 @@ class CodeTerminator::Html
|
|
81
81
|
#end search
|
82
82
|
|
83
83
|
#search elements from head section
|
84
|
-
if
|
84
|
+
if reader.at('head')
|
85
85
|
node = Hash.new
|
86
86
|
node[:parent] = "html"
|
87
87
|
node[:tag] = "head"
|
@@ -91,8 +91,10 @@ class CodeTerminator::Html
|
|
91
91
|
node = Hash.new
|
92
92
|
node[:parent] = "head"
|
93
93
|
node[:tag] = child.name
|
94
|
-
node[:content] = child.text if
|
94
|
+
node[:content] = child.text if child.text or child.comment?
|
95
95
|
node[:pointer] = child.pointer_id
|
96
|
+
node[:parent_pointer] = child.parent.pointer_id
|
97
|
+
|
96
98
|
@elements << node
|
97
99
|
else
|
98
100
|
child.attribute_nodes.each do |element_attribute|
|
@@ -105,9 +107,10 @@ class CodeTerminator::Html
|
|
105
107
|
end
|
106
108
|
# node[:tag] = ( ? "text", child.name)
|
107
109
|
node[:content] = child.text if !child.text.nil?
|
108
|
-
node[:attribute] = element_attribute.name if
|
109
|
-
node[:value] = element_attribute.value if
|
110
|
+
node[:attribute] = element_attribute.name if element_attribute.name
|
111
|
+
node[:value] = element_attribute.value if element_attribute.value
|
110
112
|
node[:pointer] = element_attribute.pointer_id
|
113
|
+
node[:parent_pointer] = child.pointer_id
|
111
114
|
@elements << node
|
112
115
|
end
|
113
116
|
end
|
@@ -117,7 +120,7 @@ class CodeTerminator::Html
|
|
117
120
|
#end search elements
|
118
121
|
|
119
122
|
#search elements inside body (children)
|
120
|
-
if
|
123
|
+
if reader.at('body')
|
121
124
|
reader.at('body').children.each do |child|
|
122
125
|
if child.attribute_nodes.empty?
|
123
126
|
node = Hash.new
|
@@ -125,15 +128,17 @@ class CodeTerminator::Html
|
|
125
128
|
node[:tag] = child.name
|
126
129
|
node[:content] = child.text if child.text? or child.comment?
|
127
130
|
node[:pointer] = child.pointer_id
|
131
|
+
node[:parent_pointer] = child.parent.pointer_id
|
128
132
|
@elements << node
|
129
133
|
else
|
130
134
|
child.attribute_nodes.each do |element_attribute|
|
131
135
|
node = Hash.new
|
132
136
|
node[:parent] = "body"
|
133
137
|
node[:tag] = child.name
|
134
|
-
node[:attribute] = element_attribute.name if
|
135
|
-
node[:value] = element_attribute.value if
|
138
|
+
node[:attribute] = element_attribute.name if element_attribute.name
|
139
|
+
node[:value] = element_attribute.value if element_attribute.value
|
136
140
|
node[:pointer] = element_attribute.pointer_id
|
141
|
+
node[:parent_pointer] = child.pointer_id
|
137
142
|
@elements << node
|
138
143
|
end
|
139
144
|
end
|
@@ -225,11 +230,11 @@ class CodeTerminator::Html
|
|
225
230
|
def print_elements(elements)
|
226
231
|
text = ""
|
227
232
|
elements.each do |child|
|
228
|
-
text << "parent = " + child[:parent] + "<br>" if
|
229
|
-
text << "tag = " + child[:tag] + "<br>" if
|
230
|
-
text << "attribute = " + child[:attribute] + "<br>" if
|
231
|
-
text << "value = " + child[:value] + "<br>" if
|
232
|
-
text << "content = " + child[:content] + "<br>" if
|
233
|
+
text << "parent = " + child[:parent] + "<br>" if child[:parent]
|
234
|
+
text << "tag = " + child[:tag] + "<br>" if child[:tag]
|
235
|
+
text << "attribute = " + child[:attribute] + "<br>" if child[:attribute]
|
236
|
+
text << "value = " + child[:value] + "<br>" if child[:value]
|
237
|
+
text << "content = " + child[:content] + "<br>" if child[:content]
|
233
238
|
text << "<hr>"
|
234
239
|
end
|
235
240
|
text
|
@@ -282,95 +287,50 @@ class CodeTerminator::Html
|
|
282
287
|
# code: (String)
|
283
288
|
|
284
289
|
def match(source, code)
|
285
|
-
html_errors = Array.new
|
290
|
+
@html_errors = Array.new
|
291
|
+
html_errors = @html_errors
|
286
292
|
|
287
293
|
code = Nokogiri::HTML(code)
|
288
294
|
|
289
295
|
elements = get_elements(source)
|
290
296
|
|
291
|
-
css_code_checked = Array.new
|
292
297
|
|
293
298
|
exist_in_body = Array.new
|
294
299
|
|
300
|
+
error_elements = Array.new
|
301
|
+
|
302
|
+
errors_count = Array.new
|
303
|
+
|
295
304
|
error333 = nil
|
296
305
|
|
306
|
+
#lista de relaciones entre tags y elementos
|
307
|
+
css_code_checked = Array.new
|
308
|
+
|
309
|
+
|
297
310
|
elements.each do |e|
|
298
311
|
|
312
|
+
if errors_count.select {|element| element[:parent_pointer].to_s == e[:parent_pointer].to_s && element[:tag].to_s == e[:tag]}.count < 1
|
313
|
+
error_element = Hash.new
|
314
|
+
error_element[:tag] = e[:tag]
|
315
|
+
error_element[:parent_pointer] = e[:parent_pointer]
|
316
|
+
error_element[:count] = 0
|
317
|
+
errors_count << error_element
|
318
|
+
end
|
319
|
+
|
299
320
|
item = e[:tag]
|
300
321
|
|
301
322
|
if item == "text" or item == "comment"
|
302
|
-
|
303
323
|
# Check the text
|
304
|
-
if
|
324
|
+
if e[:content]
|
305
325
|
if code.css(e[:parent]).count < 2
|
306
326
|
if code.css(e[:parent]).class == Nokogiri::XML::NodeSet
|
307
|
-
|
308
|
-
|
309
|
-
error330 = nil
|
310
|
-
if code.css(e[:parent]).children.any?
|
311
|
-
|
312
|
-
code.css(e[:parent]).children.each do |node_child|
|
313
|
-
|
314
|
-
if node_child.class == Nokogiri::XML::Comment
|
315
|
-
if e[:content].strip != ""
|
316
|
-
if node_child.text.strip! != e[:content].strip!
|
317
|
-
error330 = new_error(element: e, type: 330, description: "The text inside the comment should be #{e[:content]}")
|
318
|
-
end
|
319
|
-
end
|
320
|
-
@comment_found = true
|
321
|
-
end
|
322
|
-
|
323
|
-
if node_child.class == Nokogiri::XML::Text && item != "comment"
|
324
|
-
if node_child.text.strip != e[:content].strip
|
325
|
-
error330 = new_error(element: e, type: 330, description: "The text inside `<#{e[:parent]}>` should be #{e[:content]}")
|
326
|
-
else
|
327
|
-
text_found = true
|
328
|
-
end
|
329
|
-
end
|
330
|
-
|
331
|
-
end
|
332
|
-
#end each
|
333
|
-
else
|
334
|
-
|
335
|
-
if code.css(e[:parent]).text.strip != e[:content].strip
|
336
|
-
#validate if comment exist and has the expected content
|
337
|
-
if item == "comment"
|
338
|
-
error330 = new_error(element: e, type: 330, description: "The text inside the comment should be #{e[:content]}")
|
339
|
-
@comment_found = true
|
340
|
-
else
|
341
|
-
error330 = new_error(element: e, type: 330, description: "The text inside `<#{e[:parent]}>` should be #{e[:content]}")
|
342
|
-
end
|
343
|
-
else
|
344
|
-
text_found = true
|
345
|
-
end
|
346
|
-
|
347
|
-
end
|
348
|
-
#end if parent has children
|
349
|
-
|
350
|
-
#if comment not found, throw error
|
351
|
-
if !(defined? @comment_found).nil?
|
352
|
-
html_errors << new_error(element: e, type: 404, description: "Remember to add the comment tag") if !@comment_found
|
353
|
-
remove_instance_variable(:@comment_found)
|
354
|
-
end
|
355
|
-
|
356
|
-
if !text_found && !error330.nil?
|
357
|
-
html_errors << error330
|
358
|
-
error330 = nil
|
359
|
-
end
|
327
|
+
#look for children elements with texts or comments
|
328
|
+
look_comment_or_text(code,e)
|
360
329
|
end
|
361
|
-
#end if parent is nodeset
|
362
330
|
else
|
363
|
-
|
364
|
-
code
|
365
|
-
if code_css.text == e[:content]
|
366
|
-
exist = true
|
367
|
-
end
|
368
|
-
end
|
369
|
-
if !exist
|
370
|
-
html_errors << new_error(element: e, type: 330, description: "The text inside `<#{e[:parent]}>` should be #{e[:content]}")
|
371
|
-
end
|
331
|
+
#check if parent tag of the user code has text apart from the children tags
|
332
|
+
look_parent_text(code,e)
|
372
333
|
end
|
373
|
-
#end if parent < 2
|
374
334
|
end
|
375
335
|
#end if content is null
|
376
336
|
|
@@ -379,23 +339,58 @@ class CodeTerminator::Html
|
|
379
339
|
|
380
340
|
if code.css(e[:tag]).length > 0
|
381
341
|
|
382
|
-
|
383
342
|
code.css(e[:tag]).each do |tag|
|
384
343
|
|
385
|
-
|
386
|
-
p "
|
344
|
+
e_check = css_code_checked.select {|element| element[:original_pointer].to_s == e[:pointer].to_s }
|
345
|
+
# p "echeck " + e_check.to_s
|
346
|
+
e_check2 = css_code_checked.select {|element| element[:pointer].to_s == tag.pointer_id.to_s }
|
347
|
+
|
348
|
+
#original_pointer es el pointer del elemento e[]
|
349
|
+
#busca si el original_pointer esta en la lista de relaciones
|
350
|
+
#busca si el pointer del tag esta en la lista de relaciones
|
351
|
+
#cuando un original pointer o un pointer esta en la lista de relaciones, ya no puede volver a ser ingresado en la lista
|
352
|
+
#si el original pointer ya esta en la lista de relaciones, ya no es necesario volver a checarlo
|
353
|
+
check_original_pointer = css_code_checked.select {|element| element[:original_pointer].to_s == e[:pointer].to_s }
|
354
|
+
|
355
|
+
check_add_pointer = css_code_checked.select {|element| element[:pointer].to_s == tag.pointer_id.to_s }
|
356
|
+
|
357
|
+
#si el target pointer- pointer no esta en la lista de check agregar,
|
358
|
+
#si es target-pointer que ya existe + otro pointer da error,
|
359
|
+
#si es target-pointer y si esta, hacer nada.
|
360
|
+
#si pointer ya esta en la lista hacer nada
|
361
|
+
#look for same tags in code
|
362
|
+
|
363
|
+
if check_original_pointer.count == 0
|
364
|
+
if check_add_pointer.count < 1
|
365
|
+
element_checked = Hash.new
|
366
|
+
element_checked[:pointer] = tag.pointer_id
|
367
|
+
element_checked[:tag] = e[:tag]
|
368
|
+
element_checked[:original_pointer] = e[:pointer]
|
369
|
+
element_checked[:original_parent_pointer] = e[:parent_pointer]
|
370
|
+
css_code_checked << element_checked
|
371
|
+
|
372
|
+
|
373
|
+
error_element = errors_count.select {|element| element[:tag].to_s == e[:tag].to_s && element[:parent_pointer].to_s == e[:parent_pointer].to_s}.first
|
374
|
+
error_element[:count] += 1
|
375
|
+
|
376
|
+
else
|
377
|
+
|
378
|
+
end
|
379
|
+
end
|
380
|
+
# end
|
381
|
+
# e_check_exist = nil
|
382
|
+
# end
|
387
383
|
|
388
|
-
p e_check = css_code_checked.select {|element| element[:target_pointer].to_s == e[:pointer].to_s }
|
389
|
-
p e_check2 = css_code_checked.select {|element| element[:pointer].to_s == tag.pointer_id.to_s }
|
390
384
|
if e_check.count < 1 and e_check2.count < 1
|
391
385
|
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
386
|
+
element_checked = Hash.new
|
387
|
+
element_checked[:pointer] = tag.pointer_id
|
388
|
+
element_checked[:tag] = e[:tag]
|
389
|
+
element_checked[:target_pointer] = e[:pointer]
|
390
|
+
element_checked[:target_parent_pointer] = e[:parent_pointer]
|
396
391
|
|
397
392
|
|
398
|
-
if
|
393
|
+
if e[:attribute]
|
399
394
|
# Check the tag's attributes
|
400
395
|
if tag.attribute(e[:attribute]).nil?
|
401
396
|
html_errors << new_error(element: e, type: 334, description: "`<#{e[:tag]}>` should have an attribute named #{e[:attribute]}")
|
@@ -416,37 +411,48 @@ class CodeTerminator::Html
|
|
416
411
|
end
|
417
412
|
|
418
413
|
end #if element checked
|
414
|
+
|
419
415
|
end
|
420
416
|
|
417
|
+
|
418
|
+
# p "respond" + tag.parent.to_s
|
421
419
|
# Check that tags exist within parent tags
|
422
420
|
if tag.first.respond_to? :parent
|
423
421
|
|
424
|
-
|
422
|
+
p "check if exists in parent tags"
|
423
|
+
|
424
|
+
e_check4 = css_code_checked.select {|element| element[:pointer].to_s == e[:pointer].to_s }
|
425
|
+
e_check5 = css_code_checked.select {|element| element[:target_parent_pointer].to_s == e[:parent_pointer].to_s }
|
426
|
+
|
427
|
+
if (tag.count < 2 && tag.first) or (e_check4.count < 1 && e_check5.count < 1)
|
425
428
|
if tag.first.parent.name != e[:parent]
|
426
429
|
html_errors << new_error(element: e, type: 440, description: "Remember to add the `<#{e[:tag]}>` tag inside `<#{e[:parent]}>`")
|
427
430
|
end
|
428
431
|
else
|
429
|
-
|
432
|
+
exist_in_parent = false
|
430
433
|
tag.each do |code_css|
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
if !exist_in_parent
|
436
|
-
html_errors << new_error(element: e, type: 440, description: "Remember to add the `<#{e[:tag]}>` tag inside `<#{e[:parent]}>`")
|
437
|
-
end
|
438
|
-
end
|
434
|
+
exist_in_parent = true if code_css.parent.name == e[:parent]
|
435
|
+
end
|
436
|
+
html_errors << new_error(element: e, type: 440, description: "Remember to add the `<#{e[:tag]}>` tag inside `<#{e[:parent]}>`") if !exist_in_parent
|
437
|
+
end
|
439
438
|
end
|
439
|
+
|
440
|
+
|
440
441
|
end
|
441
442
|
|
443
|
+
|
442
444
|
else
|
445
|
+
"pasa else"
|
443
446
|
# Check that the tag is present
|
444
|
-
|
447
|
+
# p "check if exists in parent"
|
448
|
+
e_check4 = css_code_checked.select {|element| element[:pointer].to_s == e[:pointer].to_s }
|
449
|
+
e_check5 = css_code_checked.select {|element| element[:target_parent_pointer].to_s == e[:parent_pointer].to_s }
|
450
|
+
if code.at_css(e[:tag]).nil? or e_check4.count < 1 and e_check5.count < 1
|
445
451
|
html_errors << new_error(element: e, type: 404, description: "Remember to add the `<#{e[:tag]}>` tag")
|
446
452
|
end
|
447
453
|
end
|
448
454
|
|
449
|
-
if
|
455
|
+
if exist_in_body && !exist_in_body.include?(true) && error333
|
450
456
|
html_errors << error333
|
451
457
|
end
|
452
458
|
exist_in_body = []
|
@@ -454,16 +460,27 @@ class CodeTerminator::Html
|
|
454
460
|
end
|
455
461
|
|
456
462
|
end
|
457
|
-
|
463
|
+
|
464
|
+
errors_count.each do |x|
|
465
|
+
#filtrar por parent
|
466
|
+
# tag_count = code.css(x[:tag]).length
|
467
|
+
tag_count = elements.select {|element| element[:parent_pointer].to_s == x[:parent_pointer].to_s && element[:tag].to_s == x[:tag]}.count
|
468
|
+
|
469
|
+
if tag_count > 1
|
470
|
+
if x[:count] < tag_count
|
471
|
+
html_errors << new_error(element: x[:tag], type: 404, description: "Remember to add the `<#{x[:tag]}>` tag")
|
472
|
+
end
|
473
|
+
end
|
474
|
+
end
|
458
475
|
|
459
476
|
html_errors
|
477
|
+
|
460
478
|
end
|
461
479
|
|
462
480
|
private
|
463
481
|
|
464
482
|
def add_children(parent)
|
465
483
|
parent.children.each do |child|
|
466
|
-
|
467
484
|
if child.attribute_nodes.empty?
|
468
485
|
node = Hash.new
|
469
486
|
node[:parent] = parent.name
|
@@ -474,6 +491,8 @@ class CodeTerminator::Html
|
|
474
491
|
node[:tag] = child.name
|
475
492
|
end
|
476
493
|
node[:content] = child.text if !child.text.nil? and child.class!=Nokogiri::XML::Element
|
494
|
+
node[:pointer] = child.pointer_id
|
495
|
+
node[:parent_pointer] = child.parent.pointer_id
|
477
496
|
@elements << node
|
478
497
|
else
|
479
498
|
child.attribute_nodes.each do |element_attribute|
|
@@ -489,6 +508,8 @@ class CodeTerminator::Html
|
|
489
508
|
end
|
490
509
|
node[:attribute] = element_attribute.name if !element_attribute.name.nil?
|
491
510
|
node[:value] = element_attribute.value if !element_attribute.value.nil?
|
511
|
+
node[:pointer] = element_attribute.pointer_id
|
512
|
+
node[:parent_pointer] = child.pointer_id
|
492
513
|
@elements << node
|
493
514
|
end
|
494
515
|
end
|
@@ -498,17 +519,17 @@ class CodeTerminator::Html
|
|
498
519
|
end
|
499
520
|
|
500
521
|
def remove_empty_text (reader)
|
501
|
-
if
|
522
|
+
if reader.at('head')
|
502
523
|
reader.at('head').children.each do |child|
|
503
|
-
if
|
524
|
+
if child.text
|
504
525
|
child.remove if child.content.to_s.squish.empty? && child.class == Nokogiri::XML::Text
|
505
526
|
end
|
506
527
|
check_children(child) if child.children.any?
|
507
528
|
end
|
508
529
|
end
|
509
|
-
if
|
530
|
+
if reader.at('body')
|
510
531
|
reader.at('body').children.each do |child|
|
511
|
-
if
|
532
|
+
if child.text
|
512
533
|
child.remove if child.content.to_s.squish.empty? && child.class == Nokogiri::XML::Text
|
513
534
|
end
|
514
535
|
check_children(child) if child.children.any?
|
@@ -519,8 +540,8 @@ class CodeTerminator::Html
|
|
519
540
|
|
520
541
|
def check_children(parent)
|
521
542
|
parent.children.each do |child|
|
522
|
-
if
|
523
|
-
child.remove if child.content.to_s.squish.empty?
|
543
|
+
if child.text
|
544
|
+
child.remove if child.content.to_s.squish.empty? && child.class == Nokogiri::XML::Text
|
524
545
|
end
|
525
546
|
check_children(child) if child.children.any?
|
526
547
|
end
|
@@ -537,6 +558,83 @@ class CodeTerminator::Html
|
|
537
558
|
node
|
538
559
|
end
|
539
560
|
|
561
|
+
|
562
|
+
#methods of match
|
563
|
+
def look_comment_or_text(code,e)
|
564
|
+
error330 = nil
|
565
|
+
text_found = false
|
566
|
+
@comment_found = false if e[:tag] == "comment"
|
567
|
+
|
568
|
+
#look for comments or text in code
|
569
|
+
#code, e
|
570
|
+
if code.css(e[:parent]).children.any?
|
571
|
+
#look for comments and text in children of body
|
572
|
+
# code, e
|
573
|
+
#save
|
574
|
+
#return
|
575
|
+
code.css(e[:parent]).children.each do |node_child|
|
576
|
+
#if class of the node is a comment, look in the code
|
577
|
+
# @e, node_child
|
578
|
+
#save error330
|
579
|
+
#return true (flag)
|
580
|
+
if node_child.class == Nokogiri::XML::Comment
|
581
|
+
error330 = new_error(element: e, type: 330, description: "The text inside the comment should be #{e[:content]}") if e[:content].strip != "" && node_child.text.strip! != e[:content].strip!
|
582
|
+
@comment_found = true
|
583
|
+
end
|
584
|
+
|
585
|
+
#if class of node is text and element is not a comment
|
586
|
+
#@e, node_child
|
587
|
+
#save a error330, text_found
|
588
|
+
#return true (flag)
|
589
|
+
if node_child.class == Nokogiri::XML::Text && e[:content] != "comment"
|
590
|
+
node_child.text.strip != e[:content].strip ? error330 = new_error(element: e, type: 330, description: "The text inside `<#{e[:parent]}>` should be #{e[:content]}") : text_found = true
|
591
|
+
end
|
592
|
+
end #each
|
593
|
+
|
594
|
+
else
|
595
|
+
#validate if comment exist and has the expected content in body
|
596
|
+
#code, @e
|
597
|
+
#save @comment_found, text_found
|
598
|
+
if code.css(e[:parent]).text.strip != e[:content].strip
|
599
|
+
if e[:tag] == "comment"
|
600
|
+
error330 = new_error(element: e, type: 330, description: "The text inside the comment should be #{e[:content]}")
|
601
|
+
@comment_found = true
|
602
|
+
else
|
603
|
+
error330 = new_error(element: e, type: 330, description: "The text inside `<#{e[:parent]}>` should be #{e[:content]}")
|
604
|
+
end
|
605
|
+
else
|
606
|
+
text_found = true
|
607
|
+
end
|
608
|
+
end #end if parent has children
|
609
|
+
|
610
|
+
#throw errors of comment or text
|
611
|
+
#if comment not found, throw error
|
612
|
+
if (defined? @comment_found) && !@comment_found
|
613
|
+
@html_errors << new_error(element: e, type: 404, description: "Remember to add the comment tag")
|
614
|
+
remove_instance_variable(:@comment_found) if !@comment_found
|
615
|
+
end
|
616
|
+
|
617
|
+
if !text_found && error330
|
618
|
+
@html_errors << error330
|
619
|
+
error330 = nil
|
620
|
+
end
|
621
|
+
#end throw errors
|
622
|
+
end #end look_comment_or_text
|
623
|
+
|
624
|
+
def look_parent_text(code,e)
|
625
|
+
exist = false
|
626
|
+
#look for text in parent, if found check flag true
|
627
|
+
code.css(e[:parent]).each do |code_css|
|
628
|
+
if code_css.text == e[:content]
|
629
|
+
exist = true
|
630
|
+
end
|
631
|
+
end
|
632
|
+
if !exist
|
633
|
+
@html_errors << new_error(element: e, type: 330, description: "The text inside `<#{e[:parent]}>` should be #{e[:content]}")
|
634
|
+
end
|
635
|
+
end
|
636
|
+
|
637
|
+
|
540
638
|
#end
|
541
639
|
|
542
640
|
end
|