journala 0.1.3 → 0.1.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.
- data/journala.gemspec +4 -2
- data/lib/journala/parsers.rb +1 -0
- data/lib/journala/parsers/chase.rb +59 -0
- metadata +9 -7
data/journala.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "journala"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Robert Kaufman"]
|
@@ -26,7 +26,9 @@ Gem::Specification.new do |s|
|
|
26
26
|
"lib/journala/entry.rb",
|
27
27
|
"lib/journala/journal.rb",
|
28
28
|
"lib/journala/row.rb",
|
29
|
-
"lib/journala/value.rb"
|
29
|
+
"lib/journala/value.rb",
|
30
|
+
"lib/journala/parsers/chase.rb",
|
31
|
+
"lib/journala/parsers.rb"
|
30
32
|
]
|
31
33
|
s.homepage = "http://github.com/kirkland/journala"
|
32
34
|
s.licenses = ["MIT"]
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'journala/parsers/chase'
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'hpricot'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Journala
|
5
|
+
module Parsers
|
6
|
+
class Chase
|
7
|
+
|
8
|
+
# for debugging. in normal usage you only need @journal, which is returned anyway
|
9
|
+
attr_accessor :doc, :json, :data, :journal
|
10
|
+
|
11
|
+
def self.parse(input_filename="Account Activity.html")
|
12
|
+
@doc = open(input_filename) {|f| Hpricot(f) }
|
13
|
+
|
14
|
+
# data is contained inside a script tag
|
15
|
+
script = @doc.search("#chaseui-pagecontent").search("script")[0].inner_html
|
16
|
+
|
17
|
+
@data = script.match(/activity = ({.*})/)[1]
|
18
|
+
@json = JSON.parse(@data)
|
19
|
+
|
20
|
+
@journal = Journal.new
|
21
|
+
|
22
|
+
@json['Posted'].each do |raw_entry|
|
23
|
+
entry = Entry.new
|
24
|
+
|
25
|
+
m,d,y = raw_entry['tranDate'].split('/')
|
26
|
+
entry.date = %{#{y}/#{m.rjust(2, '0')}/#{d.rjust(2, '0')}}
|
27
|
+
|
28
|
+
m,d,y = raw_entry['postDate'].split('/')
|
29
|
+
posted_date = %{#{y}/#{m.rjust(2, '0')}/#{d.rjust(2, '0')}}
|
30
|
+
amount = raw_entry['amount'].gsub(/\$/, '')
|
31
|
+
merchant = raw_entry['merchantName']
|
32
|
+
trans_type = raw_entry['tranType']
|
33
|
+
trans_id = raw_entry['tranId']
|
34
|
+
|
35
|
+
entry.description = "#{merchant} (posted #{posted_date}) (transaction id: #{trans_id})"
|
36
|
+
|
37
|
+
r1 = Row.new
|
38
|
+
r1.account = 'Liabilities:Amazon/Chase CC'
|
39
|
+
r1.amount = 0 - amount.to_f
|
40
|
+
entry.rows << r1
|
41
|
+
|
42
|
+
r2 = Row.new
|
43
|
+
r2.account = trans_type == 'Payment' ? 'Assets:Current Assets:Central Bank' : 'Expenses:Uncategorized'
|
44
|
+
r2.amount = 0 - r1.amount
|
45
|
+
entry.rows << r2
|
46
|
+
|
47
|
+
|
48
|
+
if !['Sale', 'Return', 'Payment'].include?(trans_type)
|
49
|
+
raise "oh no found type: #{entry.type} ! what do i do?!"
|
50
|
+
end
|
51
|
+
|
52
|
+
@journal.entries << entry
|
53
|
+
end
|
54
|
+
|
55
|
+
@journal
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: journala
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-11-25 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70128459515540 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70128459515540
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jeweler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70128459514600 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70128459514600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rcov
|
38
|
-
requirement: &
|
38
|
+
requirement: &70128459513740 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70128459513740
|
47
47
|
description: a library that reads and write ledger format ledger files
|
48
48
|
email: rob.m.kaufman@gmail.com
|
49
49
|
executables: []
|
@@ -62,6 +62,8 @@ files:
|
|
62
62
|
- lib/journala/journal.rb
|
63
63
|
- lib/journala/row.rb
|
64
64
|
- lib/journala/value.rb
|
65
|
+
- lib/journala/parsers/chase.rb
|
66
|
+
- lib/journala/parsers.rb
|
65
67
|
homepage: http://github.com/kirkland/journala
|
66
68
|
licenses:
|
67
69
|
- MIT
|