html-to-markdown 2.28.0 → 2.28.1

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: ee40f54b9f0a1b031a8a4c6a75caac7797e452dfb2fa076d79a6b69fdcd6093d
4
- data.tar.gz: dd1fbfbcc08e4a562a4c096c7530104104054eb3546acbb8fbf265941ab381a7
3
+ metadata.gz: f36fc4bbd42216b6e57e8ab45f3efa66e841eac072ede248c51541b4c4b9c7c1
4
+ data.tar.gz: b7ce1c2842173054e6d3eea461fabbc9d5063ae51a5d2c37f6d303ac47c91de6
5
5
  SHA512:
6
- metadata.gz: 7bef90afd805e6d0333d76fbec1c2698b62ca2f3260c4d5566d638d3950d606e2fd6b1f85c02f2c40fa39279929951ba8e8e666fde9e09ad6d0e2753c2d730e7
7
- data.tar.gz: adf885b78edf97063b30e9285f2f33d3e1cee2a657e282e50d6f548fe13b686b0e3c4f4008248482d78f686ddf0041d4e1581ddfcd02bdb37a3bc66fdb88310a
6
+ metadata.gz: b82552c3f5b55afc82c226710c39955c8f4a6c79bf7a730d88fe1c65e60db64c8cfc7d93044666fd324c3d13ea8c3f57709d3d2c6014034075691c166a646984
7
+ data.tar.gz: ce1b059c010f246b10cb93cfba87d0bf635422f6cb75cf6168f55eb134fe0603a6cb74434e87736ec4d245bd2ba59b74eb8bcba1b9c7d0e70e91d3a25124ef09
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- html-to-markdown (2.28.0)
4
+ html-to-markdown (2.28.1)
5
5
  rb_sys (>= 0.9, < 1.0)
6
6
 
7
7
  GEM
@@ -172,7 +172,7 @@ CHECKSUMS
172
172
  ffi (1.17.3-x86_64-darwin) sha256=1f211811eb5cfaa25998322cdd92ab104bfbd26d1c4c08471599c511f2c00bb5
173
173
  ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f
174
174
  fileutils (1.8.0) sha256=8c6b1df54e2540bdb2f39258f08af78853aa70bad52b4d394bbc6424593c6e02
175
- html-to-markdown (2.28.0)
175
+ html-to-markdown (2.28.1)
176
176
  i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
177
177
  json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
178
178
  json-schema (6.1.0) sha256=6bf70a2cfb6dfd5a06da28093fa8190f324c88eabd36a7f47097f227321dc702
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "html-to-markdown-rb"
3
- version ="2.28.0"
3
+ version ="2.28.1"
4
4
  edition = "2024"
5
5
  authors = ["Na'aman Hirschfeld <naaman@kreuzberg.dev>"]
6
6
  license = "MIT"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HtmlToMarkdown
4
- VERSION = '2.28.0'
4
+ VERSION = '2.28.1'
5
5
  end
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "html-to-markdown-rs"
3
- version = "2.28.0"
3
+ version = "2.28.1"
4
4
  edition = "2024"
5
5
  authors = ["Na'aman Hirschfeld <naaman@kreuzberg.dev>"]
6
6
  license = "MIT"
