ruby - acronym
This commit is contained in:
parent
6ccf257fdd
commit
3d38be970c
38
ruby/acronym/README.md
Normal file
38
ruby/acronym/README.md
Normal 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
9
ruby/acronym/acronym.rb
Normal 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
|
35
ruby/acronym/acronym_test.rb
Normal file
35
ruby/acronym/acronym_test.rb
Normal 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
|
Loading…
x
Reference in New Issue
Block a user