Spaces:
Sleeping
Sleeping
import gradio as gr | |
import difflib | |
# Sample dataset as a single string | |
dataset_str = """ | |
say "Hello World!" [END] | |
permission "request" "account" | |
permission "get" | |
if permissions.contains("account") ( | |
pass = "what do you want your password to be?".ask.to("md5") | |
network "update" "password" pass | |
) [END] | |
def "factorial" "n" | |
result = 1 | |
count = 0 | |
loop n ( | |
count ++ | |
result *= count | |
) | |
return = result | |
endef | |
number = 6 | |
factorial number | |
say "Factorial of" + number + "is" + return [END] | |
permission "request" "File Admin" | |
count = 0 | |
filelength = 0 | |
loop 500 ( | |
count += 1 | |
file "open" "id" count | |
filelength += file.join(" ").len | |
) | |
say "Your drive is" + filelength + "characters long" [END] | |
txt = "" | |
loop 9999 ( | |
txt = txt ++ newline ++ [0,999999999].random.to("md5") | |
) | |
clipboard "set" txt [END] | |
people_x = "array".new(100) | |
people_y = "array".new(100) | |
pd = "array".new(100) | |
count = 0 | |
loop 100 ( | |
count += 1 | |
people_x.[count] = 0 | |
people_y.[count] = 0 | |
pd.[count] = 0 | |
) | |
mainloop: | |
count = 0 | |
c #fff | |
loop 20 ( | |
count += 1 | |
goto people_x.[count].destr people_y.[count].destr | |
icon "w 4 dot 0 0" 1 | |
d = [0,0].dist(x_position,y_position) | |
if d.int >= 100 "pd.[count] += 180" | |
people_x.[count] += pd.[count].destr.sin * ( d / 10 + 1 ) | |
people_y.[count] += pd.[count].destr.cos * ( d / 10 + 1 ) | |
pd.[count] += [-10,10].random | |
) | |
import "win-buttons" [END] | |
calc = ["0","","0"] | |
window "show" | |
window "resizable" false | |
window "dimensions" 300 400 | |
def "drawrow" | |
c = 0 | |
loop row.len ( | |
c += 1 | |
square 50 50 10 : chx#-10 chy#-70 c#222 | |
text row.[c] 20 : c#fff chx#-10 | |
) | |
endef | |
mainloop: | |
loc 999 2 0 -20 | |
square window_width 30 10 : c#222 | |
loc -2 2 -20 -20 | |
icon "close" 0.8 : c#fff | |
if clicked "window stop" | |
loc 2 2 10 -20 | |
text "Calculator" 10 | |
displ = calc.[1] | |
if calc.[2] != "" "displ = displ + calc.[2].destr" | |
row = "147." | |
loc 2 2 45 -75 | |
drawrow | |
row = "2580" | |
loc 2 2 115 -75 | |
drawrow | |
row = "369" | |
loc 2 2 185 -75 | |
drawrow | |
c2 = calc.[2].destr | |
row = "+-*/" | |
loc 2 2 255 -75 | |
c = 0 | |
loop row.len ( | |
c += 1 | |
r = row.[c] | |
c #333 | |
if c2.destr == r "c #f79204" | |
square 50 50 10 : chx#-10 chy#-70 | |
if onclick ( | |
calc.[2] = r | |
if c2 == r "calc.[2] = null" | |
) | |
text r 20 : c#fff chx#-10 | |
) | |
row = "369=" | |
loc 2 2 185 -75 | |
drawrow | |
loc 2 2 20 -70 | |
text displ 20 : c#fff [END] | |
""" | |
# Convert the dataset string to a list of words | |
dataset = dataset_str.split() | |
# Function to correct misspelled word | |
def correct_word(input_word): | |
matches = difflib.get_close_matches(input_word, dataset) | |
corrected_word = matches[0] if matches else input_word | |
return corrected_word | |
# Function to predict using difflib | |
def predict(input_word): | |
matches = difflib.get_close_matches(input_word, dataset) | |
next_word = matches[0] if matches else "[?]" | |
if next_word != "[?]": | |
index = dataset.index(next_word) | |
next_word = dataset[index + 1] if index < len(dataset) - 1 else "[?]" | |
return next_word | |
# Function to generate text | |
def generate_text(input_text, num_predictions=3): | |
input_word = input_text.split()[-1].lower() # Convert input to lowercase and take the last word | |
corrected_input = correct_word(input_word) # Correct the input word | |
predictions = [] | |
for _ in range(num_predictions): | |
prediction = predict(input_word) | |
predictions.append(prediction) | |
if prediction == "[?]": # Stop generating if no more predictions are possible | |
break | |
input_word = prediction # Update input word for next prediction | |
aa = " ".join(predictions) | |
answer = corrected_input + " " + aa | |
return answer | |
additional_inputs=[ | |
gr.Slider( | |
label="Max Next Tokens", | |
value=2, | |
minimum=1, | |
maximum=10, | |
step=1, | |
interactive=True, | |
info="Lower values are recomended.", | |
) | |
] | |
# Create interface | |
iface = gr.Interface( | |
fn=generate_text, | |
inputs="text", | |
outputs="text", | |
title="OSL Code Completion", | |
description="Version: 0.3", | |
live=True, | |
additional_inputs=additional_inputs, | |
) | |
# Launch interface | |
iface.launch() |