html_validation 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +1 -1
- data/README.rdoc +7 -2
- data/html_validation.gemspec +1 -0
- data/lib/html_validation/html_validation_result.rb +12 -3
- data/lib/html_validation/page_validations.rb +28 -1
- data/lib/html_validation/version.rb +1 -1
- data/spec/html_validation_spec.rb +23 -0
- metadata +9 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 16841ce4c4a97f2e7e43df68c179c705d7c409a1
|
4
|
+
data.tar.gz: 4e2d18c9de31d6ae7a7661b718cb1846b61204b4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 64c6c31360e9137adf41e1144ff96719acdbe7d02be336c43003b66b8878b965a3e2a44c211cf363868e7536cff83d67fdf4a248ac8d2bd882dece40be1bd954
|
7
|
+
data.tar.gz: aaabae9bb5e3fe2a328ddc96a694b2b9de26c3a068acd01ac847e9d3c84bb7598dd52123d1866baf5ab16e8387f4167d0dd7b50ed48526d2333f03354211cc5a
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -53,14 +53,19 @@ On linux/OS X machines, confirm the right installation path using: which tidy
|
|
53
53
|
|
54
54
|
HTMLValidation.show_warnings = false
|
55
55
|
|
56
|
+
If you want to ignore specific errors, you can do the following :
|
57
|
+
|
58
|
+
HTMLValidation.ignored_attribute_errors = ['tabindex']
|
59
|
+
HTMLValidation.ignored_tag_errors = ['inline']
|
60
|
+
HTMLValidation.ignored_errors = ['missing li']
|
61
|
+
|
56
62
|
|
57
63
|
|
58
64
|
== Non-RSpec Usage:
|
59
65
|
|
60
66
|
require 'html_validation'
|
61
67
|
|
62
|
-
|
63
|
-
h = HTMLValidation.new
|
68
|
+
h = PageValidations::HTMLValidation.new
|
64
69
|
v = h.validation("<html>foo</html>", 'http://somesite.com/index.html')
|
65
70
|
|
66
71
|
# Note: The second argument (resource) just serves as an identifier used to
|
data/html_validation.gemspec
CHANGED
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), '..', 'html_validation')
|
|
3
3
|
|
4
4
|
|
5
5
|
class HTMLValidationResult
|
6
|
-
attr_accessor :resource, :html, :exceptions
|
6
|
+
attr_accessor :resource, :html, :exceptions, :options
|
7
7
|
|
8
8
|
include PageValidations
|
9
9
|
|
@@ -19,7 +19,7 @@ class HTMLValidationResult
|
|
19
19
|
@exceptions = ''
|
20
20
|
@datapath = datapath
|
21
21
|
@tidy_flags = (HTMLValidation.default_tidy_flags + tidy_flags).uniq
|
22
|
-
|
22
|
+
@options = options
|
23
23
|
valid?
|
24
24
|
end
|
25
25
|
|
@@ -99,11 +99,20 @@ class HTMLValidationResult
|
|
99
99
|
# accepted exception strings will remain valid.
|
100
100
|
def filter(str)
|
101
101
|
str.gsub!(/^line.*trimming empty.*\n/, '') # the messages about empty are overzealous, and not invalid
|
102
|
-
str.gsub!(/^line.*proprietary.*\n/, '') if
|
102
|
+
str.gsub!(/^line.*proprietary.*\n/, '') if options[:ignore_proprietary] # if you use IE only attributes like wrap, or spellcheck or things not in standard
|
103
|
+
str.gsub!(/^line.*(?:Error|Warning):.*<\/?(?:#{options[:ignored_tag_errors].join('|')})>.*\n/, '') if options[:ignored_tag_errors] && options[:ignored_tag_errors].any?
|
104
|
+
str.gsub!(/^line.*(?:Error|Warning):.* attribute \"(?:#{options[:ignored_attribute_errors].join('|')})\".*\n/, '') if options[:ignored_attribute_errors] && options[:ignored_attribute_errors].any?
|
105
|
+
if options[:ignored_errors] && options[:ignored_errors].any? && str.gsub(/^line.*(?:Error|Warning):/, '') =~ ignored_errors_regex
|
106
|
+
str.gsub!(Regexp.new(/^line.*(?:Error|Warning):/.source + '.*' + ignored_errors_regex.source + '.*' +/\n/.source), '')
|
107
|
+
end
|
103
108
|
str.gsub(/line [0-9]+ column [0-9]+ -/, '')
|
104
109
|
# /line [0-9]+ column [0-9]+ - / + =~ "line 1 column 1 - Warning: missing <!DOCTYPE> declaration"
|
105
110
|
end
|
106
111
|
|
112
|
+
def ignored_errors_regex
|
113
|
+
/(?:#{options[:ignored_errors].join('|')})/
|
114
|
+
end
|
115
|
+
|
107
116
|
def validate
|
108
117
|
stdin, stdout, stderr = Open3.popen3(tidy_command)
|
109
118
|
stdin.puts @html
|
@@ -21,6 +21,33 @@ module PageValidations
|
|
21
21
|
|
22
22
|
class HTMLValidation
|
23
23
|
|
24
|
+
def self.result_attributes *names
|
25
|
+
@@result_attributes = names.each do |name|
|
26
|
+
class_eval(%Q{
|
27
|
+
def self.#{name}=(obj)
|
28
|
+
@@#{name} = obj
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.#{name}
|
32
|
+
@@#{name}
|
33
|
+
end
|
34
|
+
})
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def result_attributes_and_values
|
39
|
+
{}.tap do |res|
|
40
|
+
@@result_attributes.each do |attr|
|
41
|
+
res[attr] = self.class.send attr
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
result_attributes :ignored_errors, :ignored_attribute_errors, :ignored_tag_errors
|
47
|
+
self.ignored_attribute_errors = []
|
48
|
+
self.ignored_tag_errors = []
|
49
|
+
self.ignored_errors = []
|
50
|
+
|
24
51
|
@@default_tidy_flags = ['-quiet', '-indent']
|
25
52
|
|
26
53
|
# The data_folder is where we store our output. options[:tidyopts], which defaults to "-qi"
|
@@ -40,7 +67,7 @@ module PageValidations
|
|
40
67
|
def initialize(folder_for_data = nil, tidy_flags = [], options={})
|
41
68
|
self.data_folder = folder_for_data || default_result_file_path
|
42
69
|
@tidy_flags = tidy_flags
|
43
|
-
@options = options
|
70
|
+
@options = result_attributes_and_values.merge options
|
44
71
|
end
|
45
72
|
|
46
73
|
|
@@ -89,6 +89,29 @@ describe "HTMLValidation" do
|
|
89
89
|
result.exceptions.should_not be_empty
|
90
90
|
end
|
91
91
|
|
92
|
+
it 'should ignore ignored_attribute_errors' do
|
93
|
+
HTMLValidation.ignored_attribute_errors = ['tabindex']
|
94
|
+
h = HTMLValidation.new()
|
95
|
+
result = h.validation(good_html.gsub('<body>','<body><span tabindex="-1">blabla</span>'), "http://mywarningsite.com")
|
96
|
+
result.valid?.should be_true
|
97
|
+
HTMLValidation.ignored_attribute_errors = []
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should ignored_tag_errors' do
|
101
|
+
HTMLValidation.ignored_tag_errors = ['inline']
|
102
|
+
h = HTMLValidation.new()
|
103
|
+
result = h.validation(good_html.gsub('<body>','<body><inline>rrr</inline>'), "http://mywarningsite.com")
|
104
|
+
result.valid?.should be_true
|
105
|
+
HTMLValidation.ignored_tag_errors = []
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'should ignored_errors' do
|
109
|
+
HTMLValidation.ignored_errors = ['inline']
|
110
|
+
h = HTMLValidation.new()
|
111
|
+
result = h.validation(good_html.gsub('<body>','<body><inline>rrr</inline>'), "http://mywarningsite.com")
|
112
|
+
result.valid?.should be_true
|
113
|
+
HTMLValidation.ignored_errors = []
|
114
|
+
end
|
92
115
|
|
93
116
|
describe "when launching HTML Tidy" do
|
94
117
|
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html_validation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Eric Beland
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-03-21 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: HTML Validation lets you validate html locally. Lets you build html validation
|
15
14
|
into your test suite, but break the rules if you must.
|
@@ -40,32 +39,31 @@ files:
|
|
40
39
|
- spec/html_validation_spec.rb
|
41
40
|
- spec/spec_helper.rb
|
42
41
|
homepage: https://github.com/ericbeland/html_validation
|
43
|
-
licenses:
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata: {}
|
44
45
|
post_install_message:
|
45
46
|
rdoc_options: []
|
46
47
|
require_paths:
|
47
48
|
- lib
|
48
49
|
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
55
|
requirements:
|
57
|
-
- -
|
56
|
+
- - '>='
|
58
57
|
- !ruby/object:Gem::Version
|
59
58
|
version: '0'
|
60
59
|
requirements: []
|
61
60
|
rubyforge_project:
|
62
|
-
rubygems_version:
|
61
|
+
rubygems_version: 2.2.1
|
63
62
|
signing_key:
|
64
|
-
specification_version:
|
63
|
+
specification_version: 4
|
65
64
|
summary: Local HTML validation for tests and RSpec.
|
66
65
|
test_files:
|
67
66
|
- spec/helpers/html_validation_helpers.rb
|
68
67
|
- spec/html_validation_matcher_spec.rb
|
69
68
|
- spec/html_validation_spec.rb
|
70
69
|
- spec/spec_helper.rb
|
71
|
-
has_rdoc:
|