module Trellohub::Form::Issue
Public Class Methods
accessible_attributes()
click to toggle source
# File lib/trellohub/form/issue.rb, line 14 def accessible_attributes self.prefix self.valid_attributes end
included(base)
click to toggle source
# File lib/trellohub/form/issue.rb, line 31 def included(base) base.class_eval do attr_accessor(*Trellohub::Form::Issue.accessible_attributes) attr_reader(*Trellohub::Form::Issue.readable_attributes) end end
prefix(array)
click to toggle source
# File lib/trellohub/form/issue.rb, line 27 def prefix(array) array.map { |key| :"issue_#{key}" } end
readable_attributes()
click to toggle source
# File lib/trellohub/form/issue.rb, line 18 def readable_attributes self.prefix %i( number created_at updated_at closed_at ) end
valid_attributes()
click to toggle source
# File lib/trellohub/form/issue.rb, line 5 def valid_attributes %i( title labels state assignee ) end
Public Instance Methods
assign_card_list_by_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 101 def assign_card_list_by_issue labels = @origin_issue.labels.map(&:name).uniq list = Trellohub.list_by(labels: labels) return unless list @card_idList = list.id @card_list_name = list.name end
assign_card_members_by_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 91 def assign_card_members_by_issue @card_idMembers = [] return unless @origin_issue.assignee member = Trellohub::Member.find_by(username: @origin_issue.assignee.login) unless member.nil? @card_idMembers << member.id end end
build_card_attributes_by_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 50 def build_card_attributes_by_issue @card_idBoard = Trellohub::Board.id @card_name = "#{issue_repo_name}##{@origin_issue.number} #{@origin_issue.title}" @card_desc = "synced_issue: #{Octokit.web_endpoint}#{@issue_repository}/issues/#{@origin_issue.number}" @card_closed = @origin_issue.state == 'closed' assign_card_members_by_issue assign_card_list_by_issue end
build_issue_attributes_by_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 59 def build_issue_attributes_by_issue @origin_issue.attrs.keys.each do |key| next if key == :pull_request value = case key when :user @origin_issue.user.login when :assignee @origin_issue.assignee ? @origin_issue.assignee.login : nil when :labels @origin_issue.labels.empty? ? [] : @origin_issue.labels.map(&:name) else @origin_issue.send(key) end instance_variable_set(:"@issue_#{key}", value) end @issue_id = @origin_issue.id @issue_number = @origin_issue.number if @origin_issue.milestone @issue_milestone_title = @origin_issue.milestone.title @issue_milestone = @origin_issue.milestone.number end end
close_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 145 def close_issue return if @issue_repository.nil? || @issue_number.nil? Octokit.close_issue( @issue_repository, @issue_number, to_valid_issue ) end
create_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 122 def create_issue return if @issue_repository.nil? || @issue_title.nil? Octokit.create_issue( @issue_repository, @issue_title, nil, to_valid_issue ) end
import_issue(repository, issue)
click to toggle source
# File lib/trellohub/form/issue.rb, line 39 def import_issue(repository, issue) @origin_issue = issue.dup @issue_repository = repository @key = "#{repository}##{@origin_issue.number}" @state = @origin_issue.state @imported_from = :issue build_card_attributes_by_issue build_issue_attributes_by_issue end
issue_body()
click to toggle source
# File lib/trellohub/form/issue.rb, line 113 def issue_body if @issue_body.nil? && @imported_from == :card form = Trellohub::Form.with_issues.find_by_key(@key) @issue_body = form.issue_body if form end @issue_body end
issue_repository_name()
click to toggle source
# File lib/trellohub/form/issue.rb, line 86 def issue_repository_name @issue_repository.split('/').last end
Also aliased as: issue_repo_name
issue_update?()
click to toggle source
# File lib/trellohub/form/issue.rb, line 109 def issue_update? !@key.nil? end
save_as_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 155 def save_as_issue case when issue_update? && open? then update_issue when issue_update? && closed? then close_issue when open? then create_issue end end
to_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 181 def to_issue Hash[Trellohub::Form::Issue.accessible_attributes.map { |key| [ key.to_s.gsub('issue_', '').to_sym, instance_variable_get(:"@#{key}") ] }] end
to_valid_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 163 def to_valid_issue Hash[Trellohub::Form::Issue.valid_attributes.map { |key| value = instance_variable_get(:"@issue_#{key}") case when @imported_from == :issue && !value.empty? valid_label = value.find { |v| Trellohub.issue_labels.include?(v) } value = [] value << valid_label if valid_label when @imported_from == :card form = Trellohub::Form.with_issues.find_by_key(@key) value = form.issue_labels if form end if key == :labels [key, value] }] end
update_issue()
click to toggle source
# File lib/trellohub/form/issue.rb, line 133 def update_issue return if @issue_repository.nil? || @issue_number.nil? || @issue_title.nil? Octokit.update_issue( @issue_repository, @issue_number, @issue_title, issue_body, to_valid_issue ) end