ðŸŽ‰ Exercism Research is now launched. Help Exercism, help science and have some fun at research.exercism.io ðŸŽ‰

# PhotoshopLOL's solution

## to Bob in the Lua Track

Published at Jul 05 2020 · 0 comments
Instructions
Test suite
Solution

#### Note:

This exercise has changed since this solution was written.

Bob is a lackadaisical teenager. In conversation, his responses are very limited.

He answers 'Whoa, chill out!' if you yell at him.

He answers 'Calm down, I know what I'm doing!' if you yell a question at him.

He says 'Fine. Be that way!' if you address him without actually saying anything.

He answers 'Whatever.' to anything else.

Bob's conversational partner is a purist when it comes to written communication and always follows normal rules regarding sentence punctuation in English.

## Running the tests

To run the tests, run the command `busted` from within the exercise directory.

## Further information

For more detailed information about the Lua track, including how to get help if you're having trouble, please visit the exercism.io Lua language page.

## Source

Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. http://pine.fm/LearnToProgram/?Chapter=06

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

### bob_spec.lua

``````local bob = require('bob')

describe('bob', function()
it('stating something', function()
local result = bob.hey('Tom-ay-to, tom-aaaah-to.')
assert.are.equals('Whatever', result)
end)

it('shouting', function ()
local result = bob.hey('WATCH OUT!')
assert.are.equals('Whoa, chill out!', result)
end)

local result = bob.hey('Does this cryogenic chamber make me look fat?')
assert.are.equals('Sure', result)
end)

it('talking forcefully', function ()
local result = bob.hey("Let's go make out behind the gym!")
assert.are.equals('Whatever', result)
end)

it('shouting numbers', function ()
local result = bob.hey('1, 2, 3 GO!')
assert.are.equals('Whoa, chill out!', result)
end)

it('shouting with special characters', function ()
local result = bob.hey('ZOMG THE %^*@#\$(*^ ZOMBIES ARE COMING!!11!!1!')
assert.are.equals('Whoa, chill out!', result)
end)

it('silence', function ()
local result = bob.hey('')
assert.are.equals('Fine, be that way.', result)
end)
end)``````
``````local bob = {}

local responses = {
yell = "Whoa, chill out!",
askyell = "Calm down, I know what I'm doing!",
silent = "Fine, be that way.",
other = "Whatever",
}

function bob.hey(say)

if say:match("?") then
elseif say:match("!") and shouting(say) then
elseif say:match("?") and shouting(say) then
elseif say:len() < 1 then
else
end

end

function shouting(say)
local bool = true
for i in say:gmatch("%a") do
if not i:match("%u") then
bool = false
break
end
end
return bool
end

return bob``````