libledger 0.0.1 → 0.0.2
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/.circle-ruby +4 -0
- data/README.md +32 -2
- data/circle.yml +3 -8
- data/lib/libledger/entry.rb +12 -11
- data/libledger.gemspec +5 -5
- metadata +12 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88e563136240529f727ae98f888e3b81caa4720b
|
4
|
+
data.tar.gz: 3a4eae174f0515427d6fdc3197357b964198e3c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8f994d6113d6c16d605cfa1047d646cd839bdcaafcb1bb9f4d3fbff5d315d1a738fbcbb98e665a2ae9b0984bf44a2c281df24c049df51417e5af134bb498690
|
7
|
+
data.tar.gz: 6d95d946a03703961735f0363ca6d41b689bf8c8c9a23cfd59b217b46e2c4dc196d2a29317608d3edb606a1f0a1b941a2fca338e84e0a440c4aa84292bb79e7a
|
data/.circle-ruby
ADDED
data/README.md
CHANGED
@@ -3,15 +3,45 @@ libledger
|
|
3
3
|
|
4
4
|
[](https://rubygems.org/gems/libledger)
|
5
5
|
[](https://gemnasium.com/akerl/libledger)
|
6
|
-
[](https://circleci.com/gh/akerl/libledger)
|
6
|
+
[](https://circleci.com/gh/akerl/libledger)
|
7
7
|
[](https://codecov.io/github/akerl/libledger)
|
8
|
-
[](https://www.codacy.com/app/akerl/libledger)
|
9
9
|
[](https://tldrlegal.com/license/mit-license)
|
10
10
|
|
11
11
|
Library for interacting with [Ledger](http://www.ledger-cli.org/) files.
|
12
12
|
|
13
13
|
## Usage
|
14
14
|
|
15
|
+
libledger provides Ledger::Entry, which is a transaction, and Ledger::Journal, a list of transactions.
|
16
|
+
|
17
|
+
To create a new entry:
|
18
|
+
|
19
|
+
```
|
20
|
+
require 'libledger'
|
21
|
+
require 'date'
|
22
|
+
|
23
|
+
entry = Ledger::Entry.new(
|
24
|
+
name: 'Delicious Chipotle Burrito',
|
25
|
+
state: :cleared,
|
26
|
+
date: Date.today,
|
27
|
+
actions: [
|
28
|
+
{ name: 'Expenses:Burritos', amount: '$6.89' },
|
29
|
+
{ name: 'Assets:visa' }
|
30
|
+
]
|
31
|
+
)
|
32
|
+
|
33
|
+
# This will print the entry in ledger format
|
34
|
+
puts entry
|
35
|
+
```
|
36
|
+
|
37
|
+
To read an entry, call `Ledger::Entry.from_lines(lines)`. `lines` should be an array of strings, which are the lines of a ledger journal for that transaction.
|
38
|
+
|
39
|
+
To read a full journal, use `Ledger::Journal.from_file(file)`, where file should be a path to the journal file. If you have multiple files, `Ledger::Journal.from_files(files)` accepts an array of paths.
|
40
|
+
|
41
|
+
To create a journal, use `Ledger::Journal.new(entries: array_of_entries)`.
|
42
|
+
|
43
|
+
The output of `.to_s` on a Journal (which is called if you do `puts my_journal` is the ledger text file format for its transactions.
|
44
|
+
|
15
45
|
## Installation
|
16
46
|
|
17
47
|
gem install libledger
|
data/circle.yml
CHANGED
@@ -1,12 +1,7 @@
|
|
1
1
|
dependencies:
|
2
2
|
override:
|
3
|
-
|
4
|
-
|
5
|
-
- 'rvm-exec 2.1.6 bundle install'
|
6
|
-
- 'rvm-exec 2.2.2 bundle install'
|
3
|
+
- 'for i in $(cat .circle-ruby) ; do rvm-exec $i gem update --system --no-doc || exit 1 ; done'
|
4
|
+
- 'for i in $(cat .circle-ruby) ; do rvm-exec $i bundle install || exit 1 ; done'
|
7
5
|
test:
|
8
6
|
override:
|
9
|
-
|
10
|
-
- 'rvm-exec 2.0.0-p645 bundle exec rake'
|
11
|
-
- 'rvm-exec 2.1.6 bundle exec rake'
|
12
|
-
- 'rvm-exec 2.2.2 bundle exec rake'
|
7
|
+
- 'for i in $(cat .circle-ruby) ; do rvm-exec $i bundle exec rake || exit 1 ; done'
|
data/lib/libledger/entry.rb
CHANGED
@@ -4,6 +4,11 @@ module Ledger
|
|
4
4
|
ENTRY_SUBJECT_LINE_REGEX = %r{^(\d+/\d+/\d+) (?:([*!]) )?(.*)$}
|
5
5
|
ENTRY_ACTION_LINE_REGEX = /^\s+(\w+[^( )\t]*)(?:\s+(.*))?$/
|
6
6
|
|
7
|
+
STATE_MAPPING = {
|
8
|
+
cleared: '*',
|
9
|
+
pending: '!'
|
10
|
+
}.freeze
|
11
|
+
|
7
12
|
##
|
8
13
|
# Declaration for entry object
|
9
14
|
class Entry
|
@@ -19,16 +24,12 @@ module Ledger
|
|
19
24
|
@state ||= @data[:state]
|
20
25
|
end
|
21
26
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
:pending
|
29
|
-
else
|
30
|
-
raise "Unexpected state on #{name}: #{state}"
|
31
|
-
end
|
27
|
+
def state_sym
|
28
|
+
@state_sym ||= state.is_a?(Symbol) ? state : STATE_MAPPING.invert[state]
|
29
|
+
end
|
30
|
+
|
31
|
+
def state_str
|
32
|
+
@state_str ||= state.is_a?(Symbol) ? STATE_MAPPING[state] : state
|
32
33
|
end
|
33
34
|
|
34
35
|
def date
|
@@ -48,7 +49,7 @@ module Ledger
|
|
48
49
|
private
|
49
50
|
|
50
51
|
def subject_line
|
51
|
-
"#{date.strftime('%Y/%m/%d')} #{
|
52
|
+
"#{date.strftime('%Y/%m/%d')} #{state_str} #{name}\n"
|
52
53
|
end
|
53
54
|
|
54
55
|
def action_lines
|
data/libledger.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'libledger'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.2'
|
4
4
|
s.date = Time.now.strftime('%Y-%m-%d')
|
5
5
|
|
6
6
|
s.summary = 'Library for interacting with Ledger files'
|
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.files = `git ls-files`.split
|
14
14
|
s.test_files = `git ls-files spec/*`.split
|
15
15
|
|
16
|
-
s.add_development_dependency 'rubocop', '~> 0.
|
17
|
-
s.add_development_dependency 'rake', '~>
|
16
|
+
s.add_development_dependency 'rubocop', '~> 0.47.0'
|
17
|
+
s.add_development_dependency 'rake', '~> 12.0.0'
|
18
18
|
s.add_development_dependency 'codecov', '~> 0.1.1'
|
19
|
-
s.add_development_dependency 'rspec', '~> 3.
|
20
|
-
s.add_development_dependency 'fuubar', '~> 2.
|
19
|
+
s.add_development_dependency 'rspec', '~> 3.5.0'
|
20
|
+
s.add_development_dependency 'fuubar', '~> 2.2.0'
|
21
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libledger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Les Aker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.47.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.47.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 12.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 12.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: codecov
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,34 +58,35 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: 3.5.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: 3.5.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: fuubar
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.
|
75
|
+
version: 2.2.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.
|
82
|
+
version: 2.2.0
|
83
83
|
description: Library for interacting with Ledger files
|
84
84
|
email: me@lesaker.org
|
85
85
|
executables: []
|
86
86
|
extensions: []
|
87
87
|
extra_rdoc_files: []
|
88
88
|
files:
|
89
|
+
- ".circle-ruby"
|
89
90
|
- ".gitignore"
|
90
91
|
- ".prospectus"
|
91
92
|
- ".rspec"
|
@@ -121,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
122
|
version: '0'
|
122
123
|
requirements: []
|
123
124
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
125
|
+
rubygems_version: 2.6.8
|
125
126
|
signing_key:
|
126
127
|
specification_version: 4
|
127
128
|
summary: Library for interacting with Ledger files
|