nya_serializable
nya_serializable
Serializable module for Nya Engine
Installation
Add this to your application's shard.yml
:
dependencies:
nya_serializable:
github: nya-engine/nya_serializable
Usage
require "nya_serializable"
class Foo
include Nya::Serializable
property foo = Bar.new
property bar = ["foo", "foo bar"]
property fubar = "unn4m3d"
serializable foo : Bar, bar : Array(String)
attribute fubar : String
end
Then you can #serialize
it to something like that
<Foo fubar="unn4m3d">
<foo>
<Bar>
...
</Bar>
</foo>
<bar>
<item>foo</item>
<item>foo bar</item>
</bar>
</Foo>
And deserialize that XML into structure above with Nya::Serializable.deserialize(Foo)
Type name translation
Due to XML specifications, some complex names cannot be serialized as is, so some transformations are applied before.
- Last double colon (
::
) is translated into single colon (:
) - Other double colons are translated into underscores (
_
) - Type vars list of a generic class starts with double period ('..')
- Names in type vars list are separated with single period ('.')
- Type vars list ends with hyphen ('-')
- Named args are not supported
Contributing
- Fork it ( https://github.com/nya-engine/nya_serializable/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- unn4m3d - creator, maintainer