Class: JsonTypeWrapper

Defined in: lib/Types/JsonTypes.coffee

Overview

Note: EXPERIMENTAL
Note: You can only overwrite existing values! Setting a new property won't have any effect!

A JsonTypeWrapper was intended to be a convenient wrapper for the JsonType. But it can make things more difficult than they are.

It creates Javascripts -getter and -setter methods for each property that JsonType maintains.

In order to set a new property you have to overwrite an existing property. Therefore the JsonTypeWrapper supports a special feature that should make things more convenient (we can argue about that, use the JsonType if you don't like it ;). If you overwrite an object property of the JsonTypeWrapper with a new object, it will result in a merged version of the objects. Let yatta.value.p the property that is to be overwritten and o the new value. E.g. yatta.value.p = o

Examples:

create a JsonTypeWrapper

# You get a JsonTypeWrapper from a JsonType by calling
w = yatta.value

Getter Example

# you can access the x property of yatta by calling
w.x
# instead of
yatta.val('x')

Setter Example

# you can set an existing x property of yatta by calling
w.x = "text"
# instead of
yatta.val('x', "text")

Conflict Example

yatta.value = {a : "string"}
w = yatta.value
console.log(w) # {a : "string"}
w.a = {a : {b : "string"}}
console.log(w) # {a : {b : "String"}}
w.a = {a : {c : 4}}
console.log(w) # {a : {b : "String", c : 4}}

Common Pitfalls

w = yatta.value
# Setting a new property
w.newProperty = "Awesome"
console.log(w.newProperty == "Awesome") # false, w.newProperty is undefined
# overwrite the w object
w = {newProperty : "Awesome"}
console.log(w.newProperty == "Awesome") # true!, but ..
console.log(yatta.value.newProperty == "Awesome") # false, you are only allowed to set properties!
# The solution
yatta.value = {newProperty : "Awesome"}
console.log(w.newProperty == "Awesome") # true!

See also:

Constructor Details

# (void) constructor(jsonType)

Parameters:

  • jsonType ( JsonType ) Instance of the JsonType that this class wrappes.

    Quickly fuzzy find classes, mixins, methods, file:

    Control the navigation frame:

    You can focus and blur the search input: