File size: 3,139 Bytes
f6a67e3 5ee6650 f6a67e3 a94700e f6a67e3 4d0572e a94700e 9bfc5c9 4d0572e f6a67e3 a94700e f6a67e3 5ee6650 f6a67e3 4d0572e f6a67e3 4d0572e f6a67e3 4d0572e f6a67e3 5ee6650 f6a67e3 4d0572e f6a67e3 9bfc5c9 f6a67e3 9bfc5c9 5ee6650 4d0572e f6a67e3 |
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 |
from __future__ import absolute_import
from __future__ import print_function
__author__ = 'Taneem Jan, taneemishere.github.io'
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
|