@@ -189,6 +189,7 @@ pub fn process_text_node(
189
189
  // Without this distinction, the second paragraph after a "\n\n" boundary
190
190
  // would incorrectly suppress the trailing space before inline elements.
191
191
  let safe_start = ctx.block_content_start.min(output.len());
192
+ let safe_start = crate::converter::utility::content::floor_char_boundary(output, safe_start);
192
193
  let current_block_output = &output[safe_start..];
193
194
  let at_paragraph_break = current_block_output.ends_with("\n\n");
194
195
  if !at_paragraph_break {
@@ -244,6 +244,23 @@ pub(crate) fn truncate_at_char_boundary(value: &mut String, max_len: usize) {
244
244
  value.truncate(new_len);
245
245
  }
246
246
 
247
+ /// Returns the largest valid char boundary index at or before `index`.
248
+ ///
249
+ /// If `index` is already a char boundary it is returned unchanged.
250
+ /// Otherwise it walks backwards to find one. Returns 0 if no boundary
251
+ /// is found before `index`.
252
+ pub(crate) fn floor_char_boundary(s: &str, index: usize) -> usize {
253
+ if index >= s.len() {
254
+ s.len()
255
+ } else {
256
+ let mut i = index;
257
+ while i > 0 && !s.is_char_boundary(i) {
258
+ i -= 1;
259
+ }
260
+ i
261
+ }
262
+ }
263
+
247
264
  /// Escape special Markdown characters in a link label.
248
265
  ///
249
266
  /// Handles bracket escaping to prevent unintended link label termination.
@@ -151,12 +151,15 @@ pub fn handle_visitor_element_end(
151
151
  is_inline: !is_block_level_element(tag_name),
152
152
  };
153
153
 
154
- // When a child element's visitor returns Custom or Skip, the handler
155
- // truncates `output` back to that child's `element_output_start`. This
156
- // can make the *parent* element's saved `element_output_start` stale —
157
- // pointing past the end of the now-shorter `output`. Clamp to prevent
158
- // a panic on the string slice.
154
+ // The saved `element_output_start` can become stale in two ways:
155
+ // 1. A child visitor returning Custom/Skip truncates `output`, making the
156
+ // saved position point past the end of the now-shorter string.
157
+ // 2. Element handlers (e.g. div) trim trailing whitespace that was present
158
+ // when the position was captured, then append new multi-byte content.
159
+ // The old position can land inside a multi-byte character.
160
+ // Clamp to output length, then retreat to a valid char boundary.
159
161
  let safe_start = element_output_start.min(output.len());
162
+ let safe_start = crate::converter::utility::content::floor_char_boundary(output, safe_start);
160
163
  let element_content = &output[safe_start..];
161
164
 
162
165
  let mut visitor = visitor_handle.borrow_mut();
@@ -0,0 +1,56 @@
1
+ //! Test to reproduce issue #218: Rust panic with Cyrillic HTML
2
+ //!
3
+ //! When converting HTML containing multi-byte UTF-8 characters (e.g., Cyrillic)
4
+ //! with tabs between block elements and any visitor, a panic occurs:
5
+ //! "byte index N is not a char boundary"
6
+
7
+ #![cfg(feature = "visitor")]
8
+
9
+ use std::cell::RefCell;
10
+ use std::rc::Rc;
11
+
12
+ use html_to_markdown_rs::convert_with_visitor;
13
+ use html_to_markdown_rs::visitor::HtmlVisitor;
14
+
15
+ /// Empty visitor — does nothing, just uses default implementations.
16
+ #[derive(Debug, Default)]
17
+ struct EmptyVisitor;
18
+
19
+ impl HtmlVisitor for EmptyVisitor {}
20
+
21
+ fn make_visitor() -> Option<Rc<RefCell<dyn HtmlVisitor>>> {
22
+ Some(Rc::new(RefCell::new(EmptyVisitor)))
23
+ }
24
+
25
+ #[test]
26
+ fn test_cyrillic_with_tabs_between_divs_and_visitor() {
27
+ // Exact reproduction from the issue
28
+ let html = "<div><span>А</span></div>\t\t\t<div><span>По";
29
+ let result = convert_with_visitor(html, None, make_visitor());
30
+ assert!(result.is_ok(), "Should not panic: {result:?}");
31
+ }
32
+
33
+ #[test]
34
+ fn test_multibyte_utf8_with_tabs_and_visitor() {
35
+ let cases = [
36
+ "<div><span>日本語</span></div>\t\t\t<div><span>テスト",
37
+ "<div><span>한국어</span></div>\t\t\t<div><span>테스트",
38
+ "<div><span>Привет</span></div>\t\t\t<div><span>Мир",
39
+ "<div><span>🎉</span></div>\t\t\t<div><span>🚀",
40
+ ];
41
+
42
+ for html in &cases {
43
+ let result = convert_with_visitor(html, None, make_visitor());
44
+ assert!(result.is_ok(), "Should not panic for: {html}\nError: {result:?}");
45
+ }
46
+ }
47
+
48
+ #[test]
49
+ fn test_cyrillic_with_varying_tab_counts_and_visitor() {
50
+ for n in 1..=5 {
51
+ let tabs = "\t".repeat(n);
52
+ let html = format!("<div><span>А</span></div>{tabs}<div><span>По");
53
+ let result = convert_with_visitor(&html, None, make_visitor());
54
+ assert!(result.is_ok(), "Should not panic with {n} tabs: {result:?}");
55
+ }
56
+ }
@@ -1 +1 @@
1
- {"files":{".cargo_vcs_info.json":"789648921f654b33f0fb3357b0e9a4105aad24b1ab1b594850999c71d41e179e","Cargo.lock":"1f31060cb8bd38665acdc51423cdd574f07937fafbd4433825d2d935dc32c532","Cargo.toml":"0b7a9c318c82241d05a7c10d6f65294420ff06cf24b1ec8b2c04bf5e37222f2f","Cargo.toml.orig":"90793bbea95f22ebec45b0a8efb7f824b15a7f032976bd26480f8434ef5b4b13","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"436bc5a105d8e57dcd8778730f3754f7bf39c14d2f530e4cde4bd2d17a83ec3d","README.md":"9f2ae06f242da863372b3962650f44fee3f809c4345db92a982348dd840cc40b","src/builder.rs":"d332dbf9380bd6275f8c416758a8971db875ce2a661440c8e476cc6f827736c9","src/error.rs":"a2c893f4ac3b136e21883a5b38653f41e0af0b45eaa2e51bcc030c26ee306930","src/external.rs":"a0640bdb98de1c24fcc9851a438a5abe6f7e3acb195885c817a64fac25521b9d","src/external/arbitrary_support.rs":"a257653e0defcd271b1b74386c2f57a398ef54c1bacf450660a2847bf7956514","src/external/borsh_support.rs":"b49d82a59653445ba26db46a1515294b1ab480c0671dbe5499dfd1fb02588b3b","src/external/serde_support.rs":"0d64ceb2fde5494635d7bcab47d8cceb2b31a3bd3909fcbefff8ca43fb5b5351","src/external/slog_support.rs":"d9bab6f91a80c773e77326ce40d84976beb2b2946ab708de21f25afe5b9ece13","src/fmt.rs":"ec3faa801a4e9e381f8398f2d124828d3dbc5917f7a2ed8db67a9c4f97f1a05f","src/lib.rs":"9e74cd5b81078e6f7ee5f42788820e2a36969a58dcad2bde37483667f3354f9b","src/macros.rs":"76b6c6da92909ba9da6d3ed41c818943825939c9ed6bca7be81acec737abfcb5","src/md5.rs":"316d65b760ffa58beb6aa678be24359eb21a744e9e143bc99c11fe1907659245","src/non_nil.rs":"4703e3a839c520f19d98c0b8c891114c07b18e7c5971bc17449eb1d14f0e171c","src/parser.rs":"b9563849d23fa58829a4381fffc4a8ad03a4a83e06822c8b3052d92a14abc68d","src/rng.rs":"0025abde1ac4171b96fff8d137bb4cdc56b41387d426ab23797c30c97eb10444","src/sha1.rs":"e1a9657e11f1ed1ede33c0655f9c2641059b7c24f17be4ac425c930cc216e019","src/timestamp.rs":"5e18f1dad13a8f1a1503ea3247c37e5536bf9d2abafc529f45f4b3512f0457d8","src/v1.rs":"281ede6fe2b96fca062ad4dc4d150e6fd15d35c5cf98eda4daaa7be70ededd78","src/v3.rs":"3b8a0099511fb6da283174c849bd3ac54b504e1e3b7218ad5ccdd5ab388a9593","src/v4.rs":"083012653ceff1b1306998176b333863b515ebb46a22aa5c17c172462eb9bd4c","src/v5.rs":"94adabf5e1a44ecce5352e2b7b7acf8359ac40e8ba4bb904c5460bc26ad4194c","src/v6.rs":"d2866bae073946b5b5bfcd8737f1a0a7238eca5698e1e6dd333fbd8dcf6de7b7","src/v7.rs":"c57cc5d6817098397de10e890ec249a960b4fe049d42487ae1d98723332a358c","src/v8.rs":"6e847f7307c6ec78cbc6616412cc7ace914a157ac2bd7aa9caf0d629ae57d0c7"},"package":"b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"}
1
+ {"files":{".cargo_vcs_info.json":"84795d7fae8830372b854c7bbb9e2dca5c161d27696c4f16bfd4dbe5f1b3d1db","Cargo.lock":"9604e435f9a7bb3a4517bf22164ad6de8bbaede1fdc1188af07c01c43f63561d","Cargo.toml":"bc9f39913ce52c1f17cb2ded890d029f7a63e5002d0d003ce8474ac823bfa69d","Cargo.toml.orig":"eac55b77815b1bec77878de8f4babd3895e0cf4efd1fa8af9341bfafe59c5921","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"436bc5a105d8e57dcd8778730f3754f7bf39c14d2f530e4cde4bd2d17a83ec3d","README.md":"6c9cccb3264dac17e9c63d6097400266ed87909de423b2887f5f540665d10f73","src/builder.rs":"d332dbf9380bd6275f8c416758a8971db875ce2a661440c8e476cc6f827736c9","src/error.rs":"a2c893f4ac3b136e21883a5b38653f41e0af0b45eaa2e51bcc030c26ee306930","src/external.rs":"a0640bdb98de1c24fcc9851a438a5abe6f7e3acb195885c817a64fac25521b9d","src/external/arbitrary_support.rs":"a257653e0defcd271b1b74386c2f57a398ef54c1bacf450660a2847bf7956514","src/external/borsh_support.rs":"b49d82a59653445ba26db46a1515294b1ab480c0671dbe5499dfd1fb02588b3b","src/external/serde_support.rs":"0d64ceb2fde5494635d7bcab47d8cceb2b31a3bd3909fcbefff8ca43fb5b5351","src/external/slog_support.rs":"d9bab6f91a80c773e77326ce40d84976beb2b2946ab708de21f25afe5b9ece13","src/fmt.rs":"ec3faa801a4e9e381f8398f2d124828d3dbc5917f7a2ed8db67a9c4f97f1a05f","src/lib.rs":"04e3c6164227f1576eb35f6e527b1ebda15c746110045aaa5af1be6b0b8b98bd","src/macros.rs":"76b6c6da92909ba9da6d3ed41c818943825939c9ed6bca7be81acec737abfcb5","src/md5.rs":"316d65b760ffa58beb6aa678be24359eb21a744e9e143bc99c11fe1907659245","src/non_nil.rs":"4703e3a839c520f19d98c0b8c891114c07b18e7c5971bc17449eb1d14f0e171c","src/parser.rs":"b9563849d23fa58829a4381fffc4a8ad03a4a83e06822c8b3052d92a14abc68d","src/rng.rs":"0025abde1ac4171b96fff8d137bb4cdc56b41387d426ab23797c30c97eb10444","src/sha1.rs":"e1a9657e11f1ed1ede33c0655f9c2641059b7c24f17be4ac425c930cc216e019","src/timestamp.rs":"5e18f1dad13a8f1a1503ea3247c37e5536bf9d2abafc529f45f4b3512f0457d8","src/v1.rs":"281ede6fe2b96fca062ad4dc4d150e6fd15d35c5cf98eda4daaa7be70ededd78","src/v3.rs":"3b8a0099511fb6da283174c849bd3ac54b504e1e3b7218ad5ccdd5ab388a9593","src/v4.rs":"083012653ceff1b1306998176b333863b515ebb46a22aa5c17c172462eb9bd4c","src/v5.rs":"94adabf5e1a44ecce5352e2b7b7acf8359ac40e8ba4bb904c5460bc26ad4194c","src/v6.rs":"d2866bae073946b5b5bfcd8737f1a0a7238eca5698e1e6dd333fbd8dcf6de7b7","src/v7.rs":"c57cc5d6817098397de10e890ec249a960b4fe049d42487ae1d98723332a358c","src/v8.rs":"6e847f7307c6ec78cbc6616412cc7ace914a157ac2bd7aa9caf0d629ae57d0c7"},"package":"a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "git": {
3
- "sha1": "a38fa19b3d8fc640304b49dff853bd7fa3096f0b"
3
+ "sha1": "da15792ae239df4ff32d236a027901dd1e3b4600"
4
4
  },
5
5
  "path_in_vcs": ""
6
6
  }
@@ -4,9 +4,9 @@ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "anyhow"
7
- version = "1.0.101"
7
+ version = "1.0.102"
8
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
9
+ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
10
10
 
11
11
  [[package]]
12
12
  name = "arbitrary"
@@ -42,9 +42,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
42
42
 
43
43
  [[package]]
44
44
  name = "bitflags"
45
- version = "2.10.0"
45
+ version = "2.11.0"
46
46
  source = "registry+https://github.com/rust-lang/crates.io-index"
47
- checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
47
+ checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
48
48
 
49
49
  [[package]]
50
50
  name = "block-buffer"
@@ -79,9 +79,9 @@ dependencies = [
79
79
 
80
80
  [[package]]
81
81
  name = "bumpalo"
82
- version = "3.19.1"
82
+ version = "3.20.2"
83
83
  source = "registry+https://github.com/rust-lang/crates.io-index"
84
- checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
84
+ checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
85
85
 
86
86
  [[package]]
87
87
  name = "bytemuck"
@@ -139,7 +139,7 @@ checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
139
139
  dependencies = [
140
140
  "cfg-if",
141
141
  "cpufeatures",
142
- "rand_core 0.10.0",
142
+ "rand_core",
143
143
  ]
144
144
 
145
145
  [[package]]
@@ -200,26 +200,25 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
200
200
 
201
201
  [[package]]
202
202
  name = "futures-core"
203
- version = "0.3.31"
203
+ version = "0.3.32"
204
204
  source = "registry+https://github.com/rust-lang/crates.io-index"
205
- checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
205
+ checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
206
206
 
207
207
  [[package]]
208
208
  name = "futures-task"
209
- version = "0.3.31"
209
+ version = "0.3.32"
210
210
  source = "registry+https://github.com/rust-lang/crates.io-index"
211
- checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
211
+ checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
212
212
 
213
213
  [[package]]
214
214
  name = "futures-util"
215
- version = "0.3.31"
215
+ version = "0.3.32"
216
216
  source = "registry+https://github.com/rust-lang/crates.io-index"
217
- checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
217
+ checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
218
218
  dependencies = [
219
219
  "futures-core",
220
220
  "futures-task",
221
221
  "pin-project-lite",
222
- "pin-utils",
223
222
  "slab",
224
223
  ]
225
224
 
@@ -235,26 +234,14 @@ dependencies = [
235
234
 
236
235
  [[package]]
237
236
  name = "getrandom"
238
- version = "0.3.4"
239
- source = "registry+https://github.com/rust-lang/crates.io-index"
240
- checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
241
- dependencies = [
242
- "cfg-if",
243
- "libc",
244
- "r-efi",
245
- "wasip2",
246
- ]
247
-
248
- [[package]]
249
- name = "getrandom"
250
- version = "0.4.1"
237
+ version = "0.4.2"
251
238
  source = "registry+https://github.com/rust-lang/crates.io-index"
252
- checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
239
+ checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
253
240
  dependencies = [
254
241
  "cfg-if",
255
242
  "libc",
256
243
  "r-efi",
257
- "rand_core 0.10.0",
244
+ "rand_core",
258
245
  "wasip2",
259
246
  "wasip3",
260
247
  ]
@@ -312,9 +299,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
312
299
 
313
300
  [[package]]
314
301
  name = "js-sys"
315
- version = "0.3.85"
302
+ version = "0.3.91"
316
303
  source = "registry+https://github.com/rust-lang/crates.io-index"
317
- checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
304
+ checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
318
305
  dependencies = [
319
306
  "once_cell",
320
307
  "wasm-bindgen",
@@ -403,24 +390,9 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
403
390
 
404
391
  [[package]]
405
392
  name = "pin-project-lite"
406
- version = "0.2.16"
407
- source = "registry+https://github.com/rust-lang/crates.io-index"
408
- checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
409
-
410
- [[package]]
411
- name = "pin-utils"
412
- version = "0.1.0"
413
- source = "registry+https://github.com/rust-lang/crates.io-index"
414
- checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
415
-
416
- [[package]]
417
- name = "ppv-lite86"
418
- version = "0.2.21"
393
+ version = "0.2.17"
419
394
  source = "registry+https://github.com/rust-lang/crates.io-index"
420
- checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
421
- dependencies = [
422
- "zerocopy",
423
- ]
395
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
424
396
 
425
397
  [[package]]
426
398
  name = "prettyplease"
@@ -434,9 +406,9 @@ dependencies = [
434
406
 
435
407
  [[package]]
436
408
  name = "proc-macro-crate"
437
- version = "3.4.0"
409
+ version = "3.5.0"
438
410
  source = "registry+https://github.com/rust-lang/crates.io-index"
439
- checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
411
+ checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
440
412
  dependencies = [
441
413
  "toml_edit",
442
414
  ]
@@ -452,28 +424,18 @@ dependencies = [
452
424
 
453
425
  [[package]]
454
426
  name = "quote"
455
- version = "1.0.44"
427
+ version = "1.0.45"
456
428
  source = "registry+https://github.com/rust-lang/crates.io-index"
457
- checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
429
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
458
430
  dependencies = [
459
431
  "proc-macro2",
460
432
  ]
461
433
 
462
434
  [[package]]
463
435
  name = "r-efi"
464
- version = "5.3.0"
436
+ version = "6.0.0"
465
437
  source = "registry+https://github.com/rust-lang/crates.io-index"
466
- checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
467
-
468
- [[package]]
469
- name = "rand"
470
- version = "0.9.2"
471
- source = "registry+https://github.com/rust-lang/crates.io-index"
472
- checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
473
- dependencies = [
474
- "rand_chacha",
475
- "rand_core 0.9.5",
476
- ]
438
+ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
477
439
 
478
440
  [[package]]
479
441
  name = "rand"
@@ -482,27 +444,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
482
444
  checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8"
483
445
  dependencies = [
484
446
  "chacha20",
485
- "getrandom 0.4.1",
486
- "rand_core 0.10.0",
487
- ]
488
-
489
- [[package]]
490
- name = "rand_chacha"
491
- version = "0.9.0"
492
- source = "registry+https://github.com/rust-lang/crates.io-index"
493
- checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
494
- dependencies = [
495
- "ppv-lite86",
496
- "rand_core 0.9.5",
497
- ]
498
-
499
- [[package]]
500
- name = "rand_core"
501
- version = "0.9.5"
502
- source = "registry+https://github.com/rust-lang/crates.io-index"
503
- checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
504
- dependencies = [
505
- "getrandom 0.3.4",
447
+ "getrandom",
448
+ "rand_core",
506
449
  ]
507
450
 
508
451
  [[package]]
@@ -625,9 +568,9 @@ dependencies = [
625
568
 
626
569
  [[package]]
627
570
  name = "syn"
628
- version = "2.0.115"
571
+ version = "2.0.117"
629
572
  source = "registry+https://github.com/rust-lang/crates.io-index"
630
- checksum = "6e614ed320ac28113fa64972c4262d5dbc89deacdfd00c34a3e4cea073243c12"
573
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
631
574
  dependencies = [
632
575
  "proc-macro2",
633
576
  "quote",
@@ -651,28 +594,19 @@ dependencies = [
651
594
 
652
595
  [[package]]
653
596
  name = "toml"
654
- version = "1.0.1+spec-1.1.0"
597
+ version = "1.0.4+spec-1.1.0"
655
598
  source = "registry+https://github.com/rust-lang/crates.io-index"
656
- checksum = "bbe30f93627849fa362d4a602212d41bb237dc2bd0f8ba0b2ce785012e124220"
599
+ checksum = "c94c3321114413476740df133f0d8862c61d87c8d26f04c6841e033c8c80db47"
657
600
  dependencies = [
658
601
  "indexmap",
659
602
  "serde_core",
660
603
  "serde_spanned",
661
- "toml_datetime 1.0.0+spec-1.1.0",
604
+ "toml_datetime",
662
605
  "toml_parser",
663
606
  "toml_writer",
664
607
  "winnow",
665
608
  ]
666
609
 
667
- [[package]]
668
- name = "toml_datetime"
669
- version = "0.7.5+spec-1.1.0"
670
- source = "registry+https://github.com/rust-lang/crates.io-index"
671
- checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
672
- dependencies = [
673
- "serde_core",
674
- ]
675
-
676
610
  [[package]]
677
611
  name = "toml_datetime"
678
612
  version = "1.0.0+spec-1.1.0"
@@ -684,21 +618,21 @@ dependencies = [
684
618
 
685
619
  [[package]]
686
620
  name = "toml_edit"
687
- version = "0.23.10+spec-1.0.0"
621
+ version = "0.25.4+spec-1.1.0"
688
622
  source = "registry+https://github.com/rust-lang/crates.io-index"
689
- checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
623
+ checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2"
690
624
  dependencies = [
691
625
  "indexmap",
692
- "toml_datetime 0.7.5+spec-1.1.0",
626
+ "toml_datetime",
693
627
  "toml_parser",
694
628
  "winnow",
695
629
  ]
696
630
 
697
631
  [[package]]
698
632
  name = "toml_parser"
699
- version = "1.0.8+spec-1.1.0"
633
+ version = "1.0.9+spec-1.1.0"
700
634
  source = "registry+https://github.com/rust-lang/crates.io-index"
701
- checksum = "0742ff5ff03ea7e67c8ae6c93cac239e0d9784833362da3f9a9c1da8dfefcbdc"
635
+ checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
702
636
  dependencies = [
703
637
  "winnow",
704
638
  ]
@@ -732,9 +666,9 @@ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
732
666
 
733
667
  [[package]]
734
668
  name = "unicode-ident"
735
- version = "1.0.23"
669
+ version = "1.0.24"
736
670
  source = "registry+https://github.com/rust-lang/crates.io-index"
737
- checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e"
671
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
738
672
 
739
673
  [[package]]
740
674
  name = "unicode-xid"
@@ -744,17 +678,17 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
744
678
 
745
679
  [[package]]
746
680
  name = "uuid"
747
- version = "1.21.0"
681
+ version = "1.22.0"
748
682
  dependencies = [
749
683
  "arbitrary",
750
684
  "atomic",
751
685
  "borsh",
752
686
  "borsh-derive",
753
687
  "bytemuck",
754
- "getrandom 0.4.1",
688
+ "getrandom",
755
689
  "js-sys",
756
690
  "md-5",
757
- "rand 0.9.2",
691
+ "rand",
758
692
  "rustversion",
759
693
  "serde",
760
694
  "serde_core",
@@ -772,12 +706,12 @@ dependencies = [
772
706
 
773
707
  [[package]]
774
708
  name = "uuid-rng-internal"
775
- version = "1.21.0"
709
+ version = "1.22.0"
776
710
  source = "registry+https://github.com/rust-lang/crates.io-index"
777
- checksum = "2ef224d01f8c31f8c11c90290766fd622fb0a7d7025b9589d4a34a36ccf35b28"
711
+ checksum = "02b76dc0e3c64be846ad2fd1378656e7de2120530d1e83d8f20ca6a0cdba01de"
778
712
  dependencies = [
779
- "getrandom 0.4.1",
780
- "rand 0.10.0",
713
+ "getrandom",
714
+ "rand",
781
715
  ]
782
716
 
783
717
  [[package]]
@@ -816,9 +750,9 @@ dependencies = [
816
750
 
817
751
  [[package]]
818
752
  name = "wasm-bindgen"
819
- version = "0.2.108"
753
+ version = "0.2.114"
820
754
  source = "registry+https://github.com/rust-lang/crates.io-index"
821
- checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
755
+ checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
822
756
  dependencies = [
823
757
  "cfg-if",
824
758
  "once_cell",
@@ -829,9 +763,9 @@ dependencies = [
829
763
 
830
764
  [[package]]
831
765
  name = "wasm-bindgen-futures"
832
- version = "0.4.58"
766
+ version = "0.4.64"
833
767
  source = "registry+https://github.com/rust-lang/crates.io-index"
834
- checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
768
+ checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8"
835
769
  dependencies = [
836
770
  "cfg-if",
837
771
  "futures-util",
@@ -843,9 +777,9 @@ dependencies = [
843
777
 
844
778
  [[package]]
845
779
  name = "wasm-bindgen-macro"
846
- version = "0.2.108"
780
+ version = "0.2.114"
847
781
  source = "registry+https://github.com/rust-lang/crates.io-index"
848
- checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
782
+ checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
849
783
  dependencies = [
850
784
  "quote",
851
785
  "wasm-bindgen-macro-support",
@@ -853,9 +787,9 @@ dependencies = [
853
787
 
854
788
  [[package]]
855
789
  name = "wasm-bindgen-macro-support"
856
- version = "0.2.108"
790
+ version = "0.2.114"
857
791
  source = "registry+https://github.com/rust-lang/crates.io-index"
858
- checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
792
+ checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
859
793
  dependencies = [
860
794
  "bumpalo",
861
795
  "proc-macro2",
@@ -866,18 +800,18 @@ dependencies = [
866
800
 
867
801
  [[package]]
868
802
  name = "wasm-bindgen-shared"
869
- version = "0.2.108"
803
+ version = "0.2.114"
870
804
  source = "registry+https://github.com/rust-lang/crates.io-index"
871
- checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
805
+ checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
872
806
  dependencies = [
873
807
  "unicode-ident",
874
808
  ]
875
809
 
876
810
  [[package]]
877
811
  name = "wasm-bindgen-test"
878
- version = "0.3.58"
812
+ version = "0.3.64"
879
813
  source = "registry+https://github.com/rust-lang/crates.io-index"
880
- checksum = "45649196a53b0b7a15101d845d44d2dda7374fc1b5b5e2bbf58b7577ff4b346d"
814
+ checksum = "6311c867385cc7d5602463b31825d454d0837a3aba7cdb5e56d5201792a3f7fe"
881
815
  dependencies = [
882
816
  "async-trait",
883
817
  "cast",
@@ -897,9 +831,9 @@ dependencies = [
897
831
 
898
832
  [[package]]
899
833
  name = "wasm-bindgen-test-macro"
900
- version = "0.3.58"
834
+ version = "0.3.64"
901
835
  source = "registry+https://github.com/rust-lang/crates.io-index"
902
- checksum = "f579cdd0123ac74b94e1a4a72bd963cf30ebac343f2df347da0b8df24cdebed2"
836
+ checksum = "67008cdde4769831958536b0f11b3bdd0380bde882be17fff9c2f34bb4549abd"
903
837
  dependencies = [
904
838
  "proc-macro2",
905
839
  "quote",
@@ -908,9 +842,9 @@ dependencies = [
908
842
 
909
843
  [[package]]
910
844
  name = "wasm-bindgen-test-shared"
911
- version = "0.2.108"
845
+ version = "0.2.114"
912
846
  source = "registry+https://github.com/rust-lang/crates.io-index"
913
- checksum = "a8145dd1593bf0fb137dbfa85b8be79ec560a447298955877804640e40c2d6ea"
847
+ checksum = "cfe29135b180b72b04c74aa97b2b4a2ef275161eff9a6c7955ea9eaedc7e1d4e"
914
848
 
915
849
  [[package]]
916
850
  name = "wasm-encoder"
@@ -948,9 +882,9 @@ dependencies = [
948
882
 
949
883
  [[package]]
950
884
  name = "web-sys"
951
- version = "0.3.85"
885
+ version = "0.3.91"
952
886
  source = "registry+https://github.com/rust-lang/crates.io-index"
953
- checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
887
+ checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"
954
888
  dependencies = [
955
889
  "js-sys",
956
890
  "wasm-bindgen",
@@ -982,9 +916,9 @@ dependencies = [
982
916
 
983
917
  [[package]]
984
918
  name = "winnow"
985
- version = "0.7.14"
919
+ version = "0.7.15"
986
920
  source = "registry+https://github.com/rust-lang/crates.io-index"
987
- checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
921
+ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
988
922
  dependencies = [
989
923
  "memchr",
990
924
  ]
@@ -1079,18 +1013,18 @@ dependencies = [
1079
1013
 
1080
1014
  [[package]]
1081
1015
  name = "zerocopy"
1082
- version = "0.8.39"
1016
+ version = "0.8.40"
1083
1017
  source = "registry+https://github.com/rust-lang/crates.io-index"
1084
- checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a"
1018
+ checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5"
1085
1019
  dependencies = [
1086
1020
  "zerocopy-derive",
1087
1021
  ]
1088
1022
 
1089
1023
  [[package]]
1090
1024
  name = "zerocopy-derive"
1091
- version = "0.8.39"
1025
+ version = "0.8.40"
1092
1026
  source = "registry+https://github.com/rust-lang/crates.io-index"
1093
- checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517"
1027
+ checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953"
1094
1028
  dependencies = [
1095
1029
  "proc-macro2",
1096
1030
  "quote",
@@ -13,7 +13,7 @@
13
13
  edition = "2021"
14
14
  rust-version = "1.85.0"
15
15
  name = "uuid"
16
- version = "1.21.0"
16
+ version = "1.22.0"
17
17
  authors = [
18
18
  "Ashley Mannix<ashleymannix@live.com.au>",
19
19
  "Dylan DPC<dylan.dpc@gmail.com>",
@@ -162,7 +162,7 @@ optional = true
162
162
  default-features = false
163
163
 
164
164
  [dependencies.bytemuck]
165
- version = "1.21.0"
165
+ version = "1.22.0"
166
166
  features = ["derive"]
167
167
  optional = true
168
168
 
@@ -209,7 +209,7 @@ version = "1.0.56"
209
209
  version = "1.0.52"
210
210
 
211
211
  [target.'cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))'.dependencies.uuid-rng-internal-lib]
212
- version = "1.21.0"
212
+ version = "1.22.0"
213
213
  optional = true
214
214
  package = "uuid-rng-internal"
215
215
 
@@ -235,7 +235,7 @@ version = "0.4"
235
235
  optional = true
236
236
 
237
237
  [target.'cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none"))))'.dependencies.rand]
238
- version = "0.9"
238
+ version = "0.10"
239
239
  optional = true
240
240
 
241
241
  [lints.rust.unexpected_cfgs]
@@ -29,7 +29,7 @@ homepage = "https://github.com/uuid-rs/uuid"
29
29
  name = "uuid"
30
30
  readme = "README.md"
31
31
  repository = "https://github.com/uuid-rs/uuid"
32
- version = "1.21.0" # remember to update html_root_url in lib.rs
32
+ version = "1.22.0" # remember to update html_root_url in lib.rs
33
33
  rust-version = "1.85.0"
34
34
 
35
35
  [package.metadata.docs.rs]
@@ -86,7 +86,7 @@ borsh = ["dep:borsh", "dep:borsh-derive"]
86
86
 
87
87
  # Public: Used in trait impls on `Uuid`
88
88
  [dependencies.bytemuck]
89
- version = "1.21.0"
89
+ version = "1.22.0"
90
90
  optional = true
91
91
  features = ["derive"]
92
92
 
@@ -140,13 +140,13 @@ optional = true
140
140
  [target.'cfg(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none")))'.dependencies.uuid-rng-internal-lib]
141
141
  # Work-around lack of support for both `dep:x` and `x/` in MSRV
142
142
  package = "uuid-rng-internal"
143
- version = "1.21.0"
143
+ version = "1.22.0"
144
144
  path = "rng"
145
145
  optional = true
146
146
 
147
147
  # Private
148
148
  [target.'cfg(not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "none"))))'.dependencies.rand]
149
- version = "0.9"
149
+ version = "0.10"
150
150
  optional = true
151
151
 
152
152
  # Private
@@ -28,7 +28,7 @@ Add the following to your `Cargo.toml`:
28
28
 
29
29
  ```toml
30
30
  [dependencies.uuid]
31
- version = "1.21.0"
31
+ version = "1.22.0"
32
32
  # Lets you generate random UUIDs
33
33
  features = [
34
34
  "v4",
@@ -64,11 +64,11 @@ assert_eq!(Some(Version::Random), my_uuid.get_version());
64
64
  If you'd like to parse UUIDs _really_ fast, check out the [`uuid-simd`](https://github.com/nugine/uuid-simd)
65
65
  library.
66
66
 
67
- For more details on using `uuid`, [see the library documentation](https://docs.rs/uuid/1.21.0/uuid).
67
+ For more details on using `uuid`, [see the library documentation](https://docs.rs/uuid/1.22.0/uuid).
68
68
 
69
69
  ## References
70
70
 
71
- * [`uuid` library docs](https://docs.rs/uuid/1.21.0/uuid).
71
+ * [`uuid` library docs](https://docs.rs/uuid/1.22.0/uuid).
72
72
  * [Wikipedia: Universally Unique Identifier](http://en.wikipedia.org/wiki/Universally_unique_identifier).
73
73
  * [RFC 9562: Universally Unique IDentifiers (UUID)](https://www.ietf.org/rfc/rfc9562.html).
74
74
 
@@ -38,7 +38,7 @@
38
38
  //!
39
39
  //! ```toml
40
40
  //! [dependencies.uuid]
41
- //! version = "1.21.0"
41
+ //! version = "1.22.0"
42
42
  //! # Lets you generate random UUIDs
43
43
  //! features = [
44
44
  //! "v4",
@@ -138,7 +138,7 @@
138
138
  //!
139
139
  //! ```toml
140
140
  //! [dependencies.uuid]
141
- //! version = "1.21.0"
141
+ //! version = "1.22.0"
142
142
  //! features = [
143
143
  //! "v4",
144
144
  //! "v7",
@@ -153,7 +153,7 @@
153
153
  //!
154
154
  //! ```toml
155
155
  //! [dependencies.uuid]
156
- //! version = "1.21.0"
156
+ //! version = "1.22.0"
157
157
  //! default-features = false
158
158
  //! ```
159
159
  //!
@@ -211,7 +211,7 @@
211
211
  #![doc(
212
212
  html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
213
213
  html_favicon_url = "https://www.rust-lang.org/favicon.ico",
214
- html_root_url = "https://docs.rs/uuid/1.21.0"
214
+ html_root_url = "https://docs.rs/uuid/1.22.0"
215
215
  )]
216
216
 
217
217
  #[cfg(any(feature = "std", test))]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-to-markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.28.0
4
+ version: 2.28.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Na'aman Hirschfeld
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-03-05 00:00:00.000000000 Z
11
+ date: 2026-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys
@@ -1959,6 +1959,7 @@ files:
1959
1959
  - rust-vendor/html-to-markdown-rs/tests/tables_test.rs
1960
1960
  - rust-vendor/html-to-markdown-rs/tests/test_custom_elements.rs
1961
1961
  - rust-vendor/html-to-markdown-rs/tests/test_issue_187.rs
1962
+ - rust-vendor/html-to-markdown-rs/tests/test_issue_218.rs
1962
1963
  - rust-vendor/html-to-markdown-rs/tests/test_nested_simple.rs
1963
1964
  - rust-vendor/html-to-markdown-rs/tests/test_script_style_stripping.rs
1964
1965
  - rust-vendor/html-to-markdown-rs/tests/test_spa_bisect.rs