ledger_gen 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -1
- data/ledger_gen.gemspec +4 -1
- data/lib/ledger_gen/journal.rb +20 -6
- data/lib/ledger_gen/posting.rb +14 -0
- data/lib/ledger_gen/transaction.rb +36 -12
- data/lib/ledger_gen/version.rb +2 -1
- data/lib/ledger_gen.rb +2 -0
- data/sorbet/config +2 -0
- data/sorbet/rbi/gems/rake.rbi +635 -0
- data/sorbet/rbi/gems/rspec-core.rbi +121 -0
- data/sorbet/rbi/gems/rspec-expectations.rbi +127 -0
- data/sorbet/rbi/gems/rspec-mocks.rbi +189 -0
- data/sorbet/rbi/gems/rspec-support.rbi +37 -0
- data/sorbet/rbi/gems/rspec.rbi +15 -0
- data/sorbet/rbi/hidden-definitions/errors.txt +4485 -0
- data/sorbet/rbi/hidden-definitions/hidden.rbi +8037 -0
- data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +8684 -0
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +4222 -0
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +111 -0
- data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +543 -0
- data/sorbet/rbi/todo.rbi +6 -0
- metadata +48 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef56a31e0eaff2fe2873264e052138e1a751a2fd
|
4
|
+
data.tar.gz: 595843b7a15ed91352a8f35e3069f8be0f6ec9b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0346e50cac7cff1626d50f6da33380d0409149f7162f1692c48a96537d90e4522bd6942a7c9834175cebdc9d81d196cd13b95fddf093f8be41289778d7a45d2
|
7
|
+
data.tar.gz: 8e2531fa740934717912ec1a9f10ec653f788f8e1d390015423acd132c7c3c31f97a4c08553a3efce28b566ffa550c47c0b396a8bd8504c4cac1484d3c0d5f63
|
data/README.md
CHANGED
data/ledger_gen.gemspec
CHANGED
@@ -20,7 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
+
spec.add_dependency "sorbet-runtime"
|
24
|
+
|
23
25
|
spec.add_development_dependency "bundler", "~> 1.13"
|
24
|
-
spec.add_development_dependency "rake", "
|
26
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
25
27
|
spec.add_development_dependency "rspec", "~> 3.0"
|
28
|
+
spec.add_development_dependency "sorbet"
|
26
29
|
end
|
data/lib/ledger_gen/journal.rb
CHANGED
@@ -1,33 +1,47 @@
|
|
1
|
+
# typed: strict
|
2
|
+
|
1
3
|
module LedgerGen
|
2
4
|
class Journal
|
5
|
+
extend T::Sig
|
6
|
+
|
7
|
+
sig {returns(String)}
|
3
8
|
attr_accessor :date_format
|
4
9
|
|
5
|
-
|
10
|
+
sig {params(blk: T.proc.params(arg0: Journal).void).returns(Journal)}
|
11
|
+
def self.build(&blk)
|
6
12
|
journal = new
|
7
13
|
|
8
|
-
|
14
|
+
blk.call(journal)
|
9
15
|
|
10
16
|
return journal
|
11
17
|
end
|
12
18
|
|
19
|
+
sig {void}
|
13
20
|
def initialize
|
14
|
-
@transactions = []
|
15
|
-
@date_format = '%Y/%m/%d'
|
21
|
+
@transactions = T.let([], T::Array[Transaction])
|
22
|
+
@date_format = T.let('%Y/%m/%d', String)
|
16
23
|
end
|
17
24
|
|
18
|
-
|
25
|
+
sig {params(blk: T.proc.params(arg0: Transaction).void).void}
|
26
|
+
def transaction(&blk)
|
19
27
|
txn = Transaction.new(date_format)
|
20
28
|
@transactions << txn
|
21
29
|
|
22
30
|
yield txn
|
23
31
|
end
|
24
32
|
|
33
|
+
sig {returns(String)}
|
25
34
|
def to_s
|
26
35
|
@transactions.map(&:to_s).join("\n\n") + "\n"
|
27
36
|
end
|
28
37
|
|
38
|
+
sig {params(ledger_options: String).returns(String)}
|
29
39
|
def pretty_print(ledger_options='')
|
30
|
-
|
40
|
+
if ledger_options == ''
|
41
|
+
ledger_options = %Q{-y "#{date_format}" --sort=date}
|
42
|
+
end
|
43
|
+
|
44
|
+
IO.popen("ledger #{ledger_options} -f - print", 'r+') do |io|
|
31
45
|
io.write to_s
|
32
46
|
io.close_write
|
33
47
|
io.read
|
data/lib/ledger_gen/posting.rb
CHANGED
@@ -1,17 +1,31 @@
|
|
1
|
+
# typed: strict
|
2
|
+
|
1
3
|
module LedgerGen
|
2
4
|
class Posting
|
5
|
+
extend T::Sig
|
6
|
+
|
7
|
+
sig {void}
|
8
|
+
def initialize
|
9
|
+
@account = T.let('', String)
|
10
|
+
@amount = T.let(0, Numeric)
|
11
|
+
end
|
12
|
+
|
13
|
+
sig { params(account: String).returns(String) }
|
3
14
|
def account(account)
|
4
15
|
@account = account
|
5
16
|
end
|
6
17
|
|
18
|
+
sig { params(amount: Numeric).returns(Numeric) }
|
7
19
|
def amount(amount)
|
8
20
|
@amount = amount
|
9
21
|
end
|
10
22
|
|
23
|
+
sig {returns(String)}
|
11
24
|
def to_s
|
12
25
|
"#{@account} #{amount_string}"
|
13
26
|
end
|
14
27
|
|
28
|
+
sig {returns(String)}
|
15
29
|
def amount_string
|
16
30
|
if @amount.nil?
|
17
31
|
''
|
@@ -1,41 +1,63 @@
|
|
1
|
+
# typed: strict
|
1
2
|
module LedgerGen
|
2
3
|
class Transaction
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
extend T::Sig
|
5
|
+
|
6
|
+
sig {params(date_format: String).void}
|
7
|
+
def initialize(date_format='%Y/%m/%d')
|
8
|
+
@date_format = T.let(date_format, String)
|
9
|
+
@postings = T.let([], T::Array[Posting])
|
10
|
+
@comments = T.let([], T::Array[String])
|
11
|
+
|
12
|
+
@date = T.let(nil, T.nilable(T.any(Date, DateTime)))
|
13
|
+
@payee = T.let(nil, T.nilable(String))
|
14
|
+
@cleared = T.let(false, T::Boolean)
|
7
15
|
end
|
8
16
|
|
17
|
+
sig {params(date: T.any(Date, DateTime)).returns(T.any(Date, DateTime))}
|
9
18
|
def date(date)
|
10
19
|
@date = date
|
11
20
|
end
|
12
21
|
|
22
|
+
sig {params(payee: String).returns(String)}
|
13
23
|
def payee(payee)
|
14
24
|
@payee = payee
|
15
25
|
end
|
16
26
|
|
27
|
+
sig {void}
|
17
28
|
def cleared!
|
18
29
|
@cleared = true
|
19
30
|
end
|
20
31
|
|
21
|
-
|
32
|
+
sig do
|
33
|
+
params(
|
34
|
+
account: T.nilable(String),
|
35
|
+
amount: T.nilable(Float),
|
36
|
+
blk: T.nilable(T.proc.params(arg0: Posting).void)
|
37
|
+
).void
|
38
|
+
end
|
39
|
+
def posting(account=nil, amount=nil, &blk)
|
22
40
|
post = Posting.new
|
23
41
|
@postings << post
|
24
42
|
|
25
|
-
if
|
26
|
-
post.account
|
27
|
-
if
|
28
|
-
post.amount
|
43
|
+
if account
|
44
|
+
post.account account
|
45
|
+
if amount
|
46
|
+
post.amount amount
|
29
47
|
end
|
30
|
-
|
31
|
-
|
48
|
+
end
|
49
|
+
|
50
|
+
if block_given?
|
51
|
+
blk.call(post)
|
32
52
|
end
|
33
53
|
end
|
34
54
|
|
55
|
+
sig {params(comment: String).void}
|
35
56
|
def comment(comment)
|
36
57
|
@comments << comment
|
37
58
|
end
|
38
59
|
|
60
|
+
sig {returns(String)}
|
39
61
|
def to_s
|
40
62
|
lines = ["#{date_string}#{cleared_string} #{@payee}"]
|
41
63
|
|
@@ -52,10 +74,12 @@ module LedgerGen
|
|
52
74
|
|
53
75
|
private
|
54
76
|
|
77
|
+
sig {returns(String)}
|
55
78
|
def date_string
|
56
|
-
@date.strftime(@date_format)
|
79
|
+
T.must(@date).strftime(@date_format)
|
57
80
|
end
|
58
81
|
|
82
|
+
sig {returns(String)}
|
59
83
|
def cleared_string
|
60
84
|
@cleared ? ' *' : ''
|
61
85
|
end
|
data/lib/ledger_gen/version.rb
CHANGED
data/lib/ledger_gen.rb
CHANGED
data/sorbet/config
ADDED