From ec21913201b99edc09eacff300f5424e28fcc4ac Mon Sep 17 00:00:00 2001 From: j-james Date: Mon, 17 Oct 2022 08:53:19 -0700 Subject: Add skeleton of console UI --- src/main/ui/BrowserApp.java | 60 +++++++++++++++++++++++++++++++++++++++++++++ src/main/ui/Main.java | 2 +- 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/main/ui/BrowserApp.java (limited to 'src') diff --git a/src/main/ui/BrowserApp.java b/src/main/ui/BrowserApp.java new file mode 100644 index 0000000..521a28f --- /dev/null +++ b/src/main/ui/BrowserApp.java @@ -0,0 +1,60 @@ +package ui; + +import model.html.ElementNode; +import model.html.HtmlParser; +import model.html.TextNode; +import model.util.Node; + +import java.nio.file.*; +import java.util.*; + +/** + * The console interface to Apus. + */ +public class BrowserApp { + private Scanner input; + + /** + * EFFECTS: Renders an arbitrary HTML page and arbitrary HTML input. + */ + public BrowserApp() { + println("apus: currently a barebones html/css renderer"); + println("please provide a path to a file (examples located in data/*):"); + + String pathString = input.next(); + Path path = Path.of(pathString); + try { + String file = Files.readString(path); + HtmlParser parser = new HtmlParser(); + renderHtml(parser.parseHtml(file)); + println("Page rendered. Input raw HTML to add Nodes."); + parser = new HtmlParser(); + String rawHtml = input.next(); + renderHtml(parser.parseHtml(file + rawHtml)); + } catch (Exception e) { + println("Reading from the file failed with " + e.toString()); + } + } + + /** + * EFFECTS: Barebones HTML rendering. Iterates through a list of Nodes and their children and prints any text. + */ + private void renderHtml(ArrayList html) { + for (Node node: html) { + if (node instanceof TextNode) { + println(node.getData()); + } else { + renderHtml(((ElementNode) node).getChildren()); + } + } + } + + private void print(String toPrint) { + System.out.print(toPrint); + } + + private void println(String toPrint) { + System.out.println(toPrint); + } + +} diff --git a/src/main/ui/Main.java b/src/main/ui/Main.java index d80be21..841576f 100644 --- a/src/main/ui/Main.java +++ b/src/main/ui/Main.java @@ -2,6 +2,6 @@ package ui; public class Main { public static void main(String[] args) { - + new BrowserApp(); } } -- cgit v1.2.3-70-g09d2