/
setup_default_start_point_controller.rb
60 lines (49 loc) · 1.49 KB
/
setup_default_start_point_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
class SetupDefaultStartPointController < ApplicationController
# Regular two step setup
# step 1. languages+test in column 1,2 (eg Java+JUnit)
# step 2. exercise (eg Fizz_Buzz)
def show_languages
@id = id
@title = 'create'
languages_names = display_names_of(languages)
kata = (id != nil) ? dojo.katas[id] : nil
index = choose_language(languages_names, kata)
@start_points = ::DisplayNamesSplitter.new(languages_names, index)
@max_seconds = runner.max_seconds
end
def show_exercises
@id = id
@title = 'create'
@language = params[:language]
@test = params[:test]
@exercises_names,@exercises = read_exercises
kata = (id != nil) ? dojo.katas[id] : nil
@initial_index = choose_exercise(@exercises_names, kata)
end
def save
manifest = language.create_kata_manifest
exercise_name = params['exercise']
exercise = exercises[exercise_name]
manifest[:exercise] = exercise.name
manifest[:visible_files]['instructions'] = exercise.text
katas.create_kata(manifest)
render json: { id: manifest[:id] }
end
private
include StartPointChooser
def display_names_of(start_points)
start_points.map(&:display_name).sort
end
def read_exercises
names = []
hash = {}
exercises.each do |exercise|
names << exercise.name
hash[exercise.name] = exercise.text
end
[names.sort, hash]
end
def language
languages[params['major'] + '-' + params['minor']]
end
end