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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7585f36fdd0ec2e32f315db6393c265e885eeff9e1ad705ad792bfcaeab3373d
4
- data.tar.gz: f29aa48def44453b036c2dad82883839f19fc846b6e9e4d095f25da4b1a82eb8
3
+ metadata.gz: b077068461a0f0a8ec81bf0e81ee5243e11958321e3f15613e52efa439279252
4
+ data.tar.gz: 341d395989cf2831a81b099a50eb64f4a088a3ffcee8d0ae15395d0fcb8e9c11
5
5
  SHA512:
6
- metadata.gz: 6e05e33a87145653f7986ee62c076bd12ded0c95ff96dc74cc5ddf81c2bf48b5286d000715b9c7c32da4160c73f419b6fde7597e46f6e4fbf667324bf0a3d5ca
7
- data.tar.gz: 3c11b01ca57ab4d737aafd8c159040934ab4e7c80d697d9be07c0b1e05bbfc9bbc7db6e1718a0bb54f1629cad16f5a0f4c80431846babceb236d74b63ec4226e
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
- return nil if errors.size <= 1
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
- errors[1..3].map do |e|
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Canon
4
- VERSION = "0.3.102"
4
+ VERSION = "0.3.103"
5
5
  end
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.102
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-19 00:00:00.000000000 Z
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.368
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.368
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.141
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.141
68
+ version: 0.5.147
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: paint
71
71
  requirement: !ruby/object:Gem::Requirement