From 9bbf5475173d23130a9da651d2b35a0e03410c1a Mon Sep 17 00:00:00 2001 From: Athroniaeth Date: Tue, 21 Jan 2025 23:59:25 +0100 Subject: [PATCH] =?UTF-8?q?Add=20=E2=80=9Cconvert=5Flocal=5Fcontent?= =?UTF-8?q?=E2=80=9D=20method=20to=20set=20failed=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/markitdown/_markitdown.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/markitdown/_markitdown.py b/src/markitdown/_markitdown.py index 33806e1..e708375 100644 --- a/src/markitdown/_markitdown.py +++ b/src/markitdown/_markitdown.py @@ -13,6 +13,7 @@ import sys import tempfile import traceback import zipfile +from tempfile import NamedTemporaryFile from xml.dom import minidom from typing import Any, Dict, List, Optional, Union from pathlib import Path @@ -1431,6 +1432,23 @@ class MarkItDown: elif isinstance(source, Path): return self.convert_local(source, **kwargs) + def convert_local_content(self, content: str, **kwargs: Any) -> DocumentConverterResult: + """Directly converts file content to Markdown.""" + ext = kwargs.get("file_extension", ".unknown") + encoding = kwargs.get("encoding", "utf-8") + + # Note: NamedTemporaryFile is not used because the file is not closed until the context manager exits + fd, temp_path = tempfile.mkstemp(suffix=ext, text=True) + try: + with os.fdopen(fd, "w", encoding=encoding) as temp_file: + temp_file.write(content) + + result = self.convert_local(temp_path, **kwargs) + finally: + os.remove(temp_path) + + return result + def convert_local( self, path: Union[str, Path], **kwargs: Any ) -> DocumentConverterResult: # TODO: deal with kwargs