Skip to content

Commit

Permalink
Reduce complexity some, switch to more class usage
Browse files Browse the repository at this point in the history
  • Loading branch information
esigler committed Jan 10, 2015
1 parent 50d0ed6 commit 3eadeab
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 53 deletions.
10 changes: 1 addition & 9 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,7 @@ LineLength:
Max: 120

AbcSize:
Exclude:
- lib/lita/handlers/locker_misc.rb
Max: 30
Max: 26

MethodLength:
Max: 17
Exclude:
- lib/lita/handlers/locker_misc.rb

PerceivedComplexity:
Exclude:
- lib/lita/handlers/locker_misc.rb
22 changes: 10 additions & 12 deletions lib/lita/handlers/locker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def lock(response)
return response.reply(t('label.does_not_exist', name: name)) unless Label.exists?(name)
l = Label.new(name)
return response.reply(t('label.no_resources', name: name)) unless l.membership.count > 0
return response.reply(t('label.self_lock', name: name)) if l.owner_id.value == response.user.id
return response.reply(t('label.self_lock', name: name)) if l.owner == response.user
return response.reply(t('label.lock', name: name)) if l.lock!(response.user.id)

response.reply(label_ownership(name))
Expand All @@ -73,28 +73,26 @@ def steal(response)

def attempt_steal(name, user)
label = Label.new(name)
o = Lita::User.find_by_id(label.owner_id.value)
return t('steal.self') if o.id == user.id
return t('steal.self') if label.owner == user
old_owner = label.owner
label.steal!(user.id)
mention = o.mention_name ? "(@#{o.mention_name})" : ''
t('steal.stolen', label: name, old_owner: o.name, mention: mention)
mention = old_owner.mention_name ? "(@#{old_owner.mention_name})" : ''
t('steal.stolen', label: name, old_owner: old_owner.name, mention: mention)
end

def attempt_unlock(name, user)
label = Label.new(name)
if user.id == label.owner_id.value
if label.owner == user
label.unlock!
if label.locked?
o = Lita::User.find_by_id(label.owner_id.value)
mention = o.mention_name ? "(@#{o.mention_name})" : ''
t('label.now_locked_by', name: name, owner: o.name, mention: mention)
mention = label.owner.mention_name ? "(@#{label.owner.mention_name})" : ''
t('label.now_locked_by', name: name, owner: label.owner.name, mention: mention)
else
t('label.unlock', name: name)
end
else
o = Lita::User.find_by_id(label.owner_id.value)
mention = o.mention_name ? "(@#{o.mention_name})" : ''
t('label.owned_unlock', name: name, owner_name: o.name, mention: mention)
mention = label.owner.mention_name ? "(@#{label.owner.mention_name})" : ''
t('label.owned_unlock', name: name, owner_name: label.owner.name, mention: mention)
end
end
end
Expand Down
58 changes: 30 additions & 28 deletions lib/lita/handlers/locker_misc.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,34 +32,9 @@ class LockerMisc < Handler

def status(response)
name = response.match_data['label']
if Label.exists?(name)
l = Label.new(name)
if l.owner_id.value != ''
o = Lita::User.find_by_id(l.owner_id.value)
if l.wait_queue.count > 0
queue = []
l.wait_queue.each do |u|
usr = Lita::User.find_by_id(u)
queue.push(usr.name)
end
response.reply(t('label.desc_owner_queue', name: name,
state: l.state.value,
owner_name: o.name,
queue: queue.join(', ')))
else
response.reply(t('label.desc_owner', name: name,
state: l.state.value,
owner_name: o.name))
end
else
response.reply(t('label.desc', name: name, state: l.state.value))
end
elsif Resource.exists?(name)
r = Resource.new(name)
response.reply(t('resource.desc', name: name, state: r.state.value))
else
response.reply(t('subject.does_not_exist', name: name))
end
return response.reply(status_label(name)) if Label.exists?(name)
return response.reply(status_resource(name)) if Resource.exists?(name)
response.reply(t('subject.does_not_exist', name: name))
end

def dequeue(response)
Expand All @@ -83,6 +58,33 @@ def list(response)
response.reply(composed)
end

private

def status_label(name)
l = Label.new(name)
return t('label.desc', name: name, state: l.state.value) unless l.locked?
if l.wait_queue.count > 0
queue = []
l.wait_queue.each do |u|
usr = Lita::User.find_by_id(u)
queue.push(usr.name)
end
t('label.desc_owner_queue', name: name,
state: l.state.value,
owner_name: l.owner.name,
queue: queue.join(', '))
else
t('label.desc_owner', name: name,
state: l.state.value,
owner_name: l.owner.name)
end
end

def status_resource(name)
r = Resource.new(name)
t('resource.desc', name: name, state: r.state.value)
end

Lita.register_handler(LockerMisc)
end
end
Expand Down
5 changes: 2 additions & 3 deletions lib/locker/label.rb
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ def remove_resource(resource)

def owner
return nil unless locked?
Lita::User.find_by_id(owner_id)
Lita::User.find_by_id(owner_id.value)
end
end

Expand All @@ -126,9 +126,8 @@ def label_dependencies(name)
l = Label.new(name)
l.membership.each do |resource_name|
resource = Locker::Resource::Resource.new(resource_name)
u = Lita::User.find_by_id(resource.owner_id.value)
if resource.state.value == 'locked'
deps.push "#{resource_name} - #{u.name}"
deps.push "#{resource_name} - #{resource.owner.name}"
end
end
msg += deps.join("\n")
Expand Down
2 changes: 1 addition & 1 deletion lib/locker/misc.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ def user_locks(user)
owned = []
Locker::Label::Label.list.each do |name|
label = Locker::Label::Label.new(name)
owned.push(name) if label.owner_id.value == user.id
owned.push(name) if label.owner == user
end
owned
end
Expand Down
9 changes: 9 additions & 0 deletions lib/locker/resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,15 @@ def unlock!
end
true
end

def locked?
(state == 'locked')
end

def owner
return nil unless locked?
Lita::User.find_by_id(owner_id.value)
end
end
end
end

0 comments on commit 3eadeab

Please sign in to comment.