moneybook 0.2.0 → 0.2.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/VERSION +1 -1
- data/bin/moneybook +18 -4
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/bin/moneybook
CHANGED
@@ -13,6 +13,7 @@ require 'pp'
|
|
13
13
|
|
14
14
|
REGEXP_COMP_LINE = /^\s*([\w\ \']+?)\s*\((.+)\)\s*(.+)?/
|
15
15
|
REGEXP_PAYBACK_LINE = /\A\s*(.+)\s*\-+\>\s*(.+)\Z/
|
16
|
+
REGEXP_DEBT_LINE = /\A\s*(.+)\s*\@\s*(.+)\Z/
|
16
17
|
|
17
18
|
class Array
|
18
19
|
def normalize_length
|
@@ -45,7 +46,7 @@ def process_command(cmd)
|
|
45
46
|
end.parse!(args)
|
46
47
|
command_parse(options, args.last)
|
47
48
|
else
|
48
|
-
puts "unknown command: #{command}"
|
49
|
+
puts "unknown command: #{command}.. available commmands: new, parse\ndo moneybook parse --help for more help"
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
@@ -69,6 +70,13 @@ def command_new(title)
|
|
69
70
|
# - ... you can write ...
|
70
71
|
# 20L -> T
|
71
72
|
# - ... and since it's a payback it won't count on the spent amount
|
73
|
+
# - another synctactic sugar, instead of ...
|
74
|
+
# undefined past debt (20T) L
|
75
|
+
# - ... you can write ...
|
76
|
+
# 20L @ T
|
77
|
+
# which means the opposite of 20L -> T
|
78
|
+
# it means that L owes T 20$
|
79
|
+
# and it doesn't count on the spent amount
|
72
80
|
#######
|
73
81
|
|
74
82
|
PEOPLE: #{people.join(' ')}"
|
@@ -91,7 +99,7 @@ def get_final(sq, people)
|
|
91
99
|
final[person] += value
|
92
100
|
}
|
93
101
|
c[:virtual].each_pair{|person, value|
|
94
|
-
spent[person] += value unless c[:name] == 'PAYBACK'
|
102
|
+
spent[person] += value unless (c[:name] == 'PAYBACK' || c[:name] == 'DEBT')
|
95
103
|
}
|
96
104
|
c[:true].each_pair{|person, value|
|
97
105
|
given[person] += value
|
@@ -136,6 +144,12 @@ def command_parse(options, filename)
|
|
136
144
|
original_str = line.strip
|
137
145
|
line = "PAYBACK (#{temp[1].to_s}) #{temp[2].to_s}"
|
138
146
|
end
|
147
|
+
if temp=line.match(REGEXP_DEBT_LINE) then
|
148
|
+
temp2 = temp[1].to_s.match(/([\d\.]+)\s*([A-Za-z]+)/)
|
149
|
+
original_str = line.strip
|
150
|
+
line = "DEBT (#{temp2[1]}#{temp[2].to_s}) #{temp2[2].to_s}"
|
151
|
+
puts line
|
152
|
+
end
|
139
153
|
x = line.strip.match(REGEXP_COMP_LINE).to_a.map{|z| z.to_s}
|
140
154
|
sq << {:name => x[1].to_s, :original_str => original_str || line.strip, :true_str => x[2].to_s, :virtual_str => x[3].to_s, :true => {}, :virtual => {}, :balance => {},
|
141
155
|
:true_total => 0, :virtual_total => 0}
|
@@ -143,8 +157,8 @@ def command_parse(options, filename)
|
|
143
157
|
people.each{|person| c[:true][person]=0;c[:virtual][person]=0;c[:balance][person]=0}
|
144
158
|
|
145
159
|
# parsing of true_str
|
146
|
-
c[:true_str].split(/\s
|
147
|
-
temp = y.match(/([\d\.]+)([A-Za-z]+)/)
|
160
|
+
c[:true_str].split(/\s+(?=\d)/).each{|y|
|
161
|
+
temp = y.match(/([\d\.]+)\s*([A-Za-z]+)/)
|
148
162
|
if (person=people_abbreviations[temp[2].to_s.downcase]) != nil
|
149
163
|
c[:true][person] += temp[1].to_f
|
150
164
|
c[:true_total] += temp[1].to_f
|
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: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
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-
|
18
|
+
date: 2011-02-21 00:00:00 +01:00
|
19
19
|
default_executable: moneybook
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|