w3c_validators 1.0.2 → 1.1
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.
- data/CHANGELOG +4 -0
- data/lib/w3c_validators/css_validator.rb +8 -7
- data/lib/w3c_validators/feed_validator.rb +6 -5
- data/lib/w3c_validators/markup_validator.rb +13 -15
- data/lib/w3c_validators/nu_validator.rb +4 -3
- data/lib/w3c_validators/validator.rb +23 -5
- data/test/test_helper.rb +2 -4
- metadata +76 -37
data/CHANGELOG
CHANGED
@@ -109,12 +109,13 @@ protected
|
|
109
109
|
|
110
110
|
|
111
111
|
def parse_soap_response(response) # :nodoc:
|
112
|
-
doc =
|
112
|
+
doc = Nokogiri::XML(response)
|
113
|
+
doc.remove_namespaces!
|
113
114
|
|
114
115
|
result_params = {}
|
115
116
|
|
116
117
|
{:uri => 'uri', :checked_by => 'checkedby', :validity => 'validity', :css_level => 'csslevel'}.each do |local_key, remote_key|
|
117
|
-
if val = doc.
|
118
|
+
if val = doc.at('cssvalidationresponse ' + remote_key)
|
118
119
|
result_params[local_key] = val.text
|
119
120
|
end
|
120
121
|
end
|
@@ -122,17 +123,17 @@ protected
|
|
122
123
|
results = Results.new(result_params)
|
123
124
|
|
124
125
|
['warninglist', 'errorlist'].each do |list_type|
|
125
|
-
doc.
|
126
|
+
doc.css(list_type).each do |message_list|
|
126
127
|
|
127
|
-
if uri_node = message_list.
|
128
|
+
if uri_node = message_list.at('uri')
|
128
129
|
uri = uri_node.text
|
129
130
|
end
|
130
131
|
|
131
132
|
[:warning, :error].each do |msg_type|
|
132
|
-
message_list.
|
133
|
+
message_list.css(msg_type.to_s).each do |message|
|
133
134
|
message_params = {}
|
134
|
-
message.
|
135
|
-
message_params[el.name.to_sym] = el.text
|
135
|
+
message.children.each do |el|
|
136
|
+
message_params[el.name.to_sym] = el.text unless el.blank?
|
136
137
|
end
|
137
138
|
message_params[:uri] = uri
|
138
139
|
results.add_message(msg_type, message_params)
|
@@ -81,12 +81,13 @@ protected
|
|
81
81
|
#
|
82
82
|
# Returns W3CValidators::Results.
|
83
83
|
def parse_soap_response(response) # :nodoc:
|
84
|
-
doc =
|
84
|
+
doc = Nokogiri::XML(response)
|
85
|
+
doc.remove_namespaces!
|
85
86
|
|
86
87
|
result_params = {}
|
87
88
|
|
88
89
|
{:uri => 'uri', :checked_by => 'checkedby', :validity => 'validity'}.each do |local_key, remote_key|
|
89
|
-
if val = doc.
|
90
|
+
if val = doc.at('feedvalidationresponse ' + remote_key)
|
90
91
|
result_params[local_key] = val.text
|
91
92
|
end
|
92
93
|
end
|
@@ -94,10 +95,10 @@ protected
|
|
94
95
|
results = Results.new(result_params)
|
95
96
|
|
96
97
|
[:warning, :error].each do |msg_type|
|
97
|
-
doc.
|
98
|
+
doc.css(msg_type.to_s).each do |message|
|
98
99
|
message_params = {}
|
99
|
-
message.
|
100
|
-
message_params[el.name.to_sym] = el.text
|
100
|
+
message.children.each do |el|
|
101
|
+
message_params[el.name.to_sym] = el.text unless el.blank?
|
101
102
|
end
|
102
103
|
results.add_message(msg_type, message_params)
|
103
104
|
end
|
@@ -130,7 +130,6 @@ protected
|
|
130
130
|
else
|
131
131
|
response = send_request(options, :post)
|
132
132
|
end
|
133
|
-
|
134
133
|
@results = parse_soap_response(response.body)
|
135
134
|
end
|
136
135
|
@results
|
@@ -169,36 +168,35 @@ protected
|
|
169
168
|
#
|
170
169
|
# Returns W3CValidators::Results.
|
171
170
|
def parse_soap_response(response) # :nodoc:
|
172
|
-
doc =
|
171
|
+
doc = Nokogiri::XML(response)
|
172
|
+
doc.remove_namespaces!
|
173
173
|
|
174
174
|
result_params = {}
|
175
175
|
|
176
|
-
{:doctype => '
|
177
|
-
:checked_by => '
|
178
|
-
if val = doc.
|
176
|
+
{:doctype => 'doctype', :uri => 'uri', :charset => 'charset',
|
177
|
+
:checked_by => 'checkedby', :validity => 'validity'}.each do |local_key, remote_key|
|
178
|
+
if val = doc.css(remote_key)
|
179
179
|
result_params[local_key] = val.text
|
180
180
|
end
|
181
181
|
end
|
182
182
|
|
183
183
|
results = Results.new(result_params)
|
184
184
|
|
185
|
-
{:warning => '
|
186
|
-
doc.
|
185
|
+
{:warning => 'warnings warning', :error => 'errorlist error'}.each do |local_type, remote_type|
|
186
|
+
doc.css(remote_type).each do |message|
|
187
187
|
message_params = {}
|
188
|
-
message.
|
189
|
-
message_params[el.name.to_sym] = el.text
|
188
|
+
message.children do |el|
|
189
|
+
message_params[el.name.to_sym] = el.text unless el.blank?
|
190
190
|
end
|
191
191
|
results.add_message(local_type, message_params)
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
-
doc.
|
196
|
-
|
197
|
-
results.add_message(:error, {:mesage => m.text})
|
198
|
-
end
|
195
|
+
doc.css("Fault Reason Text").each do |message|
|
196
|
+
results.add_message(:error, {:mesage => message.text})
|
199
197
|
end
|
200
|
-
|
201
|
-
doc.
|
198
|
+
|
199
|
+
doc.css("markupvalidationresponse debug").each do |debug|
|
202
200
|
results.add_debug_message(debug.attribute('name').value, debug.text)
|
203
201
|
end
|
204
202
|
return results
|
@@ -2,7 +2,7 @@ require 'json'
|
|
2
2
|
|
3
3
|
module W3CValidators
|
4
4
|
class NuValidator < Validator
|
5
|
-
MARKUP_VALIDATOR_URI = 'http://validator.nu/'
|
5
|
+
MARKUP_VALIDATOR_URI = 'http://html5.validator.nu/'
|
6
6
|
|
7
7
|
# Create a new instance of the NuValidator.
|
8
8
|
#
|
@@ -16,6 +16,7 @@ module W3CValidators
|
|
16
16
|
#
|
17
17
|
# See Validator#new for proxy server options.
|
18
18
|
def initialize(options = {})
|
19
|
+
options[:parser] = 'html'
|
19
20
|
if options[:validator_uri]
|
20
21
|
@validator_uri = URI.parse(options[:validator_uri])
|
21
22
|
options.delete(options[:validator_uri])
|
@@ -62,11 +63,11 @@ module W3CValidators
|
|
62
63
|
protected
|
63
64
|
def validate(options) # :nodoc:
|
64
65
|
options = get_request_options(options)
|
65
|
-
|
66
|
+
|
66
67
|
if options.has_key?(:doc)
|
67
68
|
response = send_request(options, :get)
|
68
69
|
else
|
69
|
-
response = send_request(options, :post)
|
70
|
+
response = send_request(options, :post, false, :content)
|
70
71
|
end
|
71
72
|
|
72
73
|
@results = parse_json_response(response.body)
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'cgi'
|
2
2
|
require 'net/http'
|
3
3
|
require 'uri'
|
4
|
-
require '
|
4
|
+
require 'json'
|
5
|
+
require 'nokogiri'
|
5
6
|
|
6
7
|
require 'w3c_validators/exceptions'
|
7
8
|
require 'w3c_validators/constants'
|
@@ -39,7 +40,7 @@ module W3CValidators
|
|
39
40
|
# +request_mode+ must be either <tt>:get</tt>, <tt>:head</tt> or <tt>:post</tt>.
|
40
41
|
#
|
41
42
|
# Returns Net::HTTPResponse.
|
42
|
-
def send_request(options, request_mode = :get)
|
43
|
+
def send_request(options, request_mode = :get, following_redirect = false, params_to_post = nil)
|
43
44
|
response = nil
|
44
45
|
results = nil
|
45
46
|
|
@@ -60,13 +61,30 @@ module W3CValidators
|
|
60
61
|
response = http.get(@validator_uri.path + '?' + query)
|
61
62
|
when :post
|
62
63
|
# send a multipart form request
|
63
|
-
|
64
|
-
|
64
|
+
if params_to_post
|
65
|
+
post = {}
|
66
|
+
[params_to_post].flatten.each do |param|
|
67
|
+
post[param] = options.delete(param)
|
68
|
+
end
|
69
|
+
else
|
70
|
+
post = options
|
71
|
+
options = {}
|
72
|
+
end
|
73
|
+
|
74
|
+
qs = create_query_string_data(options)
|
75
|
+
|
76
|
+
query, boundary = create_multipart_data(post)
|
77
|
+
response = http.post2(@validator_uri.path + '?' + qs, query, "Content-type" => "multipart/form-data; boundary=" + boundary)
|
65
78
|
else
|
66
79
|
raise ArgumentError, "request_mode must be either :get, :head or :post"
|
67
80
|
end
|
68
81
|
end
|
69
82
|
|
83
|
+
if response.kind_of?(Net::HTTPRedirection) and response['location'] and not following_redirect
|
84
|
+
options[:url] = response['location']
|
85
|
+
return send_request(options, request_mode, true)
|
86
|
+
end
|
87
|
+
|
70
88
|
response.value
|
71
89
|
return response
|
72
90
|
|
@@ -135,7 +153,7 @@ module W3CValidators
|
|
135
153
|
when Net::HTTPServerException, SocketError
|
136
154
|
msg = "unable to connect to the validator at #{@validator_uri} (response was #{e.message})."
|
137
155
|
raise ValidatorUnavailable, msg, caller
|
138
|
-
when
|
156
|
+
when JSON::ParserError, Nokogiri::XML::SyntaxError
|
139
157
|
msg = "unable to parse the response from the validator."
|
140
158
|
raise ParsingError, msg, caller
|
141
159
|
else
|
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require 'rubygems'
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
+
require 'iconv'
|
5
3
|
require 'test/unit'
|
6
4
|
require 'w3c_validators'
|
7
5
|
|
metadata
CHANGED
@@ -1,36 +1,47 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0
|
3
|
-
specification_version: 1
|
4
2
|
name: w3c_validators
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
-
|
11
|
-
|
12
|
-
homepage: http://code.dunae.ca/w3c_validators
|
13
|
-
rubyforge_project:
|
14
|
-
description: W3C Validators is a Ruby wrapper for the World Wide Web Consortium's online validation services.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
hash: 13
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
version: "1.1"
|
25
10
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
11
|
authors:
|
30
12
|
- Alex Dunae
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-10-20 00:00:00 -07:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: nokogiri
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description: W3C Validators is a Ruby wrapper for the World Wide Web Consortium's online validation services.
|
35
|
+
email: code@dunae.ca
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files:
|
41
|
+
- README.rdoc
|
42
|
+
- CHANGELOG
|
43
|
+
- LICENSE
|
31
44
|
files:
|
32
|
-
- lib/w3c_validators
|
33
|
-
- lib/w3c_validators.rb
|
34
45
|
- lib/w3c_validators/constants.rb
|
35
46
|
- lib/w3c_validators/css_validator.rb
|
36
47
|
- lib/w3c_validators/exceptions.rb
|
@@ -40,10 +51,10 @@ files:
|
|
40
51
|
- lib/w3c_validators/nu_validator.rb
|
41
52
|
- lib/w3c_validators/results.rb
|
42
53
|
- lib/w3c_validators/validator.rb
|
54
|
+
- lib/w3c_validators.rb
|
43
55
|
- README.rdoc
|
44
56
|
- CHANGELOG
|
45
57
|
- LICENSE
|
46
|
-
test_files:
|
47
58
|
- test/test_css_validator.rb
|
48
59
|
- test/test_exceptions.rb
|
49
60
|
- test/test_feed_validator.rb
|
@@ -51,21 +62,49 @@ test_files:
|
|
51
62
|
- test/test_html5_validator.rb
|
52
63
|
- test/test_markup_validator.rb
|
53
64
|
- test/test_proxy.rb
|
65
|
+
has_rdoc: true
|
66
|
+
homepage: http://code.dunae.ca/w3c_validators
|
67
|
+
licenses: []
|
68
|
+
|
69
|
+
post_install_message:
|
54
70
|
rdoc_options:
|
55
71
|
- --all
|
56
72
|
- --inline-source
|
57
73
|
- --line-numbers
|
58
74
|
- --charset
|
59
75
|
- utf-8
|
60
|
-
|
61
|
-
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
hash: 3
|
84
|
+
segments:
|
85
|
+
- 0
|
86
|
+
version: "0"
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
hash: 3
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
version: "0"
|
68
96
|
requirements: []
|
69
97
|
|
70
|
-
|
71
|
-
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 1.3.7
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: Wrapper for the World Wide Web Consortium's online validation services.
|
103
|
+
test_files:
|
104
|
+
- test/test_css_validator.rb
|
105
|
+
- test/test_exceptions.rb
|
106
|
+
- test/test_feed_validator.rb
|
107
|
+
- test/test_helper.rb
|
108
|
+
- test/test_html5_validator.rb
|
109
|
+
- test/test_markup_validator.rb
|
110
|
+
- test/test_proxy.rb
|