canon 0.3.102 → 0.3.103
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/lib/canon/validators/html_validator.rb +20 -3
- data/lib/canon/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b077068461a0f0a8ec81bf0e81ee5243e11958321e3f15613e52efa439279252
|
|
4
|
+
data.tar.gz: 341d395989cf2831a81b099a50eb64f4a088a3ffcee8d0ae15395d0fcb8e9c11
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b30353f6ac5ac3bebb4ddbe4f59ebd01b0bf2699b9ce42832be0b349f41e94bfad5efc93008fb4ab687dbabd2c2fedd567694221e2cd59343ae5e9623d2f0d6f
|
|
7
|
+
data.tar.gz: de33802e262f5829d0a1e33af25ce1f44fe229f5194e788d6a415cb49b59ba85de2befa2a3f4a7bb4741c35ae3f5bc340f8d32b144c2d77ce440cd03aa304f04
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "leptris" # a hard runtime dependency — the HTML5 lint lane
|
|
4
|
+
# uses the engine's parse-lint face (leptris#1771)
|
|
5
|
+
|
|
3
6
|
module Canon
|
|
4
7
|
module Validators
|
|
5
8
|
# Validator for HTML input
|
|
@@ -75,6 +78,15 @@ module Canon
|
|
|
75
78
|
# @param input [String] The HTML5 string to validate
|
|
76
79
|
# @raise [Canon::ValidationError] If HTML5 is malformed
|
|
77
80
|
# @return [void]
|
|
81
|
+
# Doctype-presence codes: fragments are first-class input and
|
|
82
|
+
# the old gumbo lane filtered doctype warnings — the engine's
|
|
83
|
+
# spec-correct tokens for the same condition are warnings here.
|
|
84
|
+
DOCTYPE_CLASS_CODES = %w[
|
|
85
|
+
expected-doctype-but-got-start-tag
|
|
86
|
+
expected-doctype-but-got-chars
|
|
87
|
+
expected-doctype-token
|
|
88
|
+
].freeze
|
|
89
|
+
|
|
78
90
|
# The HTML5 lint layer is engine-served (leptris#1771 delivered
|
|
79
91
|
# the §13.2.5 parse-error token stream: machine-readable code +
|
|
80
92
|
# line + column, RECOVER class). Engine-direct call — the
|
|
@@ -83,7 +95,9 @@ module Canon
|
|
|
83
95
|
def self.validate_html5!(input)
|
|
84
96
|
doc = Leptris::XML.parse_html(input, mode: :whatwg,
|
|
85
97
|
collect_errors: true)
|
|
86
|
-
errors = doc.errors
|
|
98
|
+
errors = doc.errors.reject do |e|
|
|
99
|
+
DOCTYPE_CLASS_CODES.include?(e.code)
|
|
100
|
+
end
|
|
87
101
|
return if errors.empty?
|
|
88
102
|
|
|
89
103
|
error = errors.first
|
|
@@ -101,9 +115,12 @@ module Canon
|
|
|
101
115
|
# @param errors [Array<Leptris::XML::SyntaxError>] Array of errors
|
|
102
116
|
# @return [String, nil] Combined error details
|
|
103
117
|
def self.build_error_details(errors)
|
|
104
|
-
|
|
118
|
+
significant = errors.reject do |e|
|
|
119
|
+
DOCTYPE_CLASS_CODES.include?(e.code)
|
|
120
|
+
end
|
|
121
|
+
return nil if significant.size <= 1
|
|
105
122
|
|
|
106
|
-
|
|
123
|
+
significant[1..3].map do |e|
|
|
107
124
|
msg = e.message
|
|
108
125
|
msg += " (line #{e.line})" if e.respond_to?(:line) && e.line
|
|
109
126
|
msg
|
data/lib/canon/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: canon
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.103
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: diff-lcs
|
|
@@ -44,28 +44,28 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.9.
|
|
47
|
+
version: 1.9.373
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 1.9.
|
|
54
|
+
version: 1.9.373
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: moxml
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 0.5.
|
|
61
|
+
version: 0.5.147
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 0.5.
|
|
68
|
+
version: 0.5.147
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: paint
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|