File size: 3,044 Bytes
cad809b | 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | """
Code Snippet Generator - HuggingFace Space
Generates ready-to-use code snippets for common development tasks.
"""
import gradio as gr
import json
# Code snippet templates
SNIPPETS = {
"Python": {
"File Operations": """
# Read file
with open('file.txt', 'r') as f:
content = f.read()
# Write file
with open('file.txt', 'w') as f:
f.write('content')
# JSON
import json
with open('data.json') as f:
data = json.load(f)
# CSV
import csv
with open('data.csv') as f:
reader = csv.DictReader(f)
for row in reader:
pass
""",
"Error Handling": """
try:
result = risky_operation()
except ValueError as e:
handle_error(e)
except (TypeError, KeyError):
pass
else:
success_case()
finally:
cleanup()
""",
},
"JavaScript": {
"Async/Await": """
// Fetch with async/await
async function getData(url) {
try {
const res = await fetch(url);
const data = await res.json();
return data;
} catch (err) {
console.error(err);
}
}
// Parallel requests
const [users, posts] = await Promise.all([
fetch('/users').then(r => r.json()),
fetch('/posts').then(r => r.json())
]);
""",
"Array Methods": """
// Map, filter, reduce
const doubled = arr.map(x => x * 2);
const evens = arr.filter(x => x % 2 === 0);
const sum = arr.reduce((a, b) => a + b, 0);
// Find first match
const user = users.find(u => u.id === targetId);
// Group by property
const grouped = arr.reduce((acc, item) => {
(acc[item.type] = acc[item.type] || []).push(item);
return acc;
}, {});
""",
},
}
def generate_snippet(language, task):
"""Generate a code snippet for the given language and task"""
if language in SNIPPETS:
for task_name, snippet in SNIPPETS[language].items():
if task.lower() in task_name.lower() or task_name.lower() in task.lower():
return snippet
# Default response
return f"# {language} snippet for: {task}\n\n// Generated by Code Snippet Generator\n// Customize this template as needed\n\ndef task():\n pass"
# Gradio interface
with gr.Blocks() as demo:
gr.Markdown("""
# Code Snippet Generator
Get ready-to-use code snippets for common development tasks.
**Languages:** Python, JavaScript, SQL, Bash
**Tasks:** File I/O, Error Handling, Async, Array Operations, and more
""")
with gr.Row():
language = gr.Dropdown(
choices=["Python", "JavaScript", "SQL", "Bash"],
value="Python",
label="Language"
)
task = gr.Dropdown(
choices=["File Operations", "Error Handling", "Async/Await", "Array Methods"],
value="File Operations",
label="Task"
)
generate_btn = gr.Button("Generate Snippet", variant="primary")
output = gr.Code(label="Generated Code", language="python")
generate_btn.click(
fn=generate_snippet,
inputs=[language, task],
outputs=output
)
if __name__ == "__main__":
demo.launch()
|