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