Pigeon-Ruby/lib/pigeon/draft.rb

39 lines
792 B
Ruby
Raw Normal View History

require "digest"
module Pigeon
class Draft
2020-04-18 14:13:53 +00:00
attr_accessor :signature, :prev, :lipmaa, :kind, :depth,
:body, :author
2020-04-19 21:27:09 +00:00
def initialize(kind:, body: {})
@signature = Pigeon::NOTHING
@prev = Pigeon::NOTHING
@kind = kind
@depth = -1
2020-04-19 21:27:09 +00:00
@body = {}
@author = Pigeon::NOTHING
@lipmaa = Pigeon::NOTHING
2020-04-19 21:27:09 +00:00
body.to_a.map { |(k, v)| self[k] = v }
end
def [](key)
2020-04-25 15:11:25 +00:00
body[key]
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
def render_as_draft
DraftSerializer.new(self).render
end
end
end