group_mixer 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf4090c12a830fe79fd2e9a82b0a9e0ff88c13d9
4
- data.tar.gz: 706cf5a6414bcb35d01bc75e099b469e38eaee50
3
+ metadata.gz: e9751efce09d105cce6e127118fa18817407890d
4
+ data.tar.gz: 263d704111169002f26c3421232fdf3cd2b32db3
5
5
  SHA512:
6
- metadata.gz: 4a300c0e167977749282c0c29eca872927aa8d13124c0dfac27b2c439f35b7aaeef9338f0c31d9a94405cae8a0269d2b7c3d9a8e6b8b1063e6535afdf6302821
7
- data.tar.gz: 1c08980250baf23168ace07c0bad0a13cf6bc67fb0130554d9125fd835f39d75df33246dba700241f53c9f8bb73ff0e28519baae6b0405b67ee3b86715add9e6
6
+ metadata.gz: f8afd0d15766ad527e6080af957baa84fda1ad4c5d1a0e26a5328c5d5f186fa586b799ce76f72fe251f73c6bae17efa121f9a9fd4743c496d2e156a9ca35001f
7
+ data.tar.gz: d317036037330b80d355c8a054d23065e851b1aaf929e62af8c79fbfbcdb29052934b2033e8a0753e3e8faee9f48ce14cbf26fef7fb7bcfaf0bc24e1a5cd0bf2
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- group_mixer (0.4.2)
4
+ group_mixer (0.5.0)
5
+ thor
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -21,6 +22,7 @@ GEM
21
22
  diff-lcs (>= 1.2.0, < 2.0)
22
23
  rspec-support (~> 3.7.0)
23
24
  rspec-support (3.7.0)
25
+ thor (0.20.0)
24
26
 
25
27
  PLATFORMS
26
28
  ruby
data/bin/group_mixer ADDED
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'csv'
4
+ require 'thor'
5
+ require_relative './../lib/group_mixer'
6
+
7
+ class GroupMixer::Command < Thor
8
+ default_command :execute
9
+
10
+ desc '--group_size=GROUP_SIZE --people=FILE_PATH --past_set=CSV_PATH', 'execute command'
11
+ method_option :people, type: :string
12
+ method_option :past_set, type: :string
13
+ method_option :group_size, type: :numeric
14
+ method_option :member_size, type: :numeric
15
+ method_option :reminders, type: :boolean
16
+ def execute
17
+ people = people_from_file(options[:people])
18
+ past_set = past_set_from_file(options[:past_set])
19
+ group_size = options[:group_size]
20
+ member_size = options[:member_size]
21
+ is_separate = options[:reminders]
22
+
23
+ if !!(group_size) ^ !!(member_size)
24
+ groups = group_size ? GroupMixer.by_group_size(people, past_set, group_size, is_separate)
25
+ : GroupMixer.by_member_size(people, past_set, member_size, is_separate)
26
+ groups.each do |group|
27
+ puts group.to_a.join(',')
28
+ end
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def people_from_file(filepath)
35
+ people = []
36
+ File.open(filepath) do |f|
37
+ f.each_line do |line|
38
+ people << line.strip
39
+ end
40
+ end
41
+ people
42
+ end
43
+
44
+ def past_set_from_file(filepath)
45
+ return [[]] if filepath.nil?
46
+
47
+ past_sets = []
48
+ CSV.foreach(filepath) do |row|
49
+ past_sets << row
50
+ end
51
+ past_sets
52
+ end
53
+ end
54
+
55
+ GroupMixer::Command.start(ARGV)
data/group_mixer.gemspec CHANGED
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
+ spec.add_dependency "thor"
24
+
23
25
  spec.add_development_dependency "bundler", "~> 1.16"
24
26
  spec.add_development_dependency "rake", "~> 10.0"
25
27
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -1,5 +1,5 @@
1
- require "group_mixer/group"
2
- require "group_mixer/weighted_group"
1
+ require_relative "./group"
2
+ require_relative "./weighted_group"
3
3
 
4
4
  module GroupMixer
5
5
  class Mixer
@@ -1,3 +1,3 @@
1
1
  module GroupMixer
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
data/lib/group_mixer.rb CHANGED
@@ -1,6 +1,4 @@
1
- require "group_mixer/version"
2
- require "group_mixer/mixer"
3
- require "group_mixer/weighted_group"
1
+ require_relative "./group_mixer/mixer"
4
2
 
5
3
  module GroupMixer
6
4
  class ZeroGroupSize < StandardError
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: group_mixer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - iwtn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-11 00:00:00.000000000 Z
11
+ date: 2018-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -69,6 +83,7 @@ files:
69
83
  - README.md
70
84
  - Rakefile
71
85
  - bin/console
86
+ - bin/group_mixer
72
87
  - bin/setup
73
88
  - group_mixer.gemspec
74
89
  - lib/group_mixer.rb