Trait/Object

com.rallyhealth.weepickle.v1.core

Visitor

Related Docs: object Visitor | package core

Permalink

trait Visitor[-T, +J] extends AutoCloseable

Standard set of hooks weepickle uses to traverse over a structured data. A superset of the JSON, MessagePack, and Scala object hierarchies, since it needs to support efficiently processing all of them.

Note that some parameters are un-set (-1) when not available; e.g. visitArray's length is not set when parsing JSON input (since it cannot be known up front) and the various index parameters are not set when traversing Scala object hierarchies.

When expecting to deal with a subset of the methods; it is common to forward the ones you don't care about to the ones you do; e.g. JSON visitors would forward all visitFloat32/visitInt/etc. methods to visitFloat64

T

the result of ObjArrVisitor.subVisitor which is passed back into a ArrVisitor and ObjVisitor via ObjArrVisitor.visitValue. For example, this might be a weejson.Str that gets passed into an ObjVisitor that's building up a weejson.Obj to be returned on ObjVisitor.visitEnd. Often T will be the same type as J for visitors that return things, or else Any by visitors that do their work by side-effecting instead of returning J.

J

the result of visiting elements (e.g. a json AST or side-effecting writer)

See also

http://www.lihaoyi.com/post/ZeroOverheadTreeProcessingwiththeVisitorPattern.html

Linear Supertypes
AutoCloseable, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Visitor
  2. AutoCloseable
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def visitArray(length: Int): ArrVisitor[T, J]

    Permalink

    returns

    a Visitor used for visiting the elements of the array

  2. abstract def visitBinary(bytes: Array[Byte], offset: Int, len: Int): J

    Permalink

    Raw bytes.

  3. abstract def visitChar(c: Char): J

    Permalink
  4. abstract def visitExt(tag: Byte, bytes: Array[Byte], offset: Int, len: Int): J

    Permalink

    MsgPack extension type.

  5. abstract def visitFalse(): J

    Permalink
  6. abstract def visitFloat32(d: Float): J

    Permalink
  7. abstract def visitFloat64(d: Double): J

    Permalink

    Optional handler for raw double values; can be overriden for performance in cases where you're translating directly between numbers to avoid the overhead of stringifying and re-parsing your numbers (e.g.

    Optional handler for raw double values; can be overriden for performance in cases where you're translating directly between numbers to avoid the overhead of stringifying and re-parsing your numbers (e.g. the WebJson transformer gets raw doubles from the underlying Json.parse).

    Delegates to visitFloat64StringParts if not overriden

    d

    the input number

  8. abstract def visitFloat64String(s: String): J

    Permalink

    Convenience methods to help you compute the decimal-point-index and exponent-index of an arbitrary numeric string

    Convenience methods to help you compute the decimal-point-index and exponent-index of an arbitrary numeric string

    s

    the text string being visited

  9. abstract def visitFloat64StringParts(cs: CharSequence, decIndex: Int, expIndex: Int): J

    Permalink

    Visit the number in its text representation.

    Visit the number in its text representation.

    cs

    unparsed text representation of the number.

    decIndex

    index of the ., relative to the start of the CharSequence, or -1 if omitted

    expIndex

    index of e or E relative to the start of the CharSequence, or -1 if omitted

  10. abstract def visitInt32(i: Int): J

    Permalink
  11. abstract def visitInt64(l: Long): J

    Permalink
  12. abstract def visitNull(): J

    Permalink
  13. abstract def visitObject(length: Int): ObjVisitor[T, J]

    Permalink

    returns

    a ObjVisitor used for visiting the keys/values of the object

  14. abstract def visitString(cs: CharSequence): J

    Permalink

    cs

    the text string being visited

  15. abstract def visitTimestamp(instant: Instant): J

    Permalink
  16. abstract def visitTrue(): J

    Permalink
  17. abstract def visitUInt64(ul: Long): J

    Permalink

Concrete Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def close(): Unit

    Permalink

    Generally, whoever creates the visitor should be responsible for closing it, i.e.

    Responsibility

    Generally, whoever creates the visitor should be responsible for closing it, i.e. not intermediate transform(v: Visitor) methods themselves.

    Self Closing

    Given that common usage is most often single-valued (e.g. "{}"), rather than multi-valued (e.g. "{} {} {}"), Visitors may self-close (e.g. visitor.map{v => Try(v.close); v)} after a single value to prevent resource leaks, but are encouraged to expose both forms (i.e. single/multiple), if supportable.

    Multiple close() calls/Idempotency

    Visitors are encouraged to respond gracefully if close() is called multiple times. If an underlying resource would throw if already closed, this may mean adding a private var isClosed: Boolean field to prevent multiple calls.

    Definition Classes
    Visitor → AutoCloseable
  7. final def eq(arg0: AnyRef): Boolean

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

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

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

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

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

    Permalink
    Definition Classes
    Any
  13. def map[Z](f: (J) ⇒ Z): Visitor[T, Z]

    Permalink
  14. def mapNulls[Z](f: (J) ⇒ Z): Visitor[T, Z]

    Permalink
  15. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  19. def toString(): String

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

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AutoCloseable

Inherited from AnyRef

Inherited from Any

Ungrouped