Template renderer
This commit is contained in:
parent
b439746cf5
commit
729ca8145f
|
@ -9,6 +9,7 @@ require "pry"
|
|||
require_relative File.join("pigeon", "config.rb")
|
||||
require_relative File.join("pigeon", "key_pair.rb")
|
||||
require_relative File.join("pigeon", "storage.rb")
|
||||
require_relative File.join("pigeon", "template.rb")
|
||||
require_relative File.join("pigeon", "message.rb")
|
||||
|
||||
module Pigeon
|
||||
|
|
|
@ -1,35 +1,40 @@
|
|||
module Pigeon
|
||||
class Message
|
||||
NAME_OF_DRAFT = "HEAD"
|
||||
NAME_OF_DRAFT = "HEAD.draft"
|
||||
|
||||
attr_reader :author,
|
||||
:kind,
|
||||
:previous,
|
||||
:prev,
|
||||
:body,
|
||||
:sequence, # Maybe not?
|
||||
:depth,
|
||||
:timestamp, # Maybe not?
|
||||
:signature # Maybe not?
|
||||
|
||||
def initialize(author:,
|
||||
kind:,
|
||||
previous: nil,
|
||||
prev: nil,
|
||||
body: [],
|
||||
timestamp: Time.now.to_i)
|
||||
@author = author
|
||||
@kind = kind
|
||||
@previous = previous
|
||||
@prev = prev
|
||||
@body = body
|
||||
@timestamp = timestamp
|
||||
end
|
||||
|
||||
def self.create(kind:, previous: nil, body: [])
|
||||
def self.create(kind:, prev: nil, body: {})
|
||||
# instantiate
|
||||
msg = self.new(author: KeyPair.current.public_key,
|
||||
kind: kind,
|
||||
previous: previous,
|
||||
prev: prev,
|
||||
body: body)
|
||||
# Save to disk as HEAD
|
||||
Pigeon::Storage.current.set_config(NAME_OF_DRAFT, Marshal.dump(msg))
|
||||
msg
|
||||
end
|
||||
|
||||
def serialize
|
||||
Template.new(self).render
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
require "erb"
|
||||
|
||||
module Pigeon
|
||||
# Wrapper around a message to perform string templating.
|
||||
# Renders a string that is a Pigeon-compliant message.
|
||||
class Template
|
||||
TPL_DIR = "views"
|
||||
|
||||
HEADER_TPL = File.read(File.join(TPL_DIR, "1_header.erb"))
|
||||
BODY_TPL = File.read(File.join(TPL_DIR, "2_body.erb"))
|
||||
FOOTER_TPL = File.read(File.join(TPL_DIR, "3_footer.erb"))
|
||||
|
||||
COMPLETE_TPL = [HEADER_TPL, BODY_TPL, FOOTER_TPL].join("")
|
||||
|
||||
attr_reader :message
|
||||
|
||||
def initialize(message)
|
||||
@message = message
|
||||
end
|
||||
|
||||
def render
|
||||
author = message.author
|
||||
body = message.body
|
||||
kind = message.kind
|
||||
depth = message.depth || "DRAFT"
|
||||
prev = message.prev || "DRAFT"
|
||||
signature = message.signature || "DRAFT"
|
||||
|
||||
ERB.new(COMPLETE_TPL).result(binding)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -76,7 +76,7 @@ module Pigeon
|
|||
desc "create", "Begin a new Pigeon message"
|
||||
|
||||
def create(kind)
|
||||
puts Pigeon::Message.create(kind: kind)
|
||||
puts Pigeon::Message.create(kind: kind).serialize
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
WE need to know:
|
||||
|
||||
* What's the current `sequence` number?
|
|
@ -0,0 +1,4 @@
|
|||
author <%= author %>
|
||||
depth <%= depth %>
|
||||
kind <%= kind %>
|
||||
prev <%= prev %>
|
|
@ -0,0 +1,3 @@
|
|||
<% body.to_a.each do |k, v| %>
|
||||
<%= k %>:<%= v %>
|
||||
<% end %>
|
|
@ -0,0 +1,5 @@
|
|||
<% if signature %>
|
||||
signature <%= signature %>
|
||||
<% else %>
|
||||
signature UNSIGNED
|
||||
<% end %>
|
Loading…
Reference in New Issue