moneybook 0.2.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/moneybook +55 -0
- data/moneybook.gemspec +2 -2
- metadata +5 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/bin/moneybook
CHANGED
@@ -118,6 +118,59 @@ def get_final(sq, people)
|
|
118
118
|
[final, spent, given, debt]
|
119
119
|
end
|
120
120
|
|
121
|
+
def get_exchanges(final,people)
|
122
|
+
poor_p = [] # people who must give..
|
123
|
+
poor_v = []
|
124
|
+
rich_p = [] # people who shall receive..
|
125
|
+
rich_v = []
|
126
|
+
final[0].each_pair{|person, value|
|
127
|
+
if value > 0 then
|
128
|
+
rich_p << person
|
129
|
+
rich_v << value.round
|
130
|
+
elsif value < 0 then
|
131
|
+
poor_p << person
|
132
|
+
poor_v << -value.round
|
133
|
+
else
|
134
|
+
# this person doesn't have to give or receive anything..
|
135
|
+
end
|
136
|
+
}
|
137
|
+
puts "\nPOSSIBLE (APPROX) EXCHANGES.."
|
138
|
+
while (eq=rich_v-(rich_v-poor_v)) != [] do
|
139
|
+
receives = rich_v.index eq[0]
|
140
|
+
gives = poor_v.index eq[0]
|
141
|
+
amount = eq[0]
|
142
|
+
puts "#{poor_p[gives]} gives #{amount} to #{rich_p[receives]}"
|
143
|
+
rich_p.delete_at receives
|
144
|
+
rich_v.delete_at receives
|
145
|
+
poor_p.delete_at gives
|
146
|
+
poor_v.delete_at gives
|
147
|
+
end
|
148
|
+
timeout = 20
|
149
|
+
while poor_v.length > 0 && rich_v.length > 0 && timeout > 0 do
|
150
|
+
#pp "---"
|
151
|
+
#pp [poor_v, rich_v]
|
152
|
+
#pp [poor_p, rich_p]
|
153
|
+
gives = poor_v.index poor_v.max
|
154
|
+
receives = rich_v.index rich_v.min
|
155
|
+
amount = poor_v.max >= rich_v.min ? rich_v.min : poor_v.max
|
156
|
+
puts "#{poor_p[gives]} gives #{amount} to #{rich_p[receives]}"
|
157
|
+
rich_v[receives] -= amount
|
158
|
+
poor_v[gives] -= amount
|
159
|
+
#pp [poor_v, rich_v]
|
160
|
+
#pp [poor_p, rich_p]
|
161
|
+
if poor_v[gives] == 0
|
162
|
+
poor_p.delete_at gives
|
163
|
+
poor_v.delete_at gives
|
164
|
+
end
|
165
|
+
if rich_v[receives] == 0
|
166
|
+
rich_p.delete_at receives
|
167
|
+
rich_v.delete_at receives
|
168
|
+
end
|
169
|
+
timeout -= 1
|
170
|
+
end
|
171
|
+
puts "--------------"
|
172
|
+
end
|
173
|
+
|
121
174
|
def command_parse(options, filename)
|
122
175
|
intermediate = options[:intermediate]
|
123
176
|
people = []
|
@@ -276,6 +329,8 @@ def command_parse(options, filename)
|
|
276
329
|
person = people[i]
|
277
330
|
puts "#{people_to_print[i]} #{final[0][person] == 0 ? '--- ' : (final[0][person] > 0 ? 'receives' : 'gives ')} #{"% 8.2f" % (final[0][person]*currency_change)} spent #{"% 8.2f" % (final[1][person]*currency_change)} given #{"% 8.2f" % (final[2][person]*currency_change)} debt #{"% 8.2f" % final[3][person]*currency_change}" if currency_change > 0
|
278
331
|
}
|
332
|
+
### PRINT MONEY EXCHANGES ###
|
333
|
+
exchanges = get_exchanges(final,people)
|
279
334
|
end
|
280
335
|
|
281
336
|
process_command(ARGV)
|
data/moneybook.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{moneybook}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["luca cioria"]
|
12
|
-
s.date = %q{2011-02-
|
12
|
+
s.date = %q{2011-02-23}
|
13
13
|
s.default_executable = %q{moneybook}
|
14
14
|
s.description = %q{keep track of money in a group}
|
15
15
|
s.email = %q{noreply@mail.com}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moneybook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- luca cioria
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02
|
18
|
+
date: 2011-03-02 00:00:00 +01:00
|
19
19
|
default_executable: moneybook
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|