work_together 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/work-together +3 -3
- data/lib/work_together/parser.rb +3 -13
- data/lib/work_together/version.rb +2 -2
- data/lib/work_together.rb +101 -66
- metadata +1 -2
- data/lib/work_together/student.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6f2fb796937e7f37d46abee6d075df3d25550d6
|
4
|
+
data.tar.gz: a9bede98d7bc13351dc99427d79935b5f30b8ae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97a17e65266a397f0f303d48f36af43968164d2ba91683ab5d8f648eeb50dc025122ccf752e129b9284fac69522058609456394e81d13602815c6e124363e53b
|
7
|
+
data.tar.gz: b398ffa81c018727b8094ba4ee283a07b4d049c27a3f0a75e0a71772e65147ed4b5f3607418af5f4c29516c6ff602e0701a35af600584d9f14d3eb2f451d750b
|
data/bin/work-together
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
3
|
require 'csv'
|
4
4
|
require_relative '../lib/work_together.rb'
|
5
5
|
|
6
6
|
if ARGV.length >= 3
|
7
|
-
WorkTogether.new(ARGV[2]).generate_togetherness(ARGV)
|
7
|
+
WorkTogether::Generator.new(ARGV[2]).generate_togetherness(ARGV)
|
8
8
|
elsif ARGV.include?("--help")
|
9
|
-
WorkTogether.new.help
|
9
|
+
WorkTogether::Generator.new.help
|
10
10
|
else
|
11
11
|
puts "please use work-together --help for a list of options"
|
12
12
|
end
|
data/lib/work_together/parser.rb
CHANGED
@@ -1,19 +1,9 @@
|
|
1
1
|
require 'csv'
|
2
|
-
require_relative './student.rb'
|
3
2
|
class Parser
|
4
3
|
|
5
|
-
def self.
|
6
|
-
CSV.parse(file, headers: true).
|
7
|
-
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.make_student_with_attributes(row)
|
12
|
-
row.delete_if {|k, v| !Student.instance_methods.include?(k.to_sym)}
|
13
|
-
Student.new.tap do |student|
|
14
|
-
row.each do |attribute, value|
|
15
|
-
student.public_send("#{attribute}=", value)
|
16
|
-
end
|
4
|
+
def self.parse_students(file)
|
5
|
+
CSV.parse(file, headers: true).map do |row|
|
6
|
+
row
|
17
7
|
end
|
18
8
|
end
|
19
9
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.
|
1
|
+
module WorkTogether
|
2
|
+
VERSION = "0.6.0"
|
3
3
|
end
|
data/lib/work_together.rb
CHANGED
@@ -1,96 +1,131 @@
|
|
1
1
|
require_relative './work_together/version'
|
2
|
-
require_relative './work_together/student.rb'
|
3
2
|
require_relative './work_together/parser.rb'
|
4
3
|
require_relative './work_together/table.rb'
|
5
4
|
require_relative './work_together/pair_maker.rb'
|
6
5
|
require_relative './work_together/learn_proxy.rb'
|
7
|
-
require 'pry'
|
8
6
|
require 'colorize'
|
9
7
|
|
10
|
-
|
8
|
+
module WorkTogether
|
11
9
|
|
12
|
-
|
10
|
+
class Generator
|
13
11
|
|
14
|
-
|
15
|
-
@batch_id = batch_id
|
16
|
-
@pair_maker = PairMaker.new
|
17
|
-
end
|
12
|
+
attr_accessor :batch_id, :client, :pair_maker, :keys
|
18
13
|
|
14
|
+
def initialize(batch_id)
|
15
|
+
@batch_id = batch_id
|
16
|
+
@pair_maker = PairMaker.new
|
17
|
+
end
|
19
18
|
|
20
|
-
def generate_togetherness(options, quiet=nil)
|
21
|
-
make_batch
|
22
|
-
make_groups(options, quiet=quiet)
|
23
|
-
end
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
20
|
+
def generate_togetherness(options, quiet=nil)
|
21
|
+
make_batch
|
22
|
+
make_groups(options, quiet=quiet)
|
23
|
+
end
|
30
24
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
25
|
+
def make_batch
|
26
|
+
configure_client
|
27
|
+
student_data = get_and_parse_csv
|
28
|
+
Student.generate_from_data(student_data)
|
29
|
+
end
|
30
|
+
|
31
|
+
def make_groups(options, quiet)
|
32
|
+
flag = options[1][2..-1]
|
33
|
+
if options.include?("pairs")
|
34
|
+
pair_maker.public_send("make_pairs_#{flag}", Student.all)
|
35
|
+
elsif options.include?("tables")
|
36
|
+
pair_maker.public_send("make_tables_#{flag}", Student.all)
|
37
|
+
elsif options.include?("--help")
|
38
|
+
help
|
39
|
+
else
|
40
|
+
puts "Please enter a valid command. Type work-together --help for more."
|
41
|
+
end
|
42
|
+
display_tables if !quiet && Table.all.length > 0
|
41
43
|
end
|
42
|
-
display_tables if !quiet && Table.all.length > 0
|
43
|
-
end
|
44
44
|
|
45
|
-
|
45
|
+
private
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
def display_tables
|
48
|
+
Table.all.each_with_index do |table, i|
|
49
|
+
puts "Group #{i + 1}:".colorize(:blue)
|
50
|
+
table.students.each do |student|
|
51
|
+
puts student.name.colorize(:light_blue)
|
52
|
+
end
|
53
|
+
puts "-------------------".colorize(:blue)
|
52
54
|
end
|
53
|
-
|
54
|
-
|
55
|
-
|
55
|
+
end
|
56
|
+
|
57
|
+
def help
|
58
|
+
puts "Available commands:"
|
59
|
+
puts "work-together pairs --random batch-number generate pairs randomly"
|
60
|
+
puts "work-together pairs --progress batch-number generate pairs grouped by similar progress"
|
61
|
+
puts "work-together pairs --mindful batch-number generate pairs with one person who is more advanced, one person less advanced"
|
62
|
+
puts "work-together tables --random batch-number generate tables randomly"
|
63
|
+
puts "work-together tables --progress batch-number generate tables grouped by similar progress"
|
64
|
+
puts "work-together tables --mindful batch-number generate tables with some people more advanced, some less"
|
65
|
+
end
|
66
|
+
|
67
|
+
def configure_client
|
68
|
+
configure_keys
|
69
|
+
credentials = LearnProxy::Credentials.new(self.keys['GITHUB_USERNAME'], self.keys['GITHUB_PASSWORD'])
|
70
|
+
@client = LearnProxy::Client.new(credentials)
|
71
|
+
end
|
72
|
+
|
73
|
+
def configure_keys
|
74
|
+
@keys = YAML.load_file(File.expand_path(File.dirname(__FILE__)) + '/work_together/client.yml')
|
75
|
+
get_and_store_keys unless @keys
|
76
|
+
end
|
77
|
+
|
78
|
+
def get_and_store_keys
|
79
|
+
puts "Please enter your github username:"
|
80
|
+
username = STDIN.gets.chomp
|
81
|
+
puts "Please enter your github password:"
|
82
|
+
password = STDIN.gets.chomp
|
83
|
+
@keys = {"GITHUB_USERNAME" => username, "GITHUB_PASSWORD" => password}
|
84
|
+
File.open(File.expand_path(File.dirname(__FILE__)) + '/work_together/client.yml', 'w') {|f| f.write self.keys.to_yaml }
|
85
|
+
end
|
86
|
+
|
87
|
+
def get_roster
|
88
|
+
self.client.csv_for(self.batch_id)
|
89
|
+
end
|
90
|
+
|
91
|
+
def get_and_parse_csv
|
92
|
+
roster = get_roster
|
93
|
+
Parser.parse_students(roster)
|
94
|
+
end
|
95
|
+
end
|
56
96
|
|
57
|
-
|
58
|
-
|
59
|
-
puts "work-together pairs --random batch-number generate pairs randomly"
|
60
|
-
puts "work-together pairs --progress batch-number generate pairs grouped by similar progress"
|
61
|
-
puts "work-together pairs --mindful batch-number generate pairs with one person who is more advanced, one person less advanced"
|
62
|
-
puts "work-together tables --random batch-number generate tables randomly"
|
63
|
-
puts "work-together tables --progress batch-number generate tables grouped by similar progress"
|
64
|
-
puts "work-together tables --mindful batch-number generate tables with some people more advanced, some less"
|
65
|
-
end
|
97
|
+
class Student
|
98
|
+
@@all = []
|
66
99
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
100
|
+
attr_accessor :first_name, :last_name, :completion, :github_username, :email, :active_track
|
101
|
+
|
102
|
+
def initialize
|
103
|
+
@@all << self
|
71
104
|
end
|
72
105
|
|
73
|
-
def
|
74
|
-
|
75
|
-
get_and_store_keys unless @keys
|
106
|
+
def self.all
|
107
|
+
@@all
|
76
108
|
end
|
77
109
|
|
78
|
-
def
|
79
|
-
|
80
|
-
username = STDIN.gets.chomp
|
81
|
-
puts "Please enter your github password:"
|
82
|
-
password = STDIN.gets.chomp
|
83
|
-
@keys = {"GITHUB_USERNAME" => username, "GITHUB_PASSWORD" => password}
|
84
|
-
File.open(File.expand_path(File.dirname(__FILE__)) + '/work_together/client.yml', 'w') {|f| f.write self.keys.to_yaml }
|
110
|
+
def name
|
111
|
+
"#{first_name} #{last_name}"
|
85
112
|
end
|
86
113
|
|
87
|
-
def
|
88
|
-
self.
|
114
|
+
def progress
|
115
|
+
self.completion
|
89
116
|
end
|
90
117
|
|
91
|
-
def
|
92
|
-
|
93
|
-
|
118
|
+
def self.generate_from_data(data)
|
119
|
+
data.each do |student_hash|
|
120
|
+
student_hash.delete_if {|attribute, value| !Student.instance_methods.include?(attribute.to_sym)}
|
121
|
+
self.new.tap do |student|
|
122
|
+
student_hash.each do |attribute, value|
|
123
|
+
student.public_send("#{attribute}=", value)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
94
127
|
end
|
128
|
+
|
129
|
+
end
|
95
130
|
end
|
96
131
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: work_together
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sophie DeBenedetto
|
@@ -122,7 +122,6 @@ files:
|
|
122
122
|
- lib/work_together/learn_proxy.rb
|
123
123
|
- lib/work_together/pair_maker.rb
|
124
124
|
- lib/work_together/parser.rb
|
125
|
-
- lib/work_together/student.rb
|
126
125
|
- lib/work_together/table.rb
|
127
126
|
- lib/work_together/version.rb
|
128
127
|
homepage: https://github.com/SophieDeBenedetto/work-together
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class Student
|
2
|
-
|
3
|
-
@@all = []
|
4
|
-
|
5
|
-
attr_accessor :first_name, :last_name, :completion, :github_username, :email, :active_track
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@@all << self
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.all
|
12
|
-
@@all
|
13
|
-
end
|
14
|
-
|
15
|
-
def name
|
16
|
-
"#{first_name} #{last_name}"
|
17
|
-
end
|
18
|
-
|
19
|
-
def progress
|
20
|
-
self.completion
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|