convert function
Implementation
ConversionResult convert(
String html, {
ConversionOptions? options,
Visitor? visitor,
}) {
final lib = NativeLibrary();
final arena = Arena();
final bridge = visitor != null ? VisitorBridge(visitor) : null;
try {
final htmlPtr = html.toNativeUtf8(allocator: arena);
final optionsPtr = _createOptions(lib, options, arena);
// Attach visitor bridge if provided
if (bridge != null) {
bridge.attach(optionsPtr);
}
final resultPtr = lib.htmConvert(htmlPtr, optionsPtr);
if (resultPtr == nullptr) {
checkLastError();
throw const ConversionErrorException('Conversion returned null result');
}
final jsonPtr = lib.htmConversionResultToJson(resultPtr);
final json = jsonPtr.toDartString();
lib.htmFreeString(jsonPtr);
final map = dart_convert.jsonDecode(json);
final result = ConversionResult.fromJson(map as Map<String, dynamic>);
lib.htmConversionResultFree(resultPtr);
return result;
} finally {
bridge?.close();
arena.releaseAll();
}
}