class Gamefic::Messenger


Message formatting and buffering.

def buffer

Returns:
  • (String) -
def buffer
  @buffers.push('')
  yield if block_given?
  @buffers.pop
end

def flush

Returns:
  • (String) - The flushed message
def flush
  @buffers.pop.tap { @buffers.push '' }
end

def format(message)

def format(message)
  "<p>#{message.strip}</p>"
    .gsub(/[ \t\r]*\n[ \t\r]*\n[ \t\r]*/, "</p><p>")
    .gsub(/[ \t]*\n[ \t]*/, ' ')
    .gsub(/<p>\s*<p>/, '<p>')
    .gsub(%r{</p>\s*</p>}, '</p>')
end

def initialize

def initialize
  @buffers = ['']
end

def messages

Returns:
  • (String) -
def messages
  @buffers.last
end

def stream(message)

Returns:
  • (String) - The messages in the current buffer

Parameters:
  • message (String, #to_s) --
def stream(message)
  @buffers.push(@buffers.pop + message.to_s)
          .last
end

def tell(message)

Returns:
  • (String) - The messages in the current buffer

Parameters:
  • message (String, #to_s) --
def tell(message)
  @buffers.push(@buffers.pop + format(message.to_s))
          .last
end