Skip to content

Commit

Permalink
fix code block display bug
Browse files Browse the repository at this point in the history
  • Loading branch information
binary-husky committed Jan 9, 2025
1 parent 4ca331f commit 7eeab9e
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 5 deletions.
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ scipdf_parser>=0.52
spacy==3.7.4
anthropic>=0.18.1
python-markdown-math
pymdown-extensions
pymdown-extensions>=10.14
websocket-client
beautifulsoup4
prompt_toolkit
Expand Down
30 changes: 29 additions & 1 deletion shared_utils/advanced_markdown_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,24 @@ def markdown_convertion(txt):
)


def code_block_title_replace_format(match):
lang = match.group(1)
filename = match.group(2)
return f"```{lang} {{title=\"{filename}\"}}\n"


def get_last_backticks_indent(text):
# 从后向前查找最后一个 ```
lines = text.splitlines()
for line in reversed(lines):
if '```' in line:
# 计算前面的空格数量
indent = len(line) - len(line.lstrip())
return indent
return 0 # 如果没找到返回0


@lru_cache(maxsize=16) # 使用lru缓存
def close_up_code_segment_during_stream(gpt_reply):
"""
在gpt输出代码的中途(输出了前面的```,但还没输出完后面的```),补上后面的```
Expand All @@ -398,14 +416,24 @@ def close_up_code_segment_during_stream(gpt_reply):
"""
if "```" not in gpt_reply:
return gpt_reply

# replace [```python:warp.py] to [```python {title="warp.py"}]
pattern = re.compile(r"```([a-z]{1,12}):([^:\n]{1,35}\.([a-zA-Z^:\n]{1,3}))\n")
if pattern.search(gpt_reply):
gpt_reply = pattern.sub(code_block_title_replace_format, gpt_reply)

if gpt_reply.endswith("```"):
return gpt_reply

# 排除了以上两个情况,我们
segments = gpt_reply.split("```")
n_mark = len(segments) - 1
if n_mark % 2 == 1:
return gpt_reply + "\n```" # 输出代码片段中!
try:
num_padding = get_last_backticks_indent(gpt_reply)
except:
num_padding = 0
return gpt_reply + "\n" + " "*num_padding + "```" # 输出代码片段中!
else:
return gpt_reply

Expand Down
35 changes: 32 additions & 3 deletions tests/test_markdown.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
md = """
Following code including wrapper
```mermaid
```python:wrapper.py
graph TD
A[Enter Chart Definition] --> B(Preview)
B --> C{decide}
Expand All @@ -41,6 +41,33 @@
</details>
"""

md ="""
在这种场景中,您希望机器 B 能够通过轮询机制来间接地“请求”机器 A,而实际上机器 A 只能主动向机器 B 发出请求。这是一种典型的客户端-服务器轮询模式。下面是如何实现这种机制的详细步骤:
### 机器 B 的实现
1. **安装 FastAPI 和必要的依赖库**:
```bash
pip install fastapi uvicorn
```
2. **创建 FastAPI 服务**:
```python
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from uuid import uuid4
from threading import Lock
import time
app = FastAPI()
# 字典用于存储请求和状态
requests = {}
process_lock = Lock()
"""
def validate_path():
import os, sys
Expand All @@ -53,10 +80,12 @@ def validate_path():

validate_path() # validate path so you can run from base directory
from toolbox import markdown_convertion
from shared_utils.advanced_markdown_format import markdown_convertion_for_file
# from shared_utils.advanced_markdown_format import markdown_convertion_for_file
from shared_utils.advanced_markdown_format import close_up_code_segment_during_stream
# with open("gpt_log/default_user/shared/2024-04-22-01-27-43.zip.extract/translated_markdown.md", "r", encoding="utf-8") as f:
# md = f.read()
html = markdown_convertion_for_file(md)
md = close_up_code_segment_during_stream(md)
html = markdown_convertion(md)
# print(html)
with open("test.html", "w", encoding="utf-8") as f:
f.write(html)
Expand Down

0 comments on commit 7eeab9e

Please sign in to comment.