swim_roster 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/roster +28 -0
- data/lib/classlist.rb +31 -0
- data/lib/kid.rb +29 -0
- metadata +49 -0
data/bin/roster
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/user/bin/env ruby
|
2
|
+
require_relative '../lib/classlist'
|
3
|
+
|
4
|
+
path = ARGV.shift || "/Users/zarchary2/mystuff/RubyClass/final_project/lib/roster_test(2).csv"
|
5
|
+
roster = ClassList.new path
|
6
|
+
|
7
|
+
io = $stdout
|
8
|
+
IO.popen("pbcopy", "w") { |io|
|
9
|
+
roster.sessions.each do |session|
|
10
|
+
kids = roster.kids.select { |kid| kid.pro_session == session }
|
11
|
+
|
12
|
+
max = kids.first.max_class_size
|
13
|
+
|
14
|
+
bucket_count = (kids.size / max).ceil
|
15
|
+
avg = kids.size.to_f / bucket_count
|
16
|
+
classes = kids.each_slice(avg.ceil).to_a
|
17
|
+
|
18
|
+
io.puts session
|
19
|
+
io.puts
|
20
|
+
classes.each do |klass|
|
21
|
+
klass.each do |kid|
|
22
|
+
io.puts kid.name
|
23
|
+
end
|
24
|
+
io.puts
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
}
|
data/lib/classlist.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative './kid'
|
2
|
+
require 'csv'
|
3
|
+
|
4
|
+
class ClassList
|
5
|
+
|
6
|
+
attr_accessor :kids
|
7
|
+
|
8
|
+
def initialize(file)
|
9
|
+
@kids = []
|
10
|
+
CSV.foreach(file, :headers => true) do |row|
|
11
|
+
full_name = "#{row["First Name"]} #{row["Last Name"]}"
|
12
|
+
@kids << Kid.new(full_name, row["Program"], row["Session"])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def sessions
|
17
|
+
@kids.reject! { |kid| kid.pro_session.nil? or kid.pro_session.empty? }
|
18
|
+
@kids.map { |kid| kid.pro_session }.uniq.sort
|
19
|
+
end
|
20
|
+
|
21
|
+
# def class_max level
|
22
|
+
# if level.count <= 5
|
23
|
+
# level.count
|
24
|
+
# elsif level.count >= 6 <= 10
|
25
|
+
# level.count/2
|
26
|
+
# else level.count >= 11 <= 15
|
27
|
+
# level.count/3
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
|
31
|
+
end
|
data/lib/kid.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
class Kid
|
3
|
+
attr_accessor :name, :program, :session
|
4
|
+
|
5
|
+
def initialize(name, program, session)
|
6
|
+
@name = name
|
7
|
+
@program = program
|
8
|
+
@session = session
|
9
|
+
end
|
10
|
+
|
11
|
+
def pro_slice
|
12
|
+
# "Swim Lessons, Preschool 1 - Pike" => "P1 Pike"
|
13
|
+
@program.slice(@program.index(/,/) + 2).to_s + @program.slice(@program.index(/\d/), @program.length).to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def pro_session
|
17
|
+
if @program.nil? or @session.nil?
|
18
|
+
return ""
|
19
|
+
else
|
20
|
+
@session.to_s + " " + self.pro_slice
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def max_class_size
|
26
|
+
5.0
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: swim_roster
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Zachary Bryan
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: build a swim lesson roster
|
15
|
+
email: zachx1@gmail.com
|
16
|
+
executables:
|
17
|
+
- roster
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/classlist.rb
|
22
|
+
- lib/kid.rb
|
23
|
+
- bin/roster
|
24
|
+
homepage: http://rubygems.org/gems/zb_roster
|
25
|
+
licenses: []
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project:
|
44
|
+
rubygems_version: 1.8.23
|
45
|
+
signing_key:
|
46
|
+
specification_version: 3
|
47
|
+
summary: swim lesson roster builder
|
48
|
+
test_files: []
|
49
|
+
has_rdoc:
|