nokogiri-html-ext 0.1.0 → 0.2.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +17 -0
- data/lib/nokogiri/html_ext/document.rb +15 -8
- data/lib/nokogiri/html_ext/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0aef0b60a4c542ff9bd3ee541ed06b42c6f758c9bfd8631c7fecccda288d01d5
|
4
|
+
data.tar.gz: d0bbda1b35409f6c9297fdcd9811dc7387d69f8cc980d9484aaa21deae4e2410
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5d116103b9806d3b31d72b5d5caeeb806c077ac704d2a8d61a7fdefe8f819be1beea0f255912a642542a4a7fbbcc1ba80ef1c3e02309a439b8258700040279a
|
7
|
+
data.tar.gz: 669115b6d27c9e217f2ed0f993c1cf61dc957e6850c42706de522afa964d7fe651d17b3805d1439e270a0e58b028abaacfc58ddd4f1d30520bd012005b7336c6
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -43,6 +43,8 @@ gem install nokogiri-html-ext
|
|
43
43
|
nokogiri-html-ext provides two helper methods for getting and setting a document's `<base>` element's `href` attribute. The first, `base_href`, retrieves the element's `href` attribute value if it exists.
|
44
44
|
|
45
45
|
```ruby
|
46
|
+
require 'nokogiri/html-ext'
|
47
|
+
|
46
48
|
doc = Nokogiri::HTML('<html><body>Hello, world!</body></html>')
|
47
49
|
|
48
50
|
doc.base_href
|
@@ -62,6 +64,8 @@ doc.base_href
|
|
62
64
|
The `base_href=` method allows you to manipulate the document's `<base>` element.
|
63
65
|
|
64
66
|
```ruby
|
67
|
+
require 'nokogiri/html-ext'
|
68
|
+
|
65
69
|
doc = Nokogiri::HTML('<html><body>Hello, world!</body></html>')
|
66
70
|
|
67
71
|
doc.base_href = '/foo'
|
@@ -92,6 +96,8 @@ URL resolution uses Ruby's built-in URL parsing and normalizing capabilities. Ab
|
|
92
96
|
An abbreviated example:
|
93
97
|
|
94
98
|
```ruby
|
99
|
+
require 'nokogiri/html-ext'
|
100
|
+
|
95
101
|
markup = <<-HTML
|
96
102
|
<html>
|
97
103
|
<body>
|
@@ -124,6 +130,17 @@ doc.at_css('img').to_s
|
|
124
130
|
#=> "<img src=\"https://jgarber.example/foo.png\" srcset=\"https://jgarber.example/foo/bar.png 720w\">"
|
125
131
|
```
|
126
132
|
|
133
|
+
### `resolve_relative_url`
|
134
|
+
|
135
|
+
You may also resolve an arbitrary `String` representing a relative URL against the document's URL (or `<base>` element's `href` attribute value):
|
136
|
+
|
137
|
+
```ruby
|
138
|
+
doc = Nokogiri::HTML('<html><base href="/foo/bar"></html>', 'https://jgarber.example')
|
139
|
+
|
140
|
+
doc.resolve_relative_url('biz/baz')
|
141
|
+
#=> "https://jgarber.example/foo/biz/baz"
|
142
|
+
```
|
143
|
+
|
127
144
|
## Contributing
|
128
145
|
|
129
146
|
Interested in helping improve nokogiri-html-ext? Awesome! Your help is greatly appreciated. See [CONTRIBUTING.md](https://github.com/jgarber623/nokogiri-html-ext/blob/main/CONTRIBUTING.md) for details.
|
@@ -63,6 +63,21 @@ module Nokogiri
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
+
# Convert a relative URL to an absolute URL.
|
67
|
+
#
|
68
|
+
# @param url [String, #to_s]
|
69
|
+
#
|
70
|
+
# @return [String]
|
71
|
+
def resolve_relative_url(url)
|
72
|
+
url_str = url.to_s
|
73
|
+
|
74
|
+
uri_parser.unescape(
|
75
|
+
uri_parser.join(*[document.url.strip, base_href, url_str].compact.map { |u| uri_parser.escape(u) })
|
76
|
+
.normalize
|
77
|
+
.to_s
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
66
81
|
# Convert the document's relative URLs to absolute URLs.
|
67
82
|
#
|
68
83
|
# @return [self]
|
@@ -84,14 +99,6 @@ module Nokogiri
|
|
84
99
|
|
85
100
|
private
|
86
101
|
|
87
|
-
def resolve_relative_url(url)
|
88
|
-
uri_parser.unescape(
|
89
|
-
uri_parser.join(*[document.url.strip, base_href, url].compact.map { |u| uri_parser.escape(u) })
|
90
|
-
.normalize
|
91
|
-
.to_s
|
92
|
-
)
|
93
|
-
end
|
94
|
-
|
95
102
|
def resolve_relative_urls_for(attributes_map)
|
96
103
|
attributes_map.each do |attribute, names|
|
97
104
|
xpaths = names.map { |name| "//#{name}[@#{attribute}]" }
|
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: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Garber
|
@@ -44,7 +44,7 @@ licenses:
|
|
44
44
|
- MIT
|
45
45
|
metadata:
|
46
46
|
bug_tracker_uri: https://github.com/jgarber623/nokogiri-html-ext/issues
|
47
|
-
changelog_uri: https://github.com/jgarber623/nokogiri-html-ext/blob/v0.
|
47
|
+
changelog_uri: https://github.com/jgarber623/nokogiri-html-ext/blob/v0.2.0/CHANGELOG.md
|
48
48
|
rubygems_mfa_required: 'true'
|
49
49
|
post_install_message:
|
50
50
|
rdoc_options: []
|