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()