class Ditz::ScreenView

Public Class Methods

new(project, config, device=$stdout) click to toggle source
# File lib/views.rb, line 7
def initialize project, config, device=$stdout
  @device = device
  @config = config
end

Public Instance Methods

render_issue(issue) click to toggle source
# File lib/views.rb, line 21
  def render_issue issue
    status = case issue.status
    when :closed
      "#{issue.status_string}: #{issue.disposition_string}"
    else
      issue.status_string
    end
    desc = if issue.desc.size < 80 - "Description: ".length
      issue.desc
    else
      "\n" + issue.desc.gsub(/^/, "  ") + "\n"
    end
    @device.puts <<EOS
#{"Issue #{issue.name}".underline}
      Title: #{issue.title}
Description: #{desc}
       Type: #{issue.type}
     Status: #{status}
    Creator: #{issue.reporter}
        Age: #{issue.creation_time.ago}
    Release: #{issue.release}
 References: #{issue.references.listify "  "}
 Identifier: #{issue.id}
EOS

    self.class.view_additions_for(:issue_summary).each { |b| @device.print(b[issue, @config] || next) }
    puts
    self.class.view_additions_for(:issue_details).each { |b| @device.print(b[issue, @config] || next)  }

    @device.puts <<EOS
Event log:
#{format_log_events issue.log_events}
EOS
  end

Private Instance Methods

format_log_events(events) click to toggle source
# File lib/views.rb, line 12
def format_log_events events
  return "none" if events.empty?
  events.reverse.map do |time, who, what, comment|
    "- #{what} (#{who.shortened_email}, #{time.ago} ago)" +
    (comment =~ /\S/ ? "\n" + comment.gsub(/^/, "  > ") : "")
  end.join("\n")
end