group_mixer 0.4.2 → 0.5.0

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.
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