class Jirify::UI::IssueRenderer

Attributes

issue[R]

Public Class Methods

new(issue) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 8
def initialize(issue)
  @issue = issue
end

Public Instance Methods

as_card(options) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 28
def as_card(options)
  card = as_table_cell(options)
  Terminal::Table.new(rows: [[card]])
rescue RuntimeError
  raise UI::WindowTooNarrow, 'The terminal window is too narrow.'
end
as_table_cell(options) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 12
def as_table_cell(options)
  options[:max_length] ||= IO.console.winsize[1] - 4
  options[:summary]    ||= false
  options[:url]        ||= false
  options[:assignee]   ||= false

  raise UI::WindowTooNarrow, 'The terminal window is too narrow.' if options[:max_length] <= key.size

  row = ''
  row << "#{ColorizedString[key].bold}"
  row << summary_line(options)  if show_summary?(options)
  row << url_line               if show_url?(options)
  row << assignee_line(options) if show_assignee?(options)
  row
end

Protected Instance Methods

assignee() click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 49
def assignee
  if issue.assignee.nil?
    'Unassigned'
  else
    issue.assignee.displayName
  end
end
assignee_line(options) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 57
def assignee_line(options)
  max_length = options[:max_length]
  assignee_line = assignee
  assignee_line = "#{assignee[0...max_length - 3]}..." if assignee_line.size >= max_length

  "\n#{assignee_line.magenta}"
end
key() click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 37
def key
  issue.key
end
show_assignee?(options) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 45
def show_assignee?(options)
  options[:assignee] && !options[:mine]
end
show_summary?(options) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 77
def show_summary?(options)
  options[:summary]
end
show_url?(options) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 65
def show_url?(options)
  url.size <= options[:max_length] && options[:url]
end
summary() click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 41
def summary
  issue.summary
end
summary_line(options) click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 81
def summary_line(options)
  "\n#{wrap(summary.strip, options[:max_length])}"
end
url() click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 69
def url
  "#{Config.issue_browse_url}#{issue.key}"
end
url_line() click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 73
def url_line
  "\n#{ColorizedString[url].blue.underline}"
end
wrap(string, columns, character = "\n") click to toggle source
# File lib/jirify/ui/issue_renderer.rb, line 85
def wrap(string, columns, character = "\n")
  return '' if string.nil?

  start_pos = columns
  while start_pos < string.length
    space = string.rindex(' ', start_pos) || start_pos - 1
    string.slice!(space)
    string.insert(space, character)
    start_pos = space + columns + 1
  end

  string
end