class Octaccord::Formatter::Issue
Public Class Methods
new(issue)
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 4 def initialize(issue) @resource = issue end
Public Instance Methods
assignee()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 22 def assignee User.new(@resource.assignee) if @resource.assignee end
avatar()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 26 def avatar if @resource.assignee return self.assignee.avatar end return ":grey_question:" end
comments()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 59 def comments # https://github.com/octokit/octokit.rb#uri-templates comments = [] STDERR.puts "* issue comments: #{@resource.rels[:comments].href}" @resource.rels[:comments].get.data.each do |c| comments << adjust_indent(c.body) end return comments.join end
cost()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 99 def cost extract_section(@resource.body, "Cost") end
created_at()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 83 def created_at @resource.created_at.localtime end
demo()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 95 def demo extract_section(@resource.body, "Demo") end
labels()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 75 def labels @resource.labels.map{|label| label.name}.join(',') end
link()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 45 def link type = if @resource.pull_request then "pull" else "issues" end "[##{@resource.number}](../#{type}/#{@resource.number} \"#{@resource.title}\")" end
milestone()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 79 def milestone if @resource.milestone then "#{@resource.milestone.title}" else nil end end
number()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 50 def number "#{@resource.number}" end
plain_link()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 54 def plain_link type = if @resource.pull_request then "pull" else "issues" end "[##{@resource.number}](../#{type}/#{@resource.number})" end
pr()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 33 def pr if @resource.pull_request then ":arrow_upper_left:" else nil end end
references()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 37 def references @resource.body.scan(/#(\d+)/).map{|d| d.first.to_i} end
status()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 8 def status return ":parking:" if labels =~ /PBL/ # return ":white_check_mark:" if @resource.state == "closed" return ":arrow_upper_left:" if @resource.pull_request return avatar if @resource.assignee days = ((Time.now - @resource.updated_at) / (24*3600)).to_i return ":ghost:" if days > 60 return ":grey_question:" end
story()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 91 def story extract_section(@resource.body, "Story") end
summary()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 41 def summary "##{@resource.number} #{@resource.title}" + (labels != "" ? " (#{labels})" : "") end
title()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 71 def title if @resource.state == "closed" then "~~#{@resource.title}~~" else @resource.title end end
updated_at()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 87 def updated_at @resource.updated_at.localtime end
user()
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 18 def user User.new(@resource.user) if @resource.user end
Private Instance Methods
adjust_indent(body)
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 123 def adjust_indent(body) new_body = "" body.split(/\r?\n/).each do |line| line = "#####" + line if line =~ /^\#+/ new_body << line + "\n" end return new_body end
extract_section(lines, heading)
click to toggle source
# File lib/octaccord/formatter/issue.rb, line 105 def extract_section(lines, heading) in_section, body = false, "" regexp_in = /^(\#+)\s+#{heading}/ regexp_out = nil lines.split(/\r?\n/).each do |line| if regexp_in.match(line) level, in_section = $1.length, true regexp_out = /^\#{#{level}}\s+/ next end in_section = false if in_section and regexp_out.match(line) body << line + "\n" if in_section end return body.to_s.gsub(/\r?\n/, ' ') end