Skip to content

Instantly share code, notes, and snippets.

// "фиксированная" структура
sealed trait BinTree
final case class BinNode(t1: BinTree, t2: BinTree) extends BinTree
final case class Leaf(v: Int) extends BinTree
// в фиксированном варианте возможно только создание простых деревьев,
// их структура заранее зафиксирована в определениях BinNode и Leaf
BinNode(Leaf(1),BinNode(Leaf(2),Leaf(3)))
// к примеру, невозможно создать дерево с необязательными элементами
// оно не скомпилируется
@psttf
psttf / js.sc
Created December 22, 2021 21:11
Sharing scala-dom-types based markup between JVM (scalatags) and JS (OutWatch)
import outwatch.helpers.AttributeBuilder
import outwatch.{Attr, HtmlVNode, VDomModifier}
import scala.language.implicitConversions
object TestComponent extends TestViews(outwatch.dsl) {
type TModifier = VDomModifier
type TRes = VDomModifier
type AtPr = Attr
@psttf
psttf / TabsComponent.scala
Created December 27, 2021 08:23
TabsComponent.scala
// Bootstrap 5 tabs Scala.js + Outwatch wrapper
final class Tab(
tabId: String,
selected: Boolean,
label: String,
content: VDomModifier,
) {
def navLi: HtmlVNode =