nokogiri-html-ext 1.4.1 → 1.5.0

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: 3c5f1ccd4ab43e822b1bc075f4b84c212b9ab539e07b206d2b65499a775ed539
4
- data.tar.gz: 15ef0baaa308692662f39e238bedba2029e336b53d753190182b19b770e0ea6b
3
+ metadata.gz: fe48e23deb7150b7adf50eb5298dfef2dbc9a75898574ed21cd567038728d2ed
4
+ data.tar.gz: 0f5f378ae1180ab2718b1927e220d092363a8cb013766e4ffaf483050c2f7020
5
5
  SHA512:
6
- metadata.gz: 2ba7cba037735ea0323abae2828d0c8abd576886b97fef12b8319add735dedbe77ada5433f47e4f42a240855ff196dd178925a61bcbd99e7be834bf500423cd7
7
- data.tar.gz: 53ddcdcc16b93fdf00947acaec6764d56f95665cac5bc96868a2a20a627b917907c1fa7182639d89d0359e5c0eed6ca4932cb112e2944de9403fca83d888a5e2
6
+ metadata.gz: beba250e78b23dfea02fe3cdbca224049f4a63f7f6ab990403eedaab6d29770f09aaa47fa2cadc18304237baa2b9b2d751a2940b6d34e98a9b3abd48f815e02e
7
+ data.tar.gz: 2971a2ae956f0877aae05a70ea6283ccebb72c935667deda53d7337f4cde74b946950ce0a2f826a7a522c7538ddf84090603a683690baf080238709a705f0dd8
@@ -56,37 +56,31 @@ module Nokogiri
56
56
  base["href"] = url
57
57
  end
58
58
 
59
- # Convert a relative URL to an absolute URL based on the current document.
59
+ # Resolve a URL based on the current document.
60
60
  #
61
61
  # @param url [String]
62
62
  #
63
63
  # @return [String]
64
- def resolve_relative_url(url)
65
- strs = [document.url, base_href, url].filter_map { |str| str&.strip }
64
+ def resolve_url(url)
65
+ uris = [document.url, base_href, url].filter_map { |uri| Addressable::URI.parse(uri&.strip) }
66
66
 
67
- uri = Addressable::URI.join(*strs)
67
+ return uris.last.to_s if uris.last.absolute?
68
68
 
69
- # Normalize an empty path component.
70
- #
71
- # @see https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.3
72
- # RFC 3986 Uniform Resource Identifier (URI): Generic Syntax § 6.2.3. Scheme-Based Normalization
73
- uri.path = uri.normalized_path if uri.path.empty?
74
-
75
- uri.to_s
69
+ Addressable::URI.join(*uris).to_s
76
70
  rescue Addressable::URI::InvalidURIError
77
71
  url
78
72
  end
79
73
 
80
- # Convert the document's relative URLs to absolute URLs.
74
+ # Resolve the document's URLs
81
75
  #
82
76
  # @return [self]
83
- def resolve_relative_urls!
77
+ def resolve_urls!
84
78
  xpath(*ATTRIBUTES_XPATHS).each do |attr_node|
85
79
  attr_node.value =
86
80
  if SRCSET_ATTRIBUTES_MAP.key?(attr_node.name)
87
81
  resolve_srcset_attributes(attr_node.value.split(/\s*,\s*/))
88
82
  else
89
- resolve_relative_url(attr_node.value)
83
+ resolve_url(attr_node.value)
90
84
  end
91
85
  end
92
86
 
@@ -104,7 +98,7 @@ module Nokogiri
104
98
  def resolve_srcset_attributes(srcset_attributes)
105
99
  srcset_attributes.map! do |candidate_string|
106
100
  # rubocop:disable Style/PerlBackrefs
107
- candidate_string.sub(/^(.+?)(\s+.+)?$/) { "#{resolve_relative_url($1)}#{$2}" }
101
+ candidate_string.sub(/^(.+?)(\s+.+)?$/) { "#{resolve_url($1)}#{$2}" }
108
102
  # rubocop:enable Style/PerlBackrefs
109
103
  end
110
104
 
@@ -4,7 +4,7 @@ Gem::Specification.new do |spec|
4
4
  spec.required_ruby_version = ">= 2.7"
5
5
 
6
6
  spec.name = "nokogiri-html-ext"
7
- spec.version = "1.4.1"
7
+ spec.version = "1.5.0"
8
8
  spec.authors = ["Jason Garber"]
9
9
  spec.email = ["jason@sixtwothree.org"]
10
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokogiri-html-ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Garber
@@ -55,11 +55,11 @@ licenses:
55
55
  - MIT
56
56
  metadata:
57
57
  bug_tracker_uri: https://codeberg.org/jgarber/nokogiri-html-ext/issues
58
- changelog_uri: https://codeberg.org/jgarber/nokogiri-html-ext/releases/tag/v1.4.1
59
- documentation_uri: https://rubydoc.info/gems/nokogiri-html-ext/1.4.1
58
+ changelog_uri: https://codeberg.org/jgarber/nokogiri-html-ext/releases/tag/v1.5.0
59
+ documentation_uri: https://rubydoc.info/gems/nokogiri-html-ext/1.5.0
60
60
  homepage_uri: https://codeberg.org/jgarber/nokogiri-html-ext
61
61
  rubygems_mfa_required: 'true'
62
- source_code_uri: https://codeberg.org/jgarber/nokogiri-html-ext/src/tag/v1.4.1
62
+ source_code_uri: https://codeberg.org/jgarber/nokogiri-html-ext/src/tag/v1.5.0
63
63
  rdoc_options: []
64
64
  require_paths:
65
65
  - lib