-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathscript.js
More file actions
81 lines (69 loc) · 2.8 KB
/
script.js
File metadata and controls
81 lines (69 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
document.getElementById('generateLink').addEventListener('click', () => {
const title = document.getElementById('fileTitle').value.trim();
const codeInput = document.getElementById('codeInput').value.trim();
const fileInput = document.getElementById('fileInput').files[0];
if (!title) {
alert('Please enter a file title.');
return;
}
if (fileInput && fileInput.size > 10 * 1024 * 1024) {
alert('File size must be under 10 MB.');
return;
}
if (codeInput) {
processCode(codeInput, title);
} else if (fileInput) {
const reader = new FileReader();
reader.onload = () => processCode(reader.result, title);
reader.readAsText(fileInput);
} else {
alert('Please paste code or upload a file.');
}
});
function processCode(code, title) {
const detectedLanguage = detectLanguage(code);
const fileName = `${title}.${detectedLanguage.extension}`;
const blob = new Blob([code], { type: 'text/plain' });
const link = URL.createObjectURL(blob);
displayResult(link, fileName, code, title);
}
function detectLanguage(code) {
// Simple detection based on common patterns in code
const languages = {
javascript: { extension: 'js', pattern: /function\s+/ },
python: { extension: 'py', pattern: /def\s+/ },
html: { extension: 'html', pattern: /<html>/ },
css: { extension: 'css', pattern: /body\s*{/ },
java: { extension: 'java', pattern: /public\s+class\s+/ },
cpp: { extension: 'cpp', pattern: /#include\s<.*>/ },
c: { extension: 'c', pattern: /#include\s<.*>/ },
txt: { extension: 'txt', pattern: /./ }
};
for (const lang in languages) {
if (languages[lang].pattern.test(code)) {
return languages[lang];
}
}
return languages.txt; // Default to text if not matched
}
function displayResult(link, fileName, code, title) {
const resultDiv = document.getElementById('result');
const previewLink = `preview.html?title=${encodeURIComponent(title)}&code=${encodeURIComponent(code)}`;
resultDiv.innerHTML = `
<p>File generated: <strong>${fileName}</strong></p>
<a href="${link}" download="${fileName}">Download</a>
<span>|</span>
<a href="${previewLink}" target="_blank">Preview</a>
`;
resultDiv.style.display = 'block';
}
function generateLink() {
const code = document.getElementById("code").value;
const title = document.getElementById("title").value || "untitled";
const encodedCode = encodeURIComponent(code);
const link = `${window.location.origin}/preview.html?title=${title}&code=${encodedCode}`;
document.getElementById("generatedLink").innerHTML = `
<p>Share this link:</p>
<a href="${link}" target="_blank">${link}</a>
`;
}