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