From 3d38be970c265607a7aca904aeda2719c73a9b53 Mon Sep 17 00:00:00 2001 From: James Walker Date: Fri, 21 Sep 2018 09:06:59 -0400 Subject: [PATCH] ruby - acronym --- ruby/acronym/README.md | 38 ++++++++++++++++++++++++++++++++++++ ruby/acronym/acronym.rb | 9 +++++++++ ruby/acronym/acronym_test.rb | 35 +++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 ruby/acronym/README.md create mode 100644 ruby/acronym/acronym.rb create mode 100644 ruby/acronym/acronym_test.rb diff --git a/ruby/acronym/README.md b/ruby/acronym/README.md new file mode 100644 index 0000000..8cc3e55 --- /dev/null +++ b/ruby/acronym/README.md @@ -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. diff --git a/ruby/acronym/acronym.rb b/ruby/acronym/acronym.rb new file mode 100644 index 0000000..03af68d --- /dev/null +++ b/ruby/acronym/acronym.rb @@ -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 diff --git a/ruby/acronym/acronym_test.rb b/ruby/acronym/acronym_test.rb new file mode 100644 index 0000000..7dd6586 --- /dev/null +++ b/ruby/acronym/acronym_test.rb @@ -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