validator.nu 0.0.4 → 0.0.5
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/VERSION +1 -1
- data/lib/validator.nu.rb +30 -15
- data/spec/fixtures/fatal-error-post.json +1 -1
- data/spec/fixtures/fatal-error.json +1 -1
- data/spec/fixtures/no-message-post.json +1 -1
- data/spec/fixtures/no-message.json +1 -1
- data/spec/fixtures/precise-error-post.json +1 -1
- data/spec/fixtures/precise-error.json +1 -1
- data/spec/fixtures/range-error-post.json +1 -1
- data/spec/fixtures/range-error.json +1 -1
- data/spec/fixtures/warning-post.json +1 -1
- data/spec/fixtures/warning.json +1 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/validator_spec.rb +5 -1
- data/validator.nu.gemspec +41 -50
- metadata +24 -44
- data/.gitignore +0 -21
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/lib/validator.nu.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__)
|
2
2
|
|
3
|
+
require 'yajl/http_stream'
|
4
|
+
require 'yajl/gzip'
|
5
|
+
require 'yajl/deflate'
|
6
|
+
|
3
7
|
require 'net/http'
|
4
8
|
require 'cgi'
|
5
9
|
require 'uri'
|
@@ -44,12 +48,13 @@ module Validator
|
|
44
48
|
HOST = "validator.nu"
|
45
49
|
GZIP = false
|
46
50
|
PORT = 80
|
51
|
+
LAX_CONTENT_TYPE = false
|
47
52
|
|
48
53
|
def nu(uri_or_document, options={})
|
49
54
|
if uri_or_document.kind_of?(URI::HTTP)
|
50
|
-
get(uri_or_document, options)
|
55
|
+
get(uri_or_document, options)
|
51
56
|
else
|
52
|
-
post(uri_or_document, options)
|
57
|
+
post(uri_or_document, options)
|
53
58
|
end
|
54
59
|
end
|
55
60
|
|
@@ -63,20 +68,28 @@ module Validator
|
|
63
68
|
begin
|
64
69
|
host = options[:host] || HOST
|
65
70
|
port = options[:port] || PORT
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
71
|
+
laxtype = options[:lax_content_type] || LAX_CONTENT_TYPE
|
72
|
+
|
73
|
+
# http = Net::HTTP.new(host, port)
|
74
|
+
uri = "http://#{host}/?&doc=#{CGI::escape(url.to_s)}&out=json"
|
75
|
+
uri += "&laxtype=yes" if laxtype
|
76
|
+
url = URI.parse uri
|
77
|
+
#STDERR.puts url
|
78
|
+
#url.port = port
|
72
79
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
+
return Yajl::HttpStream.get(url)
|
81
|
+
|
82
|
+
# response = http.start do |http|
|
83
|
+
# http.get(url.path)
|
84
|
+
# end
|
85
|
+
#
|
86
|
+
# if response.kind_of? Net::HTTPSuccess
|
87
|
+
# return response.body
|
88
|
+
# else
|
89
|
+
# STDERR.puts response.body.inspect
|
90
|
+
# raise RemoteException.new("#{response.code}: #{response.message}")
|
91
|
+
# end
|
92
|
+
#
|
80
93
|
rescue Exception => e
|
81
94
|
STDERR.puts "Error contacting validator.nu: #{e}"
|
82
95
|
STDERR.puts e.backtrace.join("\n"), 'debug'
|
@@ -91,6 +104,7 @@ module Validator
|
|
91
104
|
content_type = options[:content_type] || CONTENT_TYPE
|
92
105
|
content_encoding = options[:content_encoding] || CONTENT_ENCODING
|
93
106
|
gzip = options[:gzip] || GZIP
|
107
|
+
laxtype = options[:lax_content_type] || LAX_CONTENT_TYPE
|
94
108
|
|
95
109
|
if gzip
|
96
110
|
content_encoding = 'gzip'
|
@@ -103,6 +117,7 @@ module Validator
|
|
103
117
|
|
104
118
|
http = Net::HTTP.new(host, port)
|
105
119
|
uri = "/?out=json"
|
120
|
+
uri += "&laxtype=yes" if laxtype
|
106
121
|
headers = { 'Content-Type' => content_type, 'Content-Encoding' => content_encoding }
|
107
122
|
|
108
123
|
response = http.start do |http|
|
@@ -1 +1 @@
|
|
1
|
-
{"messages":[{"type":"info","message":"The Content-Type was “application/xhtml+xml”. Using the XML parser (not resolving external entities)."},{"type":"info","message":"Using the preset for XHTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental) based on the root namespace."},{"type":"error","lastLine":6,"lastColumn":10,"subType":"fatal","message":"name expected","extract":"body>\n<p>Fatal &
|
1
|
+
{"messages":[{"type":"info","message":"The Content-Type was “application/xhtml+xml”. Using the XML parser (not resolving external entities)."},{"type":"info","message":"Using the preset for XHTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental) based on the root namespace."},{"type":"error","lastLine":6,"lastColumn":10,"subType":"fatal","message":"name expected","extract":"body>\n<p>Fatal & error</p>\n</b","hiliteStart":15,"hiliteLength":1}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/fatal.xhtml","messages":[{"type":"info","message":"The Content-Type was “application/xhtml+xml”. Using the XML parser (not resolving external entities)."},{"type":"info","message":"Using the preset for XHTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental) based on the root namespace."},{"type":"error","lastLine":6,"lastColumn":10,"subType":"fatal","message":"name expected","extract":"body>\n<p>Fatal &
|
1
|
+
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/fatal.xhtml","messages":[{"type":"info","message":"The Content-Type was “application/xhtml+xml”. Using the XML parser (not resolving external entities)."},{"type":"info","message":"Using the preset for XHTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental) based on the root namespace."},{"type":"error","lastLine":6,"lastColumn":10,"subType":"fatal","message":"name expected","extract":"body>\n<p>Fatal & error</p>\n</b","hiliteStart":15,"hiliteLength":1}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."}]}
|
1
|
+
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/no-message.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."}]}
|
1
|
+
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/no-message.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."},{"type":"error","lastLine":7,"lastColumn":4,"message":"“&” did not start a character reference. (“&” probably should have been escaped as “&”.)","extract":"ead>\n<body>\n<p>&a</p
|
1
|
+
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."},{"type":"error","lastLine":7,"lastColumn":4,"message":"“&” did not start a character reference. (“&” probably should have been escaped as “&”.)","extract":"ead>\n<body>\n<p>&a</p>\n</body>\n","hiliteStart":15,"hiliteLength":1}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/precise-error.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."},{"type":"error","lastLine":7,"lastColumn":4,"message":"“&” did not start a character reference. (“&” probably should have been escaped as “&”.)","extract":"ead>\n<body>\n<p>&a</p
|
1
|
+
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/precise-error.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."},{"type":"error","lastLine":7,"lastColumn":4,"message":"“&” did not start a character reference. (“&” probably should have been escaped as “&”.)","extract":"ead>\n<body>\n<p>&a</p>\n</body>\n","hiliteStart":15,"hiliteLength":1}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"firstColumn":10,"message":"End tag
|
1
|
+
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"firstColumn":10,"message":"End tag “p” seen, but there were open elements.","extract":"\n<p><span></p>\n</bod","hiliteStart":10,"hiliteLength":4},{"type":"error","lastLine":7,"lastColumn":9,"firstColumn":4,"message":"Unclosed element “span”.","extract":"<body>\n<p><span></p>\n<","hiliteStart":10,"hiliteLength":6}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/range-error.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"firstColumn":10,"message":"End tag
|
1
|
+
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/range-error.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"firstColumn":10,"message":"End tag “p” seen, but there were open elements.","extract":"\n<p><span></p>\n</bod","hiliteStart":10,"hiliteLength":4},{"type":"error","lastLine":7,"lastColumn":9,"firstColumn":4,"message":"Unclosed element “span”.","extract":"<body>\n<p><span></p>\n<","hiliteStart":10,"hiliteLength":6}]}
|
@@ -1 +1 @@
|
|
1
|
-
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"message":"“<” in an unquoted attribute value. Probable cause: Missing “>” immediately before.","extract":"y>\n<p class=foo<bar
|
1
|
+
{"messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"message":"“<” in an unquoted attribute value. Probable cause: Missing “>” immediately before.","extract":"y>\n<p class=foo<bar></p>\n</bod","hiliteStart":15,"hiliteLength":1}]}
|
data/spec/fixtures/warning.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/warning.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"message":"“<” in an unquoted attribute value. Probable cause: Missing “>” immediately before.","extract":"y>\n<p class=foo<bar
|
1
|
+
{"url":"http://hsivonen.iki.fi/test/moz/messages-types/warning.html","messages":[{"type":"info","message":"The Content-Type was “text/html”. Using the HTML parser."},{"type":"info","message":"Using the schema for HTML5+ARIA, SVG 1.1 plus MathML 2.0 (experimental)."},{"type":"error","lastLine":7,"lastColumn":13,"message":"“<” in an unquoted attribute value. Probable cause: Missing “>” immediately before.","extract":"y>\n<p class=foo<bar></p>\n</bod","hiliteStart":15,"hiliteLength":1}]}
|
data/spec/spec_helper.rb
CHANGED
data/spec/validator_spec.rb
CHANGED
@@ -58,7 +58,11 @@ describe Validator do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should receive a fatal error result" do
|
61
|
-
fixture = File.open("#{File.dirname(__FILE__)}/fixtures/fatal-error.json").read
|
61
|
+
# fixture = File.open("#{File.dirname(__FILE__)}/fixtures/fatal-error.json").read
|
62
|
+
file = File.new("#{File.dirname(__FILE__)}/fixtures/fatal-error.json", 'r')
|
63
|
+
parser = Yajl::Parser.new
|
64
|
+
fixture = parser.parse(file)
|
65
|
+
|
62
66
|
Validator.nu(
|
63
67
|
URI.parse("http://hsivonen.iki.fi/test/moz/messages-types/fatal.xhtml")
|
64
68
|
).should == fixture
|
data/validator.nu.gemspec
CHANGED
@@ -1,72 +1,63 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "validator.nu"
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Rice"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2011-10-12"
|
13
|
+
s.description = "ruby client library for the validator.nu HTML5 validation API"
|
14
|
+
s.email = "me@davidjrice.co.uk"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
"spec/fixtures/warning.json",
|
47
|
-
"spec/spec_helper.rb",
|
48
|
-
"spec/validator_spec.rb",
|
49
|
-
"test/helper.rb",
|
50
|
-
"test/test_validator.nu.rb",
|
51
|
-
"validator.nu.gemspec"
|
52
|
-
]
|
53
|
-
s.homepage = %q{http://github.com/davidjrice/validator.nu}
|
54
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
55
|
-
s.require_paths = ["lib"]
|
56
|
-
s.rubygems_version = %q{1.3.6}
|
57
|
-
s.summary = %q{ruby client library for the validator.nu HTML5 validation API}
|
58
|
-
s.test_files = [
|
21
|
+
"LICENSE",
|
22
|
+
"README.rdoc",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"lib/validator.nu.rb",
|
26
|
+
"spec/fixtures/fatal-error-post.json",
|
27
|
+
"spec/fixtures/fatal-error.html",
|
28
|
+
"spec/fixtures/fatal-error.json",
|
29
|
+
"spec/fixtures/info-post.json",
|
30
|
+
"spec/fixtures/info.json",
|
31
|
+
"spec/fixtures/info.svg",
|
32
|
+
"spec/fixtures/no-message-post.json",
|
33
|
+
"spec/fixtures/no-message.html",
|
34
|
+
"spec/fixtures/no-message.json",
|
35
|
+
"spec/fixtures/non-document-error-post.json",
|
36
|
+
"spec/fixtures/non-document-error.json",
|
37
|
+
"spec/fixtures/precise-error-post.json",
|
38
|
+
"spec/fixtures/precise-error.html",
|
39
|
+
"spec/fixtures/precise-error.json",
|
40
|
+
"spec/fixtures/range-error-post.json",
|
41
|
+
"spec/fixtures/range-error.html",
|
42
|
+
"spec/fixtures/range-error.json",
|
43
|
+
"spec/fixtures/warning-post.json",
|
44
|
+
"spec/fixtures/warning.html",
|
45
|
+
"spec/fixtures/warning.json",
|
59
46
|
"spec/spec_helper.rb",
|
60
|
-
|
61
|
-
|
62
|
-
|
47
|
+
"spec/validator_spec.rb",
|
48
|
+
"test/helper.rb",
|
49
|
+
"test/test_validator.nu.rb",
|
50
|
+
"validator.nu.gemspec"
|
63
51
|
]
|
52
|
+
s.homepage = "http://github.com/davidjrice/validator.nu"
|
53
|
+
s.require_paths = ["lib"]
|
54
|
+
s.rubygems_version = "1.8.10"
|
55
|
+
s.summary = "ruby client library for the validator.nu HTML5 validation API"
|
64
56
|
|
65
57
|
if s.respond_to? :specification_version then
|
66
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
67
58
|
s.specification_version = 3
|
68
59
|
|
69
|
-
if Gem::Version.new(Gem::
|
60
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
70
61
|
else
|
71
62
|
end
|
72
63
|
else
|
metadata
CHANGED
@@ -1,35 +1,25 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: validator.nu
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
version: 0.0.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- David Rice
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
date: 2010-04-16 00:00:00 +01:00
|
18
|
-
default_executable:
|
12
|
+
date: 2011-10-12 00:00:00.000000000Z
|
19
13
|
dependencies: []
|
20
|
-
|
21
14
|
description: ruby client library for the validator.nu HTML5 validation API
|
22
15
|
email: me@davidjrice.co.uk
|
23
16
|
executables: []
|
24
|
-
|
25
17
|
extensions: []
|
26
|
-
|
27
|
-
extra_rdoc_files:
|
18
|
+
extra_rdoc_files:
|
28
19
|
- LICENSE
|
29
20
|
- README.rdoc
|
30
|
-
files:
|
21
|
+
files:
|
31
22
|
- .document
|
32
|
-
- .gitignore
|
33
23
|
- LICENSE
|
34
24
|
- README.rdoc
|
35
25
|
- Rakefile
|
@@ -60,38 +50,28 @@ files:
|
|
60
50
|
- test/helper.rb
|
61
51
|
- test/test_validator.nu.rb
|
62
52
|
- validator.nu.gemspec
|
63
|
-
has_rdoc: true
|
64
53
|
homepage: http://github.com/davidjrice/validator.nu
|
65
54
|
licenses: []
|
66
|
-
|
67
55
|
post_install_message:
|
68
|
-
rdoc_options:
|
69
|
-
|
70
|
-
require_paths:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
71
58
|
- lib
|
72
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
requirements:
|
81
|
-
- -
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
- 0
|
85
|
-
version: "0"
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
86
71
|
requirements: []
|
87
|
-
|
88
72
|
rubyforge_project:
|
89
|
-
rubygems_version: 1.
|
73
|
+
rubygems_version: 1.8.10
|
90
74
|
signing_key:
|
91
75
|
specification_version: 3
|
92
76
|
summary: ruby client library for the validator.nu HTML5 validation API
|
93
|
-
test_files:
|
94
|
-
- spec/spec_helper.rb
|
95
|
-
- spec/validator_spec.rb
|
96
|
-
- test/helper.rb
|
97
|
-
- test/test_validator.nu.rb
|
77
|
+
test_files: []
|