Skip to content

Commit c7e2036

Browse files
committed
fix: pass full options without json helpers
1 parent 024b466 commit c7e2036

File tree

10 files changed

+171
-386
lines changed

10 files changed

+171
-386
lines changed

crates/html-to-markdown-node/index.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -574,29 +574,21 @@ if (!nativeBinding) {
574574
module.exports = nativeBinding
575575
module.exports.convert = nativeBinding.convert
576576
module.exports.convertBuffer = nativeBinding.convertBuffer
577-
module.exports.convertBufferJson = nativeBinding.convertBufferJson
578577
module.exports.convertBufferWithOptionsHandle = nativeBinding.convertBufferWithOptionsHandle
579578
module.exports.convertInlineImagesBuffer = nativeBinding.convertInlineImagesBuffer
580-
module.exports.convertInlineImagesBufferJson = nativeBinding.convertInlineImagesBufferJson
581579
module.exports.convertInlineImagesBufferWithOptionsHandle = nativeBinding.convertInlineImagesBufferWithOptionsHandle
582-
module.exports.convertJson = nativeBinding.convertJson
583580
module.exports.convertWithInlineImages = nativeBinding.convertWithInlineImages
584581
module.exports.convertWithInlineImagesHandle = nativeBinding.convertWithInlineImagesHandle
585-
module.exports.convertWithInlineImagesJson = nativeBinding.convertWithInlineImagesJson
586582
module.exports.convertWithMetadata = nativeBinding.convertWithMetadata
587583
module.exports.convertWithMetadataBuffer = nativeBinding.convertWithMetadataBuffer
588-
module.exports.convertWithMetadataBufferJson = nativeBinding.convertWithMetadataBufferJson
589584
module.exports.convertWithMetadataBufferWithMetadataHandle = nativeBinding.convertWithMetadataBufferWithMetadataHandle
590585
module.exports.convertWithMetadataBufferWithOptionsAndMetadataHandle = nativeBinding.convertWithMetadataBufferWithOptionsAndMetadataHandle
591586
module.exports.convertWithMetadataBufferWithOptionsHandle = nativeBinding.convertWithMetadataBufferWithOptionsHandle
592587
module.exports.convertWithMetadataHandle = nativeBinding.convertWithMetadataHandle
593-
module.exports.convertWithMetadataJson = nativeBinding.convertWithMetadataJson
594588
module.exports.convertWithOptionsHandle = nativeBinding.convertWithOptionsHandle
595589
module.exports.convertWithVisitor = nativeBinding.convertWithVisitor
596590
module.exports.createConversionOptionsHandle = nativeBinding.createConversionOptionsHandle
597-
module.exports.createConversionOptionsHandleJson = nativeBinding.createConversionOptionsHandleJson
598591
module.exports.createMetadataConfigHandle = nativeBinding.createMetadataConfigHandle
599-
module.exports.createMetadataConfigHandleJson = nativeBinding.createMetadataConfigHandleJson
600592
module.exports.JsCodeBlockStyle = nativeBinding.JsCodeBlockStyle
601593
module.exports.JsHeadingStyle = nativeBinding.JsHeadingStyle
602594
module.exports.JsHighlightStyle = nativeBinding.JsHighlightStyle

crates/html-to-markdown-node/src/handles.rs

Lines changed: 1 addition & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ use crate::types::{JsHtmlExtraction, JsInlineImage, JsInlineImageWarning};
55
use crate::types::{JsMetadataConfig, JsMetadataExtraction, convert_metadata};
66
#[cfg(feature = "async-visitor")]
77
use crate::visitor::JsVisitorBridge;
8-
#[cfg(feature = "metadata")]
9-
use html_to_markdown_bindings_common::parse_metadata_config;
10-
use html_to_markdown_bindings_common::{error::error_message, parse_conversion_options, parse_inline_image_config};
8+
use html_to_markdown_bindings_common::error::error_message;
119
#[cfg(feature = "metadata")]
1210
use html_to_markdown_rs::metadata::MetadataConfig as RustMetadataConfig;
1311
use html_to_markdown_rs::safety::guard_panic;
@@ -220,13 +218,6 @@ pub fn convert_with_visitor<'env>(
220218
env.spawn_future(convert_with_visitor_async_impl(html, options, bridge))
221219
}
222220

223-
#[napi(js_name = "convertJson")]
224-
pub fn convert_json(html: String, options_json: Option<String>) -> Result<String> {
225-
let rust_options = parse_conversion_options(options_json.as_deref()).map_err(to_js_error)?;
226-
guard_panic(|| profiling::maybe_profile(|| html_to_markdown_rs::convert(&html, rust_options.clone())))
227-
.map_err(to_js_error)
228-
}
229-
230221
#[napi]
231222
pub fn start_profiling(output_path: String, frequency: Option<i32>) -> Result<()> {
232223
let freq = frequency.unwrap_or(1000);
@@ -247,42 +238,19 @@ pub fn convert_buffer(html: Buffer, options: Option<JsConversionOptions>) -> Res
247238
.map_err(to_js_error)
248239
}
249240

250-
#[napi(js_name = "convertBufferJson")]
251-
pub fn convert_buffer_json(html: Buffer, options_json: Option<String>) -> Result<String> {
252-
let html = buffer_to_str(&html)?;
253-
let rust_options = parse_conversion_options(options_json.as_deref()).map_err(to_js_error)?;
254-
guard_panic(|| profiling::maybe_profile(|| html_to_markdown_rs::convert(html, rust_options.clone())))
255-
.map_err(to_js_error)
256-
}
257-
258241
/// Create a reusable `ConversionOptions` handle.
259242
#[napi]
260243
pub fn create_conversion_options_handle(options: Option<JsConversionOptions>) -> External<RustConversionOptions> {
261244
External::new(options.map(Into::into).unwrap_or_default())
262245
}
263246

264-
#[napi(js_name = "createConversionOptionsHandleJson")]
265-
pub fn create_conversion_options_handle_json(options_json: Option<String>) -> Result<External<RustConversionOptions>> {
266-
let rust_options = parse_conversion_options(options_json.as_deref()).map_err(to_js_error)?;
267-
Ok(External::new(rust_options.unwrap_or_default()))
268-
}
269-
270247
/// Create a reusable `MetadataConfig` handle.
271248
#[cfg(feature = "metadata")]
272249
#[napi]
273250
pub fn create_metadata_config_handle(metadata_config: Option<JsMetadataConfig>) -> External<RustMetadataConfig> {
274251
External::new(metadata_config.map(Into::into).unwrap_or_default())
275252
}
276253

277-
#[cfg(feature = "metadata")]
278-
#[napi(js_name = "createMetadataConfigHandleJson")]
279-
pub fn create_metadata_config_handle_json(
280-
metadata_config_json: Option<String>,
281-
) -> Result<External<RustMetadataConfig>> {
282-
let rust_config = parse_metadata_config(metadata_config_json.as_deref()).map_err(to_js_error)?;
283-
Ok(External::new(rust_config))
284-
}
285-
286254
/// Convert HTML using a previously-created `ConversionOptions` handle.
287255
#[napi]
288256
pub fn convert_with_options_handle(html: String, options: &External<RustConversionOptions>) -> Result<String> {
@@ -359,21 +327,6 @@ fn convert_inline_images_with_handle_impl(
359327
Ok(build_js_extraction(extraction))
360328
}
361329

362-
fn convert_inline_images_json_impl(
363-
html: &str,
364-
options_json: Option<String>,
365-
image_config_json: Option<String>,
366-
) -> Result<JsHtmlExtraction> {
367-
let rust_options = parse_conversion_options(options_json.as_deref()).map_err(to_js_error)?;
368-
let rust_config = parse_inline_image_config(image_config_json.as_deref()).map_err(to_js_error)?;
369-
370-
let extraction =
371-
guard_panic(|| html_to_markdown_rs::convert_with_inline_images(html, rust_options, rust_config, None))
372-
.map_err(to_js_error)?;
373-
374-
Ok(build_js_extraction(extraction))
375-
}
376-
377330
/// Convert HTML to Markdown while collecting inline images
378331
///
379332
/// # Arguments
@@ -412,15 +365,6 @@ pub fn convert_with_inline_images_handle(
412365
convert_inline_images_with_handle_impl(&html, options, image_config)
413366
}
414367

415-
#[napi(js_name = "convertWithInlineImagesJson")]
416-
pub fn convert_with_inline_images_json(
417-
html: String,
418-
options_json: Option<String>,
419-
image_config_json: Option<String>,
420-
) -> Result<JsHtmlExtraction> {
421-
convert_inline_images_json_impl(&html, options_json, image_config_json)
422-
}
423-
424368
/// Convert inline images from Buffer/Uint8Array input without an intermediate string allocation.
425369
#[napi(js_name = "convertInlineImagesBuffer")]
426370
pub fn convert_inline_images_buffer(
@@ -443,16 +387,6 @@ pub fn convert_inline_images_buffer_with_options_handle(
443387
convert_inline_images_with_handle_impl(html, options, image_config)
444388
}
445389

446-
#[napi(js_name = "convertInlineImagesBufferJson")]
447-
pub fn convert_inline_images_buffer_json(
448-
html: Buffer,
449-
options_json: Option<String>,
450-
image_config_json: Option<String>,
451-
) -> Result<JsHtmlExtraction> {
452-
let html = buffer_to_str(&html)?;
453-
convert_inline_images_json_impl(html, options_json, image_config_json)
454-
}
455-
456390
/// Convert HTML to Markdown with metadata extraction.
457391
///
458392
/// # Arguments
@@ -523,16 +457,6 @@ pub fn convert_with_metadata_handle(
523457
})
524458
}
525459

