diff --git a/README.md b/README.md index f68b0974a3..3f1bae9676 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ tree -L 1 ~/code/exercism 1. `xruby/$PROBLEM/example.tt` - the Erb template for the test file, `$PROBLEM_test.rb`. 1. `x-common/$PROBLEM.json` - the shared inputs and outputs for the problem. 1. `lib/$PROBLEM.rb` - the logic for turning the data into tests. -1. `xruby/bin/generate-$PROBLEM` - the command to actually generate the test suite. +1. `xruby/bin/generate $PROBLEM` - the command to actually generate the test suite. 1. `.version` - used to keep track of the version of the test files as the data changes. Additionally, there is some common generator logic in `lib/generator.rb`. @@ -98,7 +98,7 @@ For example, take a look at the `hamming.json` file in the x-common repository, as the following files in the xruby repository: 1. `hamming/example.tt` -1. `bin/generate-hamming` +1. `bin/generate hamming` 1. `lib/hamming.rb` 1. `lib/generator.rb` @@ -166,4 +166,4 @@ The MIT License (MIT) Copyright (c) 2014 Katrina Owen, _@kytrinyx.com ## Ruby icon -The Ruby icon is the Vienna.rb logo, and is used with permission. Thanks Floor Dress :) \ No newline at end of file +The Ruby icon is the Vienna.rb logo, and is used with permission. Thanks Floor Dress :) diff --git a/bin/generate b/bin/generate new file mode 100755 index 0000000000..64cf894463 --- /dev/null +++ b/bin/generate @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby + +exercise = ARGV[0] +cases = "#{exercise.tr('-','_')}_cases" + +require_relative '../lib/helper' +require 'generator' +begin + require "#{cases}" +rescue LoadError + puts "A generator does not currently exist for #{exercise}!" + exit(1) +end + +klass = Object.const_get(cases.split('_').map(&:capitalize).join) +Generator.new(exercise, klass).generate diff --git a/bin/generate-acronym b/bin/generate-acronym deleted file mode 100755 index fc6b564f6d..0000000000 --- a/bin/generate-acronym +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'acronym_cases' - -Generator.new('acronym', AcronymCases).generate diff --git a/bin/generate-alphametics b/bin/generate-alphametics deleted file mode 100755 index eb05a72f9b..0000000000 --- a/bin/generate-alphametics +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'alphametics_cases' - -Generator.new('alphametics', AlphameticsCases).generate - diff --git a/bin/generate-binary b/bin/generate-binary deleted file mode 100755 index 629f213f13..0000000000 --- a/bin/generate-binary +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'binary_cases' - -Generator.new('binary', BinaryCases).generate diff --git a/bin/generate-bracket-push b/bin/generate-bracket-push deleted file mode 100755 index 17cdfa2cd5..0000000000 --- a/bin/generate-bracket-push +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'bracket_push_cases' - -Generator.new('bracket-push', BracketsCases).generate diff --git a/bin/generate-clock b/bin/generate-clock deleted file mode 100755 index 97a1366f5b..0000000000 --- a/bin/generate-clock +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'clock_cases' - -Generator.new('clock', ClockCases).generate diff --git a/bin/generate-connect b/bin/generate-connect deleted file mode 100755 index 22de86f514..0000000000 --- a/bin/generate-connect +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'connect_cases' - -Generator.new('connect', ConnectCases).generate diff --git a/bin/generate-custom-set b/bin/generate-custom-set deleted file mode 100755 index 885e39fb4d..0000000000 --- a/bin/generate-custom-set +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'custom_set_cases' - -Generator.new('custom-set', CustomSetCases).generate diff --git a/bin/generate-difference-of-squares b/bin/generate-difference-of-squares deleted file mode 100755 index a879221fe5..0000000000 --- a/bin/generate-difference-of-squares +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'difference_of_squares_cases' - -Generator.new('difference-of-squares', DifferenceOfSquaresCases).generate diff --git a/bin/generate-gigasecond b/bin/generate-gigasecond deleted file mode 100755 index 52da2313dc..0000000000 --- a/bin/generate-gigasecond +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'gigasecond_cases' - -Generator.new('gigasecond', GigasecondCases).generate diff --git a/bin/generate-hamming b/bin/generate-hamming deleted file mode 100755 index 0785604790..0000000000 --- a/bin/generate-hamming +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'hamming_cases' - -Generator.new('hamming', HammingCases).generate diff --git a/bin/generate-hello-world b/bin/generate-hello-world deleted file mode 100755 index ee8e4e8cdf..0000000000 --- a/bin/generate-hello-world +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'hello_world_cases' - -Generator.new('hello-world', HelloWorldCases).generate diff --git a/bin/generate-largest-series-product b/bin/generate-largest-series-product deleted file mode 100755 index 0e48f98b27..0000000000 --- a/bin/generate-largest-series-product +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'largest_series_product_cases' - -Generator.new('largest-series-product', LargestSeriesProductCases).generate diff --git a/bin/generate-leap b/bin/generate-leap deleted file mode 100755 index 8bc9dcbc46..0000000000 --- a/bin/generate-leap +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'leap_cases' - -Generator.new('leap', LeapCases).generate diff --git a/bin/generate-nth-prime b/bin/generate-nth-prime deleted file mode 100755 index 306a6eb2ae..0000000000 --- a/bin/generate-nth-prime +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'nth_prime_cases' - -Generator.new('nth-prime', NthPrimeCases).generate diff --git a/bin/generate-pangram b/bin/generate-pangram deleted file mode 100755 index df6f15d3f3..0000000000 --- a/bin/generate-pangram +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'pangram_cases' - -Generator.new('pangram', PangramCases).generate diff --git a/bin/generate-raindrops b/bin/generate-raindrops deleted file mode 100755 index 4e73f4893f..0000000000 --- a/bin/generate-raindrops +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'raindrop_cases' - -Generator.new('raindrops', RaindropCases).generate diff --git a/bin/generate-rna-transcription b/bin/generate-rna-transcription deleted file mode 100755 index 9498c7e202..0000000000 --- a/bin/generate-rna-transcription +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'rna_transcription_cases' - -Generator.new('rna-transcription', RnaTranscriptionCases).generate diff --git a/bin/generate-roman-numerals b/bin/generate-roman-numerals deleted file mode 100755 index 3096338a17..0000000000 --- a/bin/generate-roman-numerals +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'roman_numerals_cases' - -Generator.new('roman-numerals', RomanNumeralsCases).generate diff --git a/bin/generate-run-length-encoding b/bin/generate-run-length-encoding deleted file mode 100755 index c0b49a26af..0000000000 --- a/bin/generate-run-length-encoding +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'run_length_encoding_cases' - -Generator.new('run-length-encoding', RunLengthEncodingCases).generate diff --git a/bin/generate-two-bucket b/bin/generate-two-bucket deleted file mode 100755 index c31798f0f6..0000000000 --- a/bin/generate-two-bucket +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require_relative '../lib/helper' -require 'generator' -require 'two_bucket_cases' - -Generator.new('two-bucket', TwoBucketCases).generate diff --git a/lib/bracket_push_cases.rb b/lib/bracket_push_cases.rb index b391c452f6..61d425bc4f 100644 --- a/lib/bracket_push_cases.rb +++ b/lib/bracket_push_cases.rb @@ -1,4 +1,4 @@ -class BracketsCase < OpenStruct +class BracketPushCase < OpenStruct def name 'test_%s' % description.gsub(/[ -]/, '_') end @@ -34,8 +34,8 @@ def split_input end end -BracketsCases = proc do |data| +BracketPushCases = proc do |data| JSON.parse(data)['cases'].map.with_index do |row, i| - BracketsCase.new(row.merge('index' => i)) + BracketPushCase.new(row.merge('index' => i)) end end diff --git a/lib/raindrop_cases.rb b/lib/raindrops_cases.rb similarity index 89% rename from lib/raindrop_cases.rb rename to lib/raindrops_cases.rb index 807fffeacc..0fd9933b15 100644 --- a/lib/raindrop_cases.rb +++ b/lib/raindrops_cases.rb @@ -12,7 +12,7 @@ def skipped? end end -RaindropCases = proc do |data| +RaindropsCases = proc do |data| JSON.parse(data)['cases'].map.with_index do |row, i| RaindropsCase.new(row.merge('index' => i)) end