ruby - acronym

This commit is contained in:
James Walker 2018-09-21 09:06:59 -04:00
parent 6ccf257fdd
commit 3d38be970c
Signed by: walkah
GPG Key ID: 3C127179D6086E93
3 changed files with 82 additions and 0 deletions

38
ruby/acronym/README.md Normal file
View File

@ -0,0 +1,38 @@
# Acronym
Convert a phrase to its acronym.
Techies love their TLA (Three Letter Acronyms)!
Help generate some jargon by writing a program that converts a long name
like Portable Network Graphics to its acronym (PNG).
* * * *
For installation and learning resources, refer to the
[exercism help page](http://exercism.io/languages/ruby).
For running the tests provided, you will need the Minitest gem. Open a
terminal window and run the following command to install minitest:
gem install minitest
If you would like color output, you can `require 'minitest/pride'` in
the test file, or note the alternative instruction, below, for running
the test file.
Run the tests from the exercise directory using the following command:
ruby acronym_test.rb
To include color from the command line:
ruby -r minitest/pride acronym_test.rb
## Source
Julien Vanier [https://github.com/monkbroc](https://github.com/monkbroc)
## Submitting Incomplete Solutions
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

9
ruby/acronym/acronym.rb Normal file
View File

@ -0,0 +1,9 @@
class Acronym
def self.abbreviate(long_name)
abbrev = ""
long_name.split(/[\W-]+/).each do |word|
abbrev += word[0]
end
abbrev.upcase
end
end

View File

@ -0,0 +1,35 @@
require 'minitest/autorun'
require_relative 'acronym'
# Common test data version: 1.4.0 dc9a5af
class AcronymTest < Minitest::Test
def test_basic
# skip
assert_equal "PNG", Acronym.abbreviate('Portable Network Graphics')
end
def test_lowercase_words
# skip
assert_equal "ROR", Acronym.abbreviate('Ruby on Rails')
end
def test_punctuation
# skip
assert_equal "FIFO", Acronym.abbreviate('First In, First Out')
end
def test_all_caps_word
# skip
assert_equal "GIMP", Acronym.abbreviate('GNU Image Manipulation Program')
end
def test_punctuation_without_whitespace
# skip
assert_equal "CMOS", Acronym.abbreviate('Complementary metal-oxide semiconductor')
end
def test_very_long_abbreviation
# skip
assert_equal "ROTFLSHTMDCOALM", Acronym.abbreviate('Rolling On The Floor Laughing So Hard That My Dogs Came Over And Licked Me')
end
end