howl.util.PropertyTable
returns a table with the properties in the passed table
pt = PropertyTable foo:
get: (t) -> t.value
set: (t, v) -> t.value = v
assert.is_nil pt.foo
pt.foo = 'hello'
assert.equal pt.foo, 'hello'
non-property key accesses return nil by default
assert.is_nil PropertyTable({}).foo
non properties can be accessed in the normal fashion
pt = PropertyTable {
foo:
get: -> 'foo'
bar: -> 'bar'
frob: 'frob'
}
assert.equal pt.foo, 'foo'
assert.equal pt.frob, 'frob'
assert.equal pt.bar!, 'bar'
pt.frob = 'froz'
assert.equal pt.frob, 'froz'
writing to a non-property key sets the value
t = PropertyTable {}
t.foo = 'bar'
assert.equal t.foo, 'bar'
writing to a read-only property raises an error
assert.error -> PropertyTable(foo: get: -> 'bar').foo = 'frob'