}
case class PortalNode
(id
: NodeID, title
: String, links
: Seq
[NodeID
]) extends Node
////////////////////////////////////////////////////////////////////////////////
}
}
trait PortalNodeHTMLRenderer
extends HTMLRenderer
[PortalNode
] { this: PortalNode
=> }
////////////////////////////////////////////////////////////////////////////////
val htmlNode
= new HTMLNode
(NodeID
(1),
"Hello, world!",
<strong
>Woo
!</strong
>) with HTMLNodeHTMLRenderer
println(htmlNode.asHTML)
val portalNode
= new PortalNode
(NodeID
(1),
"Hello!", Seq
(NodeID
(2), NodeID
(3))) with PortalNodeHTMLRenderer
println(portalNode.asHTML)
}
aW1wb3J0IHNjYWxhLnhtbAoKY2FzZSBjbGFzcyBOb2RlSUQoaWQ6IExvbmcpCgphYnN0cmFjdCBjbGFzcyBOb2RlIHsKICAgIGRlZiBpZDogTm9kZUlECiAgICBkZWYgdGl0bGU6IFN0cmluZwp9CgpjYXNlIGNsYXNzIEhUTUxOb2RlKGlkOiBOb2RlSUQsIHRpdGxlOiBTdHJpbmcsIGJvZHk6IHhtbC5FbGVtKSBleHRlbmRzIE5vZGUKY2FzZSBjbGFzcyBQb3J0YWxOb2RlKGlkOiBOb2RlSUQsIHRpdGxlOiBTdHJpbmcsIGxpbmtzOiBTZXFbTm9kZUlEXSkgZXh0ZW5kcyBOb2RlCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKdHJhaXQgSFRNTFJlbmRlcmVyW04gPDogTm9kZV0geyB0aGlzOiBOID0+CiAgICBkZWYgYXNIVE1MOiB4bWwuRWxlbQp9Cgp0cmFpdCBIVE1MTm9kZUhUTUxSZW5kZXJlciBleHRlbmRzIEhUTUxSZW5kZXJlcltIVE1MTm9kZV0geyB0aGlzOiBIVE1MTm9kZSA9PgogICAgb3ZlcnJpZGUgZGVmIGFzSFRNTCA9IGJvZHkKfQoKdHJhaXQgUG9ydGFsTm9kZUhUTUxSZW5kZXJlciBleHRlbmRzIEhUTUxSZW5kZXJlcltQb3J0YWxOb2RlXSB7IHRoaXM6IFBvcnRhbE5vZGUgPT4KICAgIG92ZXJyaWRlIGRlZiBhc0hUTUwgPSA8dWw+e2ZvciAobGluayA8LSBsaW5rcykgeWllbGQgPGxpPntsaW5rfTwvbGk+fTwvdWw+Cn0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgpvYmplY3QgTWFpbiBleHRlbmRzIEFwcCB7CiAgICB2YWwgaHRtbE5vZGUgPSBuZXcgSFRNTE5vZGUoTm9kZUlEKDEpLCAiSGVsbG8sIHdvcmxkISIsIDxzdHJvbmc+V29vITwvc3Ryb25nPikgd2l0aCBIVE1MTm9kZUhUTUxSZW5kZXJlcgogICAgcHJpbnRsbihodG1sTm9kZS5hc0hUTUwpCgogICAgdmFsIHBvcnRhbE5vZGUgPSBuZXcgUG9ydGFsTm9kZShOb2RlSUQoMSksICJIZWxsbyEiLCBTZXEoTm9kZUlEKDIpLCBOb2RlSUQoMykpKSB3aXRoIFBvcnRhbE5vZGVIVE1MUmVuZGVyZXIKICAgIHByaW50bG4ocG9ydGFsTm9kZS5hc0hUTUwpCn0K