diff --git a/Backend-libXML/Parser.py b/Backend-libXML/Parser.py index 56b0d8b..0357cd8 100644 --- a/Backend-libXML/Parser.py +++ b/Backend-libXML/Parser.py @@ -1,7 +1,28 @@ -from lxml import etree +from lxml import etree, html from io import BytesIO +def convertHTML(source: str, sourceFrom: str): + htmlParser = html.HTMLParser(remove_comments=True, remove_blank_text=True) + xmlParser = etree.XMLParser(remove_comments=True, remove_blank_text=True) + + if sourceFrom == "xml": + xmldoc = etree.parse(BytesIO(source.encode("utf-8")), xmlParser) + return html.tostring(xmldoc, method="html", pretty_print=True).decode() + elif sourceFrom == "html": + htmldoc = html.parse(BytesIO(source.encode("utf-8")), htmlParser) + return etree.tostring(htmldoc, method="xml", pretty_print=True, doctype="", xml_declaration=True, encoding="utf-8").decode() + else: + return + + +def formatHTML(source: str, prettify: bool) -> str: + parser = html.HTMLParser(remove_blank_text=True, remove_comments=True, remove_pis=True) + htmlDoc = html.parse(BytesIO(source.encode("utf-8")),parser=parser) + if not prettify: + return html.tostring(htmlDoc).decode().replace("\n", "").replace("> ", ">") + return etree.tostring(htmlDoc, encoding='unicode', pretty_print=True) + def formatXML(source: str, prettify: bool) -> str: """Method used to format XML diff --git a/Backend-libXML/main.py b/Backend-libXML/main.py index 9155395..abb78f9 100644 --- a/Backend-libXML/main.py +++ b/Backend-libXML/main.py @@ -40,6 +40,12 @@ def process_xml(request: request, type: str) -> str: response_json['result'] = Parser.formatXML(data, True) elif (type == "minimize"): response_json['result'] = Parser.formatXML(data, False) + elif (type == "prettifyHtml"): + response_json['result'] = Parser.formatHTML(data, True) + elif (type == "minimizeHtml"): + response_json['result'] = Parser.formatHTML(data, False) + elif (type == "convertHTML"): + response_json['result'] = Parser.convertHTML(data, process) else: raise ValueError("Valid operation types are: xsd, xslt, xpath") @@ -79,5 +85,17 @@ def prettify(): def minimize(): return process_xml(request, "minimize") +@app.route("/html/prettify",methods=["POST"]) +def prettifyHtml(): + return process_xml(request, "prettifyHtml") + +@app.route("/html/minimize",methods=["POST"]) +def minimizeHtml(): + return process_xml(request, "minimizeHtml") + +@app.route("/html/convert",methods=["POST"]) +def XMLToHTMLConvertion(): + return process_xml(request, "convertHTML") + if __name__ == "__main__": app.run() \ No newline at end of file diff --git a/Frontend/src/assets/sampleHtml.html b/Frontend/src/assets/sampleHtml.html index a3c6a41..676a15d 100644 --- a/Frontend/src/assets/sampleHtml.html +++ b/Frontend/src/assets/sampleHtml.html @@ -9,5 +9,6 @@

Hello World!

That's paragraph

+
\ No newline at end of file diff --git a/Frontend/src/components/formatter/HtmlButtonFormatterComponent.vue b/Frontend/src/components/formatter/HtmlButtonFormatterComponent.vue index 059217e..3a64814 100644 --- a/Frontend/src/components/formatter/HtmlButtonFormatterComponent.vue +++ b/Frontend/src/components/formatter/HtmlButtonFormatterComponent.vue @@ -6,12 +6,45 @@ const props = defineProps( } ) +function chooseType(formatType: String){ + if (formatType == "XML Converter"){ + return "convert"; + } + return formatType.toLowerCase(); +} + +function getTypeInfo(){ + if( props.code.startsWith(" response.json() ) + .then( formattedCode => emit('update:result', processResponse(formattedCode) ) ) } diff --git a/Frontend/src/views/HtmlFormatterView.vue b/Frontend/src/views/HtmlFormatterView.vue index 4627f8f..4e16a32 100644 --- a/Frontend/src/views/HtmlFormatterView.vue +++ b/Frontend/src/views/HtmlFormatterView.vue @@ -2,6 +2,7 @@ import InsertTemplateComponent from '@components/common/InsertTemplateComponent.vue'; import CodeEditorComponent from '@/components/CodeEditorComponent.vue'; import { ref } from 'vue'; +import HtmlButtonFormatterComponent from '@/components/formatter/HtmlButtonFormatterComponent.vue'; const html = ref(''); @@ -11,7 +12,7 @@ function clear() { } function setTextFieldValue(data: string) { - html.value = data + html.value = data.toString() } @@ -21,8 +22,11 @@ function setTextFieldValue(data: string) {
HTML Formatter
- + + + +