Created
July 13, 2018 05:59
-
-
Save fractalatcarf/c3019464728e16dc89b17dde0b2a6db3 to your computer and use it in GitHub Desktop.
acronymizer enhanced
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) == "" | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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