Skip to content

Instantly share code, notes, and snippets.

@fractalatcarf
Created July 13, 2018 05:59
Show Gist options
  • Save fractalatcarf/c3019464728e16dc89b17dde0b2a6db3 to your computer and use it in GitHub Desktop.
Save fractalatcarf/c3019464728e16dc89b17dde0b2a6db3 to your computer and use it in GitHub Desktop.
acronymizer enhanced
def acronimize(sentence)
return "" unless sentence.is_a? String
trash = %w(de des)
# split sentence into array
words = sentence.split(" ")
words.select! do |word|
!trash.include?(word)
end
# for each item in my array, push 1st letter into result
first_letters = words.map do |word|
if block_given?
to_transform = yield(word)
if to_transform
word.upcase
else
word[0].upcase
end
else
word[0].upcase
end
end
# upcase the stuff
return first_letters.join
end
# p acronimize("") == ""
# p acronimize(" ") == ""
# p acronimize(12) == ""
# p acronimize(12.948483) == ""
require_relative "../acronimizer.rb"
# This file MUST be placed in spec/ folder !!
describe "#acronymize" do
it "works for Save Our Soul" do
actual = acronimize("save our soul")
expected = "SOS"
expect(actual).to eq(expected) # passes if `actual == expected`
end
it "works for Olympique de Marseille" do
actual = acronimize("Olympique de Marseille")
expected = "OM"
expect(actual).to eq(expected) # passes if `actual == expected`
end
it "works for Société nationale des Chemins de fer" do
actual = acronimize("Société nationale des Chemins de fer")
expected = "SNCF"
expect(actual).to eq(expected) # passes if `actual == expected`
end
it "works for Swatch Mercedes Art" do
actual = acronimize("Swatch Mercedes Art"){ |word| word == "Art" }
expected = "SMART"
expect(actual).to eq(expected) # passes if `actual == expected`
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment