ledger_gen 0.2.0 → 1.0.0
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/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