Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion bin/generate
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ def exercises
.select { |file| File.directory? File.join('./exercises/practice', file) }
end

def underscore(str)
str.gsub(/[^\w\s-]/, '').gsub(/[-\s]/, '_').downcase
end

class VerificationError < StandardError
MESSAGE = 'The result generated for %<exercise>s, does not match the current file'

Expand Down Expand Up @@ -39,7 +43,7 @@ end
parser.on('--verify', 'Verify all exercises') do
exercises.each do |exercise|
if File.exist?("./exercises/practice/#{exercise}/.meta/test_template.erb")
current_code = File.read("./exercises/practice/#{exercise}/#{exercise}_test.rb")
current_code = File.read("./exercises/practice/#{exercise}/#{underscore(exercise)}_test.rb")
f = File.new("./exercises/practice/#{exercise}/temp_test.rb", 'w+')
Generator.new(exercise).generate(f.path)
generated_code = f.read
Expand Down
6 changes: 3 additions & 3 deletions generatorv2/lib/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@ def generate(result_path = "./exercises/practice/#{@exercise}/#{underscore(@exer
additional_json(json)
json["cases"] = remove_tests(uuid, json)
status = proc { status }
template = ERB.new File.read("./exercises/practice/#{@exercise}/.meta/test_template.erb")
template = ERB.new(File.read("./exercises/practice/#{@exercise}/.meta/test_template.erb"), trim_mode: '-')

result = template.result(binding)

File.write(result_path, result)
RuboCop::CLI.new.
run(['-x', '-c', '.rubocop.yml', '-o', NullDevice.path, result_path])
run(['-a', '-c', '.rubocop.yml', '-o', NullDevice.path, result_path])
end

def underscore(str)
str.gsub(/[-\s]/, '_').downcase
str.gsub(/[^\w\s-]/, '').gsub(' ', ' ').gsub(/[-\s]/, '_').downcase
end

def camel_case(str)
Expand Down
2 changes: 1 addition & 1 deletion generatorv2/lib/utils.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def additional_json(json)
def remove_tests(uuid, json)
json["cases"].each_with_object([]) do |x, acc|
if x["cases"]
acc << { "cases" => remove_tests(uuid, x) }
acc << { "cases" => remove_tests(uuid, x), "description" => x["description"] }
elsif uuid.include?(x["uuid"])
acc << x
end
Expand Down
10 changes: 10 additions & 0 deletions generatorv2/test/utils_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,16 @@ def test_underscore_with_two_words
Generator.new("two-fer").underscore("two-fer")
end

def test_underscore_with_special_characters
assert_equal "two_fer",
Generator.new("two-fer").underscore("two,!@#$%^&*()-fer")
end

def test_underscore_with_special_characters_should_not_create_multiple_spaces
assert_equal "two_fer",
Generator.new("two-fer").underscore("two = fer")
end

def test_first_time_includes_hastag
assert_equal "# skip",
Generator.new("acronym").skip?
Expand Down