
os.web.angular.Angular.scala Maven / Gradle / Ivy
The newest version!
// Copyright AGPL3 2015 ~ Optersoft SL
package os.web.angular
import scala.annotation.StaticAnnotation
import scala.scalajs.js
trait Angular extends js.Object {
def bootstrap(appComponentType: js.Object): Unit = js.native
def bootstrap(appComponentType: js.Dynamic): Unit = js.native
//--------------- DIRECTIVES -----------------
def For: js.Object = js.native
def If: js.Object = js.native
}
object Angular {
import scala.reflect.macros.blackbox
import scala.language.experimental.macros
@inline final implicit class RichAngular(val self: Angular) extends AnyVal {
@inline def bootstrapWith[T]: Unit = macro Macros.bootstrapWith[T]
}
class Macros(val c: blackbox.Context) extends JsBlackboxMacroTools {
import c.universe._
def bootstrapWith[T: c.WeakTypeTag] = {
val t = selectGlobalDynamic[T]
val angular = Select(c.prefix.tree, TermName("self"))
val r =
q"""$angular.bootstrap($t)"""
r
}
private def registerAll(annottees: Map[String, Any]) =
annottees.toSeq.map {
case (_, tree: Tree) => tree
}
def jsClassOf[T: c.WeakTypeTag] = selectGlobalDynamic[T]
}
/**
* Internally used to mark classes with companion objects that carry Angular annotations
*/
class AngulateAnnotated(annotation: String) extends StaticAnnotation
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy