Advertisement
DRVTiny

gen_msgpack_class

Apr 18th, 2018
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.71 KB | None | 0 0
  1. require "msgpack"
  2. require "json"
  3. require "./GenJSON/*"
  4.  
  5. macro mp_class (class_name, props)
  6.     class {{class_name}}
  7.         MessagePack.mapping({{props}})
  8.         def to_json(json : JSON::Builder)
  9.             json.object do
  10.         {% for propName in props %}
  11.                 json.field "{{propName}}", self.{{propName}}
  12.         {% end %}
  13.             end
  14.         end
  15.      end
  16. end
  17.  
  18. module GenJSON
  19.     mp_class(Host, {hostid: Int32, host: String, name: String, type: Int32})
  20.     puts Host.from_msgpack(
  21.         {
  22.             "host" => "vm-host-01.example.com",
  23.             "name" => "Virtual machine #01",
  24.             "hostid" => 1234,
  25.             "type" => 1
  26.         }.to_msgpack      ).to_json
  27. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement