reckon 0.3.7 → 0.3.8
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/CHANGES.md +1 -0
- data/Gemfile.lock +1 -1
- data/lib/reckon/app.rb +24 -10
- data/reckon.gemspec +1 -1
- data/spec/reckon/app_spec.rb +20 -0
- metadata +4 -4
data/CHANGES.md
CHANGED
data/Gemfile.lock
CHANGED
data/lib/reckon/app.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#coding: utf-8
|
1
2
|
require 'pp'
|
2
3
|
|
3
4
|
module Reckon
|
@@ -179,16 +180,25 @@ module Reckon
|
|
179
180
|
|
180
181
|
def date_for(index)
|
181
182
|
value = columns[date_column_index][index]
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
183
|
+
if options[:date_format].nil?
|
184
|
+
value = [$1, $2, $3].join("/") if value =~ /^(\d{4})(\d{2})(\d{2})\d+\[\d+\:GMT\]$/ # chase format
|
185
|
+
value = [$3, $2, $1].join("/") if value =~ /^(\d{2})\.(\d{2})\.(\d{4})$/ # german format
|
186
|
+
value = [$3, $2, $1].join("/") if value =~ /^(\d{2})\-(\d{2})\-(\d{4})$/ # nordea format
|
187
|
+
value = [$1, $2, $3].join("/") if value =~ /^(\d{4})(\d{2})(\d{2})/ # yyyymmdd format
|
188
|
+
else
|
189
|
+
begin
|
190
|
+
value = Date.strptime(value, options[:date_format])
|
191
|
+
rescue
|
192
|
+
puts "I'm having trouble parsing #{value} with the desired format: #{options[:date_format]}"
|
193
|
+
exit 1
|
190
194
|
end
|
191
|
-
|
195
|
+
end
|
196
|
+
begin
|
197
|
+
guess = Chronic.parse(value, :context => :past)
|
198
|
+
if guess.to_i < 953236800 && value =~ /\//
|
199
|
+
guess = Chronic.parse((value.split("/")[0...-1] + [(2000 + value.split("/").last.to_i).to_s]).join("/"), :context => :past)
|
200
|
+
end
|
201
|
+
guess
|
192
202
|
rescue
|
193
203
|
puts "I'm having trouble parsing #{value}, which I thought was a date. Please report this so that we"
|
194
204
|
puts "can make this parser better!"
|
@@ -409,10 +419,14 @@ module Reckon
|
|
409
419
|
options[:encoding] = e
|
410
420
|
end
|
411
421
|
|
412
|
-
opts.on("-c", "--currency", "Currency symbol to use, defaults to
|
422
|
+
opts.on("-c", "--currency '$'", "Currency symbol to use, defaults to $ (£, EUR)") do |e|
|
413
423
|
options[:currency] = e
|
414
424
|
end
|
415
425
|
|
426
|
+
opts.on("", "--date-format '%d/%m/%Y'", "Force the date format (see Ruby DateTime strftime)") do |d|
|
427
|
+
options[:date_format] = d
|
428
|
+
end
|
429
|
+
|
416
430
|
opts.on("", "--suffixed", "If --currency should be used as a suffix. Defaults to false.") do |e|
|
417
431
|
options[:suffixed] = e
|
418
432
|
end
|
data/reckon.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = %q{reckon}
|
6
|
-
s.version = "0.3.
|
6
|
+
s.version = "0.3.8"
|
7
7
|
s.authors = ["Andrew Cantino"]
|
8
8
|
s.email = %q{andrew@iterationlabs.com}
|
9
9
|
s.homepage = %q{https://github.com/cantino/reckon}
|
data/spec/reckon/app_spec.rb
CHANGED
@@ -16,6 +16,8 @@ describe Reckon::App do
|
|
16
16
|
@german_date = Reckon::App.new(:string => GERMAN_DATE_EXAMPLE)
|
17
17
|
@danish_kroner_nordea = Reckon::App.new(:string => DANISH_KRONER_NORDEA_EXAMPLE, :csv_separator => ';', :comma_separates_cents => true)
|
18
18
|
@yyyymmdd_date = Reckon::App.new(:string => YYYYMMDD_DATE_EXAMPLE)
|
19
|
+
@spanish_date = Reckon::App.new(:string => SPANISH_DATE_EXAMPLE, :date_format => '%d/%m/%Y')
|
20
|
+
@english_date = Reckon::App.new(:string => ENGLISH_DATE_EXAMPLE)
|
19
21
|
end
|
20
22
|
|
21
23
|
it "should be in testing mode" do
|
@@ -141,6 +143,12 @@ describe Reckon::App do
|
|
141
143
|
@yyyymmdd_date.date_for(0).year.should == Time.parse("2012/12/31").year
|
142
144
|
@yyyymmdd_date.date_for(0).month.should == Time.parse("2012/12/31").month
|
143
145
|
@yyyymmdd_date.date_for(0).day.should == Time.parse("2012/12/31").day
|
146
|
+
@spanish_date.date_for(1).year.should == Time.parse("2009/12/02").year
|
147
|
+
@spanish_date.date_for(1).month.should == Time.parse("2009/12/02").month
|
148
|
+
@spanish_date.date_for(1).day.should == Time.parse("2009/12/02").day
|
149
|
+
@english_date.date_for(1).year.should == Time.parse("2009/12/24").year
|
150
|
+
@english_date.date_for(1).month.should == Time.parse("2009/12/24").month
|
151
|
+
@english_date.date_for(1).day.should == Time.parse("2009/12/24").day
|
144
152
|
end
|
145
153
|
end
|
146
154
|
|
@@ -271,4 +279,16 @@ describe Reckon::App do
|
|
271
279
|
DEBIT,20121231,"ODESK***BAL-27DEC12 650-12345 CA 12/28",-123.45
|
272
280
|
CSV
|
273
281
|
|
282
|
+
SPANISH_DATE_EXAMPLE = (<<-CSV).strip
|
283
|
+
02/12/2009,Check - 0000000122,122,-$76.00,"","$1,750.06"
|
284
|
+
02/12/2009,BLARG R SH 456930,"","",+$327.49,"$1,826.06"
|
285
|
+
02/12/2009,Check - 0000000112,112,-$800.00,"","$1,498.57"
|
286
|
+
CSV
|
287
|
+
|
288
|
+
ENGLISH_DATE_EXAMPLE = (<<-CSV).strip
|
289
|
+
24/12/2009,Check - 0000000122,122,-$76.00,"","$1,750.06"
|
290
|
+
24/12/2009,BLARG R SH 456930,"","",+$327.49,"$1,826.06"
|
291
|
+
24/12/2009,Check - 0000000112,112,-$800.00,"","$1,498.57"
|
292
|
+
CSV
|
293
|
+
|
274
294
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reckon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -136,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
136
136
|
version: '0'
|
137
137
|
segments:
|
138
138
|
- 0
|
139
|
-
hash:
|
139
|
+
hash: -1602098812968474489
|
140
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
141
|
none: false
|
142
142
|
requirements:
|
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: '0'
|
146
146
|
segments:
|
147
147
|
- 0
|
148
|
-
hash:
|
148
|
+
hash: -1602098812968474489
|
149
149
|
requirements: []
|
150
150
|
rubyforge_project:
|
151
151
|
rubygems_version: 1.8.25
|