mesaman123's picture
Initial code snippet generator space
cad809b verified
"""
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()