Skip to content

Commit

Permalink
Improve the demo
Browse files Browse the repository at this point in the history
  • Loading branch information
zhuowei committed Jun 7, 2019
1 parent b46343b commit 9feb56d
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 19 deletions.
14 changes: 14 additions & 0 deletions main.swift
@@ -1,3 +1,17 @@
struct MarinaDemo : View {
var body: some View {
HStack {
Text("Oh hello")
Text("This doesn't work")
if true {
Image(url: "hello.jpg", label: Text("Hello"))
} else {
Text("Not true")
}
}
}
}

let emitter = DOMEmitter()
render(view: MarinaDemo(), emitter: emitter)
print(emitter.buffer)
22 changes: 8 additions & 14 deletions marina.swift
Expand Up @@ -211,27 +211,21 @@ enum RenderingMode {
case automatic
}

struct Image: View {
protocol MarinaImageAccess: MarinaViewContentAccessor {
}

struct Image: View, MarinaImageAccess {
var body:Never {
fatalError("Image has no body")
}
var content:String
init(url: String, label: Text) {
self.content = url
}
func renderingMode(_ renderingMode: RenderingMode) -> Image {
return self
}
}

struct MarinaDemo : View {
var body: some View {
HStack {
Text("Oh hello")
Text("This doesn't work")
if true {
Text("Oh hey")
} else {
//Text("Not true")
}
}
func getContent() -> Any {
return content
}
}
13 changes: 8 additions & 5 deletions marina_html.swift
Expand Up @@ -33,12 +33,12 @@ class DOMEmitter {
}
}
func render(view: Any, emitter: DOMEmitter) {
print("Rendering", view)
//print("Rendering", view)
if String(describing: view) == "nil" {
return
}
let className = classNameRemovingGenerics(view)
print(_typeName(type(of: view), qualified: true))
//print(_typeName(type(of: view), qualified: true))
switch className {
case "HStack":
emitter.emit("div", ["class": "marina-hstack"])
Expand All @@ -61,7 +61,7 @@ func render(view: Any, emitter: DOMEmitter) {
emitter.text(v.getContent() as! String)
emitter.close("div")
case "TupleView":
print("TupleView")
//print("TupleView")
let v = view as! MarinaTupleViewAccess
let content = v.getContent()
let mirror = Mirror(reflecting: content)
Expand All @@ -71,13 +71,16 @@ func render(view: Any, emitter: DOMEmitter) {
}
}
case "ConditionalContent":
print("ConditionalContent")
//print("ConditionalContent")
let v = view as! MarinaConditionalContentAccess
render(view: v.getContent(), emitter: emitter)
case "Image":
let v = view as! MarinaImageAccess
emitter.emit("img", ["class": "marina-text", "src": v.getContent() as! String])
case "EmptyView":
do {}
default:
print("Unsupported view type: " + className)
//print("Unsupported view type: " + className)
let v = view as! MarinaViewBodyAccessor
render(view: v.getBody(), emitter: emitter)
}
Expand Down

0 comments on commit 9feb56d

Please sign in to comment.