JsoniterPrismMacro

dev.constructive.eo.jsoniter.JsoniterPrismMacro

Macros backing JsoniterPrism.field(_.fieldName), selectDynamic, at(i), each and their JsoniterTraversal counterparts. Extracts the field name from the selector AST (same pattern as eo-circe's JsonPrismMacro) and emits a widenField / widenIndex / toTraversal call. The single divergence from the circe macro: one JsonValueCodec[B] summon instead of the Encoder[B] / Decoder[B] pair.

 val streetP: JsoniterPrism[String] =
   JsoniterPrism[Person].field(_.address).field(_.street)

Attributes

Source
JsoniterPrismMacro.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Value members

Concrete methods

def atImpl[A](parent: Expr[JsoniterPrism[A]], iE: Expr[Int])(using evidence$1: Type[A], q: Quotes): Expr[Any]

.at(i) — verifies A <: Iterable, summons the element codec, emits widenIndex.

.at(i) — verifies A <: Iterable, summons the element codec, emits widenIndex.

Attributes

Source
JsoniterPrismMacro.scala
def atTraversalImpl[A](parent: Expr[JsoniterTraversal[A]], iE: Expr[Int])(using evidence$1: Type[A], q: Quotes): Expr[Any]

Traversal counterpart to atImpl.

Traversal counterpart to atImpl.

Attributes

Source
JsoniterPrismMacro.scala
def eachImpl[A](parent: Expr[JsoniterPrism[A]])(using evidence$1: Type[A], q: Quotes): Expr[Any]

.each — emits toTraversal[B] over A's element type.

.each — emits toTraversal[B] over A's element type.

Attributes

Source
JsoniterPrismMacro.scala
def fieldImpl[A, B](parent: Expr[JsoniterPrism[A]], selector: Expr[A => B], codecB: Expr[JsonValueCodec[B]])(using evidence$1: Type[A], evidence$2: Type[B], q: Quotes): Expr[JsoniterPrism[B]]

Child JsoniterPrism[B] from parent: JsoniterPrism[A] via a (_.field) selector.

Child JsoniterPrism[B] from parent: JsoniterPrism[A] via a (_.field) selector.

Attributes

Source
JsoniterPrismMacro.scala
def fieldTraversalImpl[A, B](parent: Expr[JsoniterTraversal[A]], selector: Expr[A => B], codecB: Expr[JsonValueCodec[B]])(using evidence$1: Type[A], evidence$2: Type[B], q: Quotes): Expr[JsoniterTraversal[B]]

Traversal counterpart to fieldImpl.

Traversal counterpart to fieldImpl.

Attributes

Source
JsoniterPrismMacro.scala
def selectFieldImpl[A](parent: Expr[JsoniterPrism[A]], nameE: Expr[String])(using evidence$1: Type[A], q: Quotes): Expr[Any]

Drives JsoniterPrism[Person].address. Looks the field up on A's schema, summons its codec, emits widenField. Returns Expr[Any] so transparent inline refines per call site.

Drives JsoniterPrism[Person].address. Looks the field up on A's schema, summons its codec, emits widenField. Returns Expr[Any] so transparent inline refines per call site.

Attributes

Source
JsoniterPrismMacro.scala
def selectFieldTraversalImpl[A](parent: Expr[JsoniterTraversal[A]], nameE: Expr[String])(using evidence$1: Type[A], q: Quotes): Expr[Any]

Traversal counterpart to selectFieldImpl.

Traversal counterpart to selectFieldImpl.

Attributes

Source
JsoniterPrismMacro.scala