2020-03-05 13:59:11 +00:00
|
|
|
require "digest"
|
|
|
|
|
|
|
|
module Pigeon
|
|
|
|
class Draft
|
2020-04-18 14:13:53 +00:00
|
|
|
attr_accessor :signature, :prev, :lipmaa, :kind, :depth,
|
|
|
|
:body, :author
|
2020-03-05 13:59:11 +00:00
|
|
|
|
2020-04-19 21:27:09 +00:00
|
|
|
def initialize(kind:, body: {})
|
2020-04-12 14:03:44 +00:00
|
|
|
@signature = Pigeon::NOTHING
|
|
|
|
@prev = Pigeon::NOTHING
|
2020-03-05 13:59:11 +00:00
|
|
|
@kind = kind
|
2020-04-07 13:58:53 +00:00
|
|
|
@depth = -1
|
2020-04-19 21:27:09 +00:00
|
|
|
@body = {}
|
2020-04-12 14:03:44 +00:00
|
|
|
@author = Pigeon::NOTHING
|
|
|
|
@lipmaa = Pigeon::NOTHING
|
2020-04-19 21:27:09 +00:00
|
|
|
body.to_a.map { |(k, v)| self[k] = v }
|
2020-03-05 13:59:11 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def [](key)
|
2020-04-25 15:11:25 +00:00
|
|
|
body[key]
|
2020-03-05 13:59:11 +00:00
|
|
|
end
|
|
|
|
|
2020-04-19 21:27:09 +00:00
|
|
|
def []=(key, value)
|
|
|
|
raise STRING_KEYS_ONLY unless key.is_a?(String)
|
2020-04-25 15:11:25 +00:00
|
|
|
|
2020-04-19 21:27:09 +00:00
|
|
|
case value[0]
|
|
|
|
when BLOB_SIGIL, MESSAGE_SIGIL, IDENTITY_SIGIL, STRING_SIGIL
|
|
|
|
body[key] = value
|
|
|
|
else
|
|
|
|
body[key] = value.inspect
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-04-10 12:21:00 +00:00
|
|
|
def render_as_draft
|
2020-03-07 15:38:34 +00:00
|
|
|
DraftSerializer.new(self).render
|
2020-03-05 13:59:11 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|