scalafiddle / scalafiddle-core

Source code for the scalafiddle.io compilation service
https://scalafiddle.io
Apache License 2.0
101 stars 37 forks source link

Fixed "macro implementation not found" error #4

Closed Starzu closed 7 years ago

Starzu commented 7 years ago

Method lookupPathUnchecked from AbstractFile uses lookupNameUnchecked which is not supported in VirtualDirectory class.

This implementation uses lookupName method.

Tested with these examples:

import fiddle.Fiddle, Fiddle.println
import scalajs.js

import scala.concurrent.ExecutionContext.Implicits.global

@js.annotation.JSExport
object ScalaFiddle {
  // $FiddleStart
  import io.udash._
  val p = SeqProperty(1,2,3,4,5,6)
  val f = p.filter(_ % 2 == 0)
  println(p.get.toString)
  println(f.get.toString)
  // $FiddleEnd
}
import fiddle.Fiddle, Fiddle.println
import scalajs.js
import scalacss.Defaults._

@js.annotation.JSExport
object ScalaFiddle {
  // $FiddleStart
  // Start writing your ScalaFiddle code here
  println( MyStyles.render )
  // $FiddleEnd
}

object MyStyles extends StyleSheet.Inline {
  import dsl._

  val common = mixin(
    backgroundColor.green
  )

  val outer = style(
    common, // Applying our mixin
    margin(123 px, auto),
    textAlign.left,
    cursor.pointer,

    &.hover(
      cursor.zoomIn
    ),

    media.not.handheld.landscape.maxWidth(640 px)(
      width(400 px)
    )
  )

  /** Style requiring an Int when applied. */
  val indent =
    styleF.int(0 to 3)(i => styleS(
      paddingLeft(i * 2.ex)
    ))

  /** Style hooking into Bootstrap. */
  val button = style(
    addClassNames("btn", "btn-default")
  )
}
import fiddle.Fiddle, Fiddle.println
import scalajs.js

import org.widok._
import org.widok.html._
import pl.metastack.metarx.Var
import org.scalajs.dom

@js.annotation.JSExport
object ScalaFiddle extends PageApplication{
  // $FiddleStart

    //println("<div id='page'></div>")
    val panel = dom.document.getElementById("output")
    panel.insertAdjacentHTML("beforeend", "<div id='page'></div>")
    val name = Var("")
    val hasName = name.map(_.nonEmpty)

    def view() = div(
      h1("Welcome to Widok!")
    , p("Please enter your name:")

    , text().bind(name)

    , p("Hello, ", name)
        .show(hasName)

    , button("Change my name")
        .onClick(_ => name := "tux")
        .show(name !=== "tux")

    , button("Log out")
        .onClick(_ => name := "")
        .show(hasName)
    )
    def ready() { }
  // $FiddleEnd
}