JSONAPI couldn't parse JSON values like " {"key": :value"}" because of
the spaces before the opening curly brace. This behaviour was judged to
be unintuitive and a bug. This patch fixes the issue by always skipping
spaces in front of the value.
This should not break parsing JSON string values, since they are
supposed to start with double quotation mark.
This is regarding an artifact left after text refactoring: when printing
JSON text values, they were being converted into `Text`, which after
refactoring always basically erased `MutableText` value, emptying it.
Previously `Iter` was meant to be a collection iterator class, but now
we need a more generalized notion of iterator, so we move some
collection-specific methods out and designate `Iter` a general iterator
class, while `CollectionIterator` takes its former place.
When parsing values inside JSON object/array, stored objects and arrays
would always be parsed as `DynamicArray`/`AssociativeArray`, despite
starting parsing as new collections.
This method was creating an empty json pointer when user passed a `none`
value, but having to pass `none` made for a bad interface. This patch
allows to simply omit the argument.
I shamefully ended up doing another mega-commit, because a lot of things
needed to be redone at once and it was easier that way on me. No one
really consistently tracks what I'm doing with these commits anyway.
This adds a whole bunch of code to deal with proper clean up for Acedia,
so it doesn't crash on map change and also replaces old event/listener
system with new signals/slots one.
Added more conversion methods from primitive types (`bool`, `byte`,
`int`, `float`) into `Text` and `MutableText` into the standart
`TextAPI`. Made `JSONAPI` use these methods instead.
This is a giga commit, something that should not really be done with
git, but I messed up.
This commit brings a great amount of changes, most important is
reworking `TextAPI` and alsmost complete replacement of `string` with
`Text`/`MutableText`.
Another huge change is introduction of command system that allows to
define commands in a centralized manner, handles auto-parsing of
their parameters and auto generates help info.
Lastly, JSON data types were replaced with new
`DynamicArray`/`AssociativeArray` that are better designed and more
generic.