add prettier
This commit is contained in:
parent
82982910ca
commit
4e0df6c740
@ -3,6 +3,7 @@ import { marked } from "marked";
|
||||
import { toast } from "react-toastify";
|
||||
import { useStore } from "./store.js";
|
||||
import { resourcesInstance, apiInstance } from "./api.js";
|
||||
import { prettifyMarkdown } from "./utils.js";
|
||||
|
||||
function LoadingWrapper() {
|
||||
const isLoading = useStore((state) => state.isLoading);
|
||||
@ -204,11 +205,9 @@ const ResourcePage = ({ topics }) => {
|
||||
}
|
||||
};
|
||||
|
||||
const handleCancel = () => {
|
||||
if (window.confirm("Сигурни ли сте, че искате да затворите страницата?")) {
|
||||
window.close();
|
||||
}
|
||||
};
|
||||
function handlePrettify() {
|
||||
setContent((prev) => prettifyMarkdown(prev));
|
||||
}
|
||||
|
||||
const handleCopyContent = async () => {
|
||||
try {
|
||||
@ -318,7 +317,7 @@ const ResourcePage = ({ topics }) => {
|
||||
onClick={handleDeleteAll}
|
||||
className="bg-red-600 text-sm text-white px-2 py-1 rounded-md hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 transition-colors"
|
||||
>
|
||||
Изтрий всичко
|
||||
Изтрий
|
||||
</button>
|
||||
|
||||
<button
|
||||
@ -327,6 +326,12 @@ const ResourcePage = ({ topics }) => {
|
||||
>
|
||||
Възстанови оригинал
|
||||
</button>
|
||||
<button
|
||||
onClick={handlePrettify}
|
||||
className="bg-blue-600 text-sm text-white px-2 py-1 rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-colors"
|
||||
>
|
||||
Оправи текст
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{isSavingLoading && <span className="flex justify-end mr-8">Saving...</span>}
|
||||
|
||||
@ -8,3 +8,37 @@ export function getIndexFromTopicId(topicId) {
|
||||
|
||||
return [Number(match[1]) - 1];
|
||||
}
|
||||
|
||||
export function prettifyMarkdown(markdown) {
|
||||
if (!markdown || typeof markdown !== "string") {
|
||||
return "";
|
||||
}
|
||||
|
||||
let text = markdown;
|
||||
|
||||
// 1. Trim lines
|
||||
text = text
|
||||
.split("\n")
|
||||
.map((line) => line.trim())
|
||||
.join("\n");
|
||||
|
||||
// 2. Fix whitespace (normalize multiple spaces to single space)
|
||||
text = text.replace(/[ \t]+/g, " ");
|
||||
|
||||
// 3. Convert bold from __ to **
|
||||
text = text.replace(/__/g, "**");
|
||||
|
||||
// 4. Convert list markers from * to - and fix spacing
|
||||
text = text.replace(/^\* /gm, "- ");
|
||||
text = text.replace(/^-([^ ])/gm, "- $1");
|
||||
|
||||
// 5. Add empty lines before and after headers
|
||||
text = text.replace(/^(#{1,6} .+)$/gm, "\n$1\n");
|
||||
|
||||
// 6. Clean up excessive newlines
|
||||
text = text.replace(/\n{3,}/g, "\n\n");
|
||||
text = text.replace(/^\n+/, "");
|
||||
text = text.replace(/\n+$/, "");
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user