muster.input

Consumer

trait Consumer[S] extends AnyRef

The type class that allows for reading streams and building objects from those streams.

It receives an AST node and is expected to return the resulting target type from that node. Typically this happens with some pattern matches.

S

The type of object this consumer builds

Annotations
@implicitNotFound( ... )
Examples:
  1. A custom serializer for a person

    case class Person(id: Long, name: String, age: Int)
    
    implicit object PersonConsumer extends Consumer[Person] {
      def consume(node: AstNode[_]): Person = node match {
        case obj: ObjectNode =>
          val addressesConsumer = implicitly[Consumer[Seq[Address]]]
          Person(
            obj.readIntField("id"),
            obj.readStringField("name"),
            addressesConsumer.consume(obj.readArrayField("addresses"))
          )
        case _ => throw new MappingException(s"Can't convert a ${node.getClass} to a Person")
      }
    }
  2. ,
  3. A string consumer

    implicit object StringConsumer extends Consumer[String] {
    def consume(node: AstNode[_]): String = node match {
      case TextNode(value) => value
      case NumberNode(value) => value
      case m: NumberNodeLike[_] => m.value.toString
      case NullNode => null
      case _ => throw new MappingException(s"Couldn't convert $node to String")
    }
    }
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Consumer
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def consume(node: AstNode[_]): S

    Converts a AstNode into the type S

    Converts a AstNode into the type S

    node

    the AstNode to convert

    returns

    a S

    Exceptions thrown
    a

    muster.ParseException when the source stream contains invalid characters

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  13. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  15. final def notify(): Unit

    Definition Classes
    AnyRef
  16. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  17. def recover: ErrorHandler[S]

    Provides a recovery mechanism for certain exceptions

    Provides a recovery mechanism for certain exceptions

    This is useful for options and disjunctions

    returns

    the recovered value if there is one for the provided exception

  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  19. def toString(): String

    Definition Classes
    AnyRef → Any
  20. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped