watcard 0.0.3 → 0.0.4
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 +4 -4
- data/bin/watcard +9 -4
- data/lib/watcard/history.rb +48 -7
- data/lib/watcard/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db3eab6c54d46f00699e1609a490e8bd91be61c5
|
4
|
+
data.tar.gz: dd23c5e11ed1919b58905d2cccb9a9f88f570d6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2f2b029ea8f200283845408e96dd423d32c5c15619ecb3c62f88194be8426853c15e760ca5d3c1dbceb296d3c056dc31303fdf7199a31083b06df09a549b5ed
|
7
|
+
data.tar.gz: b4ad1d09d230aa841ba932f7790bb249a5acbce658ba7ff30c2aac995bdfc37c118ab4832505785dfd315e3f2d28a853ac0b35d4322ddcd5b76c420c54bde9dc
|
data/bin/watcard
CHANGED
@@ -15,15 +15,20 @@ rescue Exception => e
|
|
15
15
|
end
|
16
16
|
|
17
17
|
command = ARGV.shift
|
18
|
+
days_ago = (ARGV.shift || 0).to_i
|
19
|
+
hist = Watcard::History.new(conf)
|
18
20
|
case command
|
19
21
|
when "hist"
|
20
|
-
hist = Watcard::History.new(conf)
|
21
|
-
days_ago = (ARGV.shift || 0).to_i
|
22
22
|
hist.output_history(days_ago)
|
23
23
|
when "ledger"
|
24
|
-
hist = Watcard::History.new(conf)
|
25
|
-
days_ago = (ARGV.shift || 0).to_i
|
26
24
|
hist.output_ledger(days_ago)
|
25
|
+
when "ledgerall"
|
26
|
+
hist.output_ledger_all
|
27
|
+
when "rawhist"
|
28
|
+
hist.output_raw_history(days_ago)
|
29
|
+
when "lastadd"
|
30
|
+
date = hist.last_ledger_add
|
31
|
+
puts "#{(Date.today-date).to_i} days ago on #{date}"
|
27
32
|
else
|
28
33
|
puts "Watcard CLI v#{Watcard::VERSION}"
|
29
34
|
puts "By Tristan Hume"
|
data/lib/watcard/history.rb
CHANGED
@@ -3,6 +3,7 @@ require "net/http"
|
|
3
3
|
require "uri"
|
4
4
|
require "time"
|
5
5
|
require "facets"
|
6
|
+
require "yaml"
|
6
7
|
|
7
8
|
module Watcard
|
8
9
|
class History
|
@@ -36,6 +37,7 @@ module Watcard
|
|
36
37
|
return "V1 Cafeteria" if loc =~ /WAT-FS-V1/
|
37
38
|
return "Liquid Assets" if loc =~ /WAT-FS-LA/
|
38
39
|
return "V1 Laundry" if loc =~ /V1 LAUNDRY/
|
40
|
+
return "Media.Doc" if loc =~ /MEDIA.DOC/
|
39
41
|
loc
|
40
42
|
end
|
41
43
|
|
@@ -51,17 +53,19 @@ module Watcard
|
|
51
53
|
time: Time.parse(cols[1], date),
|
52
54
|
amount: -(cols[2].strip.to_f)*mult,
|
53
55
|
loc: parse_loc(cols.last),
|
56
|
+
raw_loc: cols.last,
|
54
57
|
balance: cols[3].to_i
|
55
58
|
}
|
56
59
|
end.compact.reverse
|
57
60
|
end
|
58
61
|
|
59
|
-
def
|
60
|
-
return hist if hist.empty?
|
62
|
+
def add_transaction_types(hist)
|
61
63
|
hist.each do |a|
|
62
64
|
h = a[:time].hour
|
63
65
|
type = if a[:loc] =~ /laundry/i
|
64
66
|
"Laundry"
|
67
|
+
elsif a[:loc] =~ /media/i
|
68
|
+
"Printing"
|
65
69
|
elsif h < 11
|
66
70
|
"Breakfast"
|
67
71
|
elsif h < 17
|
@@ -71,6 +75,10 @@ module Watcard
|
|
71
75
|
end
|
72
76
|
a[:meal] = type
|
73
77
|
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def bundle_transactions(hist)
|
81
|
+
return hist if hist.empty?
|
74
82
|
meals = [hist.shift]
|
75
83
|
hist.each do |a|
|
76
84
|
# if last meal is same type treat them as one
|
@@ -96,6 +104,7 @@ module Watcard
|
|
96
104
|
log "No Transactions"
|
97
105
|
exit
|
98
106
|
end
|
107
|
+
add_transaction_types(hist)
|
99
108
|
bundle_transactions(hist)
|
100
109
|
end
|
101
110
|
|
@@ -109,11 +118,7 @@ module Watcard
|
|
109
118
|
END
|
110
119
|
end
|
111
120
|
|
112
|
-
def
|
113
|
-
meals = fetch_meals(days_ago)
|
114
|
-
add_accounts(meals)
|
115
|
-
log "# Transactions:"
|
116
|
-
out = meals.map {|m| ledger_transaction(m)}.join('')
|
121
|
+
def ledger_append_prompt(out)
|
117
122
|
puts out
|
118
123
|
if STDIN.tty? && @conf['ledger']
|
119
124
|
print "# Add to file [yN]: "
|
@@ -125,6 +130,29 @@ END
|
|
125
130
|
end
|
126
131
|
end
|
127
132
|
|
133
|
+
def ledger_transactions(days_ago)
|
134
|
+
meals = fetch_meals(days_ago)
|
135
|
+
add_accounts(meals)
|
136
|
+
meals.map {|m| ledger_transaction(m)}.join('')
|
137
|
+
end
|
138
|
+
|
139
|
+
def output_ledger(days_ago)
|
140
|
+
log "# Transactions for #{days_ago} days ago"
|
141
|
+
out = ledger_transactions(days_ago)
|
142
|
+
ledger_append_prompt(out)
|
143
|
+
end
|
144
|
+
|
145
|
+
def output_ledger_all
|
146
|
+
start = (Date.today - last_ledger_add).to_i - 1
|
147
|
+
days = []
|
148
|
+
start.downto(0).each do |days_ago|
|
149
|
+
days << ledger_transactions(days_ago)
|
150
|
+
end
|
151
|
+
out = days.join('')
|
152
|
+
log "# Transactions since #{start} days ago:"
|
153
|
+
ledger_append_prompt(out)
|
154
|
+
end
|
155
|
+
|
128
156
|
def output_history(days_ago)
|
129
157
|
meals = fetch_meals(days_ago)
|
130
158
|
total = 0
|
@@ -137,5 +165,18 @@ END
|
|
137
165
|
print " out of $#{budget} surplus: #{sprintf('%.2f',budget-total)}" if budget
|
138
166
|
puts ''
|
139
167
|
end
|
168
|
+
|
169
|
+
def output_raw_history(days_ago)
|
170
|
+
hist = history(Time.now.less(days_ago, :days))
|
171
|
+
add_transaction_types(hist)
|
172
|
+
puts YAML.dump(hist)
|
173
|
+
end
|
174
|
+
|
175
|
+
def last_ledger_add
|
176
|
+
return Date.today unless @conf['ledger']
|
177
|
+
file = File.expand_path(@conf['ledger'])
|
178
|
+
ledger = IO.read(file)
|
179
|
+
Date.parse(ledger.scan(/\d+\/\d+\/\d+/).last)
|
180
|
+
end
|
140
181
|
end
|
141
182
|
end
|
data/lib/watcard/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watcard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tristan Hume
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|