JSON.stringify(m.prop(x)) use x.toJSON method when possible
When JSON serializing m.prop, check if wrapped object does define toJSON method and if so, return it's result.
This commit is contained in:
parent
42b21a5950
commit
c71e8f4fcb
2 changed files with 17 additions and 0 deletions
|
|
@ -1331,6 +1331,7 @@
|
|||
}
|
||||
|
||||
prop.toJSON = function () {
|
||||
if (store && isFunction(store.toJSON)) return store.toJSON()
|
||||
return store
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,22 @@ describe("m.prop()", function () {
|
|||
expect(JSON.stringify(obj)).to.equal('{"prop":"test"}')
|
||||
})
|
||||
|
||||
it("correctly stringifies Date", function () {
|
||||
var prop = m.prop(new Date(999))
|
||||
expect(JSON.stringify(prop)).to.equal('"1970-01-01T00:00:00.999Z"')
|
||||
})
|
||||
|
||||
it("correctly stringifies object with toJSON method", function () {
|
||||
function Thing(name) {
|
||||
this.name = name
|
||||
}
|
||||
Thing.prototype.toJSON = function() {
|
||||
return {kind: 'Thing', name: this.name}
|
||||
}
|
||||
var banana = m.prop(new Thing("bannana"))
|
||||
expect(JSON.stringify(banana)).to.equal('{"kind":"Thing","name":"bannana"}')
|
||||
})
|
||||
|
||||
it("correctly wraps Mithril promises", function () {
|
||||
var defer = m.deferred()
|
||||
var prop = m.prop(defer.promise)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue