Update README with JSON Patch example

Also, replace the remaining tabs with spaces.
This commit is contained in:
Brian Waldon 2013-01-31 07:24:00 -08:00
parent c55fca16a5
commit 6d13c02ad4
1 changed files with 23 additions and 20 deletions

View File

@ -1,43 +1,46 @@
# Warlock!
# Warlock
## Wat
Build self-validating python objects using JSON schemas.
Build self-validating python objects using JSON schemas
1) Create your schema
## How
1) Build your schema
>>> schema = {
'name': 'Country',
'properties': {
'name': {'type': 'string'},
'abbreviation': {'type': 'string'},
},
'additionalProperties': False,
}
>>> schema = {
'name': 'Country',
'properties': {
'name': {'type': 'string'},
'abbreviation': {'type': 'string'},
'population': {'type': 'integer'},
},
'additionalProperties': False,
}
2) Create a model
>>> import warlock
>>> Country = warlock.model_factory(schema)
>>> Country = warlock.model_factory(schema)
3) Create an object using your model
>>> sweden = Country(name='Sweden', abbreviation='SE')
>>> sweden = Country(name='Sweden', abbreviation='SE')
4) Let the object validate itself!
4) Let the object validate itself
>>> sweden.name = 5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <module>
File "warlock/core.py", line 53, in __setattr__
raise InvalidOperation(msg)
warlock.core.InvalidOperation: Unable to set 'name' to '5'
>>> sweden.overlord = 'Bears'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <module>
File "warlock/core.py", line 53, in __setattr__
raise InvalidOperation(msg)
warlock.core.InvalidOperation: Unable to set 'overlord' to 'Bears'
5) Generate a [JSON Patch document](http://tools.ietf.org/html/draft-ietf-appsawg-json-patch) to track changes
>>> sweden.population=9453000
>>> sweden.patch
'[{"path": "/population", "value": 9453000, "op": "add"}]'