Spaces:
Sleeping
Sleeping
from __future__ import absolute_import | |
from __future__ import print_function | |
__author__ = '' | |
import os.path | |
from os.path import basename | |
from classes.Sampler import * | |
from classes.model.Main_Model import * | |
def dsl_code_generation(input_image): | |
trained_weights_path = "classes/model/bin" | |
trained_model_name = "Main_Model" | |
input_path = input_image | |
output_path = "data/output/" | |
search_method = "greedy" | |
meta_dataset = np.load("{}/meta_dataset.npy".format(trained_weights_path), allow_pickle=True) | |
input_shape = meta_dataset[0] | |
output_size = meta_dataset[1] | |
model = Main_Model(input_shape, output_size, trained_weights_path) | |
model.load(trained_model_name) | |
sampler = Sampler(trained_weights_path, input_shape, output_size, CONTEXT_LENGTH) | |
file_name = 'input_image_from_interface.png' | |
file_name = basename(file_name)[:basename(file_name).find(".")] | |
evaluation_img = Utils.get_preprocessed_img(input_path, IMAGE_SIZE) | |
if search_method == "greedy": | |
result, _ = sampler.predict_greedy(model, np.array([evaluation_img])) | |
print("Result greedy: \n {}".format(result)) | |
with open("{}/{}.gui".format(output_path, file_name), 'w') as out_f: | |
out_f.write(result.replace(START_TOKEN, "").replace(END_TOKEN, "")) | |
return file_name, output_path | |
def compile_gui(file_path, filename): | |
from os.path import basename | |
from compiler.Utils import Utils | |
from compiler.Compiler import Compiler | |
input_path = (file_path + filename) | |
# remove the path | |
file_ = os.path.basename(input_path) | |
# remove the extension | |
file_ = os.path.splitext(file_)[0] | |
# add the extension of gui | |
file_ = "data/output/" + file_ + ".gui" | |
input_file = file_ | |
FILL_WITH_RANDOM_TEXT = True | |
TEXT_PLACE_HOLDER = "[]" | |
dsl_path = "compiler/assets/web-dsl-mapping.json" | |
compiler = Compiler(dsl_path) | |
def render_content_with_text(key, value): | |
if FILL_WITH_RANDOM_TEXT: | |
if key.find("btn") != -1: | |
value = value.replace(TEXT_PLACE_HOLDER, Utils.get_random_text()) | |
elif key.find("title") != -1: | |
value = value.replace(TEXT_PLACE_HOLDER, Utils.get_random_text(length_text=5, space_number=0)) | |
elif key.find("text") != -1: | |
value = value.replace(TEXT_PLACE_HOLDER, | |
Utils.get_random_text(length_text=56, space_number=7, with_upper_case=False)) | |
return value | |
file_uid = basename(input_file)[:basename(input_file).find(".")] | |
path = input_file[:input_file.find(file_uid)] | |
input_file_path = "{}{}.gui".format(path, file_uid) | |
output_file_path = "{}{}.html".format(path, file_uid) | |
html_code = compiler.compile(input_file_path, output_file_path, rendering_function=render_content_with_text) | |
print("Generated code is compiled..!!") | |
return html_code | |
def main_method(input_image_from_interface): | |
file_name, file_output_path = dsl_code_generation(input_image_from_interface) | |
result = compile_gui(file_output_path, file_name) | |
return result | |