lib/lita/handlers/claims.rb in lita-claims-0.0.1 vs lib/lita/handlers/claims.rb in lita-claims-0.0.2

- old
+ new

@@ -8,19 +8,59 @@ route(/^claim\s(#{PROPERTY_OR_ENVIRONMENT.source})(?:\s(#{PROPERTY_OR_ENVIRONMENT.source}))?/i, :create, command: true, help: { "claim PROPERTY" => "To claim a property by the name PROPERTY" }) + route(/^who claimed\s(#{PROPERTY_OR_ENVIRONMENT.source})(?:\s(#{PROPERTY_OR_ENVIRONMENT.source}))?/i, :exists?, command: true, help: { + "who claimed PROPERTY" => "To see who claimed a property by the name PROPERTY" + }) + + route(/^unclaim\s(#{PROPERTY_OR_ENVIRONMENT.source})(?:\s(#{PROPERTY_OR_ENVIRONMENT.source}))?/i, :destroy, command: true, help: { + "unclaim PROPERTY" => "To remove your claim from a property by the name PROPERTY" + }) + def create(response) claimer = response.message.source.user.name property, environment = response.matches.first environment ||= 'default' environment_string = " (#{environment})" if environment != 'default' if property && Claim.create(property, claimer, environment) - reply = "#{property}#{environment_string} was claimed by #{claimer}" + reply = "#{property}#{environment_string} was claimed by #{claimer}." else existing_claimer = Claim.read(property, environment) - reply = "Could not claim #{property}#{environment_string} - already claimed by #{existing_claimer}" + reply = "Could not claim #{property}#{environment_string} - already claimed by #{existing_claimer}." + end + response.reply(reply) + end + + def exists?(response) + property, environment = response.matches.first + environment ||= 'default' + environment_string = " (#{environment})" if environment != 'default' + if property && Claim.exists?(property, environment) + claimer = Claim.read(property, environment) + reply = "#{property}#{environment_string} is currently claimed by #{claimer}." + else + reply = "#{property}#{environment_string} has not been claimed." + end + response.reply(reply) + end + + def destroy(response) + unclaimer = response.message.source.user.name + property, environment = response.matches.first + environment ||= 'default' + environment_string = " (#{environment})" if environment != 'default' + if property && Claim.exists?(property, environment) + claimer = Claim.read(property, environment) + if claimer == unclaimer + Claim.destroy(property, environment) + reply = "#{property}#{environment_string} is no longer claimed." + else + reply = "#{property}#{environment_string} is currently claimed by #{claimer}. Use the --force flag when you are sure to unclaim the property." + end + else + reply = "#{property}#{environment_string} has not yet been claimed." end response.reply(reply) end end