a Visitor used for visiting the elements of the array
Raw bytes.
MsgPack extension type.
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
the input number
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
the text string being visited
Visit the number in its text representation.
Visit the number in its text representation.
unparsed text representation of the number.
index of the .
, relative to the start of the CharSequence, or -1 if omitted
index of e
or E
relative to the start of the CharSequence, or -1 if omitted
a ObjVisitor used for visiting the keys/values of the object
the text string being visited
Generally, whoever creates the visitor should be responsible for closing it, i.e.
Generally, whoever creates the visitor should be responsible for closing it,
i.e. not intermediate transform(v: Visitor)
methods themselves.
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.
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.
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
'slength
is not set when parsing JSON input (since it cannot be known up front) and the variousindex
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 tovisitFloat64
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 asJ
for visitors that return things, or else Any by visitors that do their work by side-effecting instead of returningJ
.the result of visiting elements (e.g. a json AST or side-effecting writer)
http://www.lihaoyi.com/post/ZeroOverheadTreeProcessingwiththeVisitorPattern.html