526-
#[cfg(feature = "metadata")]
527-
#[napi(js_name = "convertWithMetadataJson")]
528-
pub fn convert_with_metadata_json(
529-
html: String,
530-
options_json: Option<String>,
531-
metadata_config_json: Option<String>,
532-
) -> Result<JsMetadataExtraction> {
533-
convert_metadata_json_impl(&html, options_json, metadata_config_json)
534-
}
535-
536460
/// Convert HTML from Buffer/Uint8Array with metadata extraction without intermediate string allocation.
537461
#[cfg(feature = "metadata")]
538462
#[napi(js_name = "convertWithMetadataBuffer")]
@@ -614,34 +538,3 @@ pub fn convert_with_metadata_buffer_with_options_and_metadata_handle(
614538
metadata: convert_metadata(metadata),
615539
})
616540
}
617-
618-
/// Convert HTML from Buffer/Uint8Array with metadata extraction using JSON config.
619-
#[cfg(feature = "metadata")]
620-
#[napi(js_name = "convertWithMetadataBufferJson")]
621-
pub fn convert_with_metadata_buffer_json(
622-
html: Buffer,
623-
options_json: Option<String>,
624-
metadata_config_json: Option<String>,
625-
) -> Result<JsMetadataExtraction> {
626-
let html = buffer_to_str(&html)?;
627-
convert_metadata_json_impl(html, options_json, metadata_config_json)
628-
}
629-
630-
#[cfg(feature = "metadata")]
631-
fn convert_metadata_json_impl(
632-
html: &str,
633-
options_json: Option<String>,
634-
metadata_config_json: Option<String>,
635-
) -> Result<JsMetadataExtraction> {
636-
let rust_options = parse_conversion_options(options_json.as_deref()).map_err(to_js_error)?;
637-
let rust_config = parse_metadata_config(metadata_config_json.as_deref()).map_err(to_js_error)?;
638-
639-
let (markdown, metadata) =
640-
guard_panic(|| html_to_markdown_rs::convert_with_metadata(html, rust_options, rust_config, None))
641-
.map_err(to_js_error)?;
642-
643-
Ok(JsMetadataExtraction {
644-
markdown,
645-
metadata: convert_metadata(metadata),
646-
})
647-
}

crates/html-to-markdown-py/src/conversion/inline_images.rs

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ use crate::options::ConversionOptions;
1515
use crate::types::{InlineImageConfig, inline_image_to_py, warning_to_py};
1616
#[cfg(feature = "visitor")]
1717
use crate::visitor;
18-
use html_to_markdown_bindings_common::{parse_conversion_options, parse_inline_image_config};
1918
use html_to_markdown_rs::DEFAULT_INLINE_IMAGE_LIMIT;
2019
#[cfg(feature = "visitor")]
2120
use html_to_markdown_rs::visitor::HtmlVisitor;
@@ -153,40 +152,6 @@ pub fn convert_with_inline_images<'py>(
153152
Ok((extraction.markdown, images, warnings))
154153
}
155154

156-
#[pyfunction]
157-
#[pyo3(signature = (html, options_json=None, image_config_json=None))]
158-
pub fn convert_with_inline_images_json<'py>(
159-
py: Python<'py>,
160-
html: &str,
161-
options_json: Option<&str>,
162-
image_config_json: Option<&str>,
163-
) -> PyInlineExtraction {
164-
let html = html.to_owned();
165-
let rust_options = parse_conversion_options(options_json).map_err(to_py_err)?;
166-
let rust_config = parse_inline_image_config(image_config_json).map_err(to_py_err)?;
167-
let extraction = py
168-
.detach(move || {
169-
run_with_guard_and_profile(|| {
170-
html_to_markdown_rs::convert_with_inline_images(&html, rust_options.clone(), rust_config.clone(), None)
171-
})
172-
})
173-
.map_err(to_py_err)?;
174-
175-
let images = extraction
176-
.inline_images
177-
.into_iter()
178-
.map(|image| inline_image_to_py(py, image))
179-
.collect::<PyResult<Vec<_>>>()?;
180-
181-
let warnings = extraction
182-
.warnings
183-
.into_iter()
184-
.map(|warning| warning_to_py(py, warning))
185-
.collect::<PyResult<Vec<_>>>()?;
186-
187-
Ok((extraction.markdown, images, warnings))
188-
}
189-
190155
/// Convert HTML to Markdown with inline images using a pre-parsed options handle.
191156
#[pyfunction]
192157
#[pyo3(signature = (html, handle, image_config=None))]

crates/html-to-markdown-py/src/conversion/metadata.rs

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ use crate::options::ConversionOptions;
1515
use crate::types::{MetadataConfig, extended_metadata_to_py};
1616
#[cfg(feature = "visitor")]
1717
use crate::visitor;
18-
use html_to_markdown_bindings_common::{parse_conversion_options, parse_metadata_config};
1918
use html_to_markdown_rs::metadata::DEFAULT_MAX_STRUCTURED_DATA_SIZE;
2019
#[cfg(feature = "visitor")]
2120
use html_to_markdown_rs::visitor::HtmlVisitor;
@@ -262,31 +261,6 @@ pub fn convert_with_metadata<'py>(
262261
Ok((markdown, metadata_dict))
263262
}
264263

265-
#[pyfunction]
266-
#[pyo3(signature = (html, options_json=None, metadata_config_json=None))]
267-
pub fn convert_with_metadata_json(
268-
py: Python<'_>,
269-
html: &str,
270-
options_json: Option<&str>,
271-
metadata_config_json: Option<&str>,
272-
) -> PyResult<(String, Py<PyAny>)> {
273-
let html = html.to_owned();
274-
let rust_options = parse_conversion_options(options_json).map_err(to_py_err)?;
275-
let rust_cfg = parse_metadata_config(metadata_config_json).map_err(to_py_err)?;
276-
277-
let result = py
278-
.detach(move || {
279-
run_with_guard_and_profile(|| {
280-
html_to_markdown_rs::convert_with_metadata(&html, rust_options.clone(), rust_cfg.clone(), None)
281-
})
282-
})
283-
.map_err(to_py_err)?;
284-
285-
let (markdown, metadata) = result;
286-
let metadata_dict = extended_metadata_to_py(py, metadata)?;
287-
Ok((markdown, metadata_dict))
288-
}
289-
290264
/// Convert HTML to Markdown with metadata using a pre-parsed options handle.
291265
#[pyfunction]
292266
#[pyo3(signature = (html, handle, metadata_config=None))]

crates/html-to-markdown-py/src/conversion/mod.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ pub mod metadata;
1010

1111
// Re-export all pyfunction-decorated conversion functions
1212
#[cfg(feature = "inline-images")]
13-
pub use inline_images::{
14-
convert_with_inline_images, convert_with_inline_images_handle, convert_with_inline_images_json,
15-
};
13+
pub use inline_images::{convert_with_inline_images, convert_with_inline_images_handle};
1614

1715
#[cfg(feature = "metadata")]
18-
pub use metadata::{convert_with_metadata, convert_with_metadata_handle, convert_with_metadata_json};
16+
pub use metadata::{convert_with_metadata, convert_with_metadata_handle};

0 commit comments

Comments
 (0)