total_recall 0.5.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f485de3326ba5aa633added9df0493ab450c74d
4
- data.tar.gz: 592cba4e119cf53c307c9734b6d518bb96b90ac5
3
+ metadata.gz: 4eeb842cfe9ee4786bc22a2727a1020e8cdb3fff
4
+ data.tar.gz: 46034a06760f81a905ffd0b384ebf2f4ac9f5751
5
5
  SHA512:
6
- metadata.gz: f4e8ef75a9d06eef5b482edd546535d85472ae299bb004216d44b75a4d072e0eabfc9e430203f273bc86ffefdf5eb2f28cd06433da2ae2f30887d63c9439bd63
7
- data.tar.gz: 38ee00655b8c99b10855fb7bfca8d4c8625886e5e0cb218f47241797b9aa19560da19e45b48936ca09ca6aff607a9150e0eda1b3a701fdfd91de8b9735d76f83
6
+ metadata.gz: f97bacdd8edd27e009edc074681213d1c00eedbb2981a7c4da89e605966376b5c9c8a9d1024017d0cec90a2ad04858c3c0fa30c0aacc240a8427a2a944d2087a
7
+ data.tar.gz: d746904a4b9f9f5a16eda0a7917d876e11749c2f0aa5dddbccd30fc4e36bfec242c0e4f7e2e54b775b0021d6dbfedea311c340a94fa6a76391bcd998cc72ddf1
@@ -0,0 +1,18 @@
1
+ .spec: &spec
2
+ tags:
3
+ - docker
4
+ script:
5
+ - bundle install --binstubs --path vendor --without production --jobs $(nproc) > /dev/null
6
+ - bin/rspec
7
+
8
+ spec2.1:
9
+ image: ruby:2.1
10
+ <<: *spec
11
+
12
+ spec2.3:
13
+ image: ruby:2.3
14
+ <<: *spec
15
+
16
+ spec2.4:
17
+ image: ruby:2.4
18
+ <<: *spec
@@ -1,46 +1,60 @@
1
- # 0.5.0 / unreleased
1
+ # 0.6.0 / 2017-03-08
2
+
3
+ * move repository to GitLab
4
+
5
+ * upgrade dependencies
6
+
7
+ * added option to use only transaction-section from template
8
+
9
+ This makes adding transactions to an existing ledger-file easier.
10
+
11
+ ```bash
12
+ $ total_recall ledger -c bank.yml --transactions-only >> bank.dat
13
+ ```
14
+
15
+ # 0.5.0 / 2014-06-11
2
16
 
3
17
  * extend the ledger subcommand by passing it a file with customizations
4
18
 
5
- ```
6
- $ cat my_extension.rb
7
- module MyExtension
8
- def ask_account(*args)
9
- # some custom stuff
10
- super
19
+ ```ruby
20
+ $ cat my_extension.rb
21
+ module MyExtension
22
+ def ask_account(*args)
23
+ # some custom stuff
24
+ super
25
+ end
11
26
  end
12
- end
13
- TotalRecall::SessionHelper.include MyExtension
27
+ TotalRecall::SessionHelper.include MyExtension
14
28
 
15
- $ total_recall ledger -c sample.yml -r ./my_extension.rb
16
- ```
29
+ $ total_recall ledger -c sample.yml -r ./my_extension.rb
30
+ ```
17
31
 
18
32
  * add version subcommand
19
33
 
20
34
  * add default-helper
21
35
 
22
- Let's you point to the default-value of an attribute:
36
+ Let's you point to the default-value of an attribute:
23
37
 
24
- ```yaml
25
- :context:
26
- :transactions:
27
- :__defaults__:
28
- :a: 1
29
- :a: !!proc |
30
- ask("What value has a?", default: default)
31
- ```
38
+ ```yaml
39
+ :context:
40
+ :transactions:
41
+ :__defaults__:
42
+ :a: 1
43
+ :a: !!proc |
44
+ ask("What value has a?", default: default)
45
+ ```
32
46
 
33
47
  * add transaction-helper
34
48
 
35
- This allows you to use already set attributes of the transaction:
49
+ This allows you to use already set attributes of the transaction:
36
50
 
37
- ```yaml
38
- :context:
39
- :transactions:
40
- :a: 1
41
- :b: !!proc |
42
- transaction.a.succ
43
- ```
51
+ ```yaml
52
+ :context:
53
+ :transactions:
54
+ :a: 1
55
+ :b: !!proc |
56
+ transaction.a.succ
57
+ ```
44
58
 
45
59
  # 0.4.0 / 2014-06-04
46
60
 
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- # TotalRecall [![travis](https://secure.travis-ci.org/eval/total_recall.png?branch=master)](https://secure.travis-ci.org/#!/eval/total_recall)
1
+ # TotalRecall [![build status](https://gitlab.com/eval/total_recall/badges/master/build.svg)](https://gitlab.com/eval/total_recall/commits/master)
2
+
2
3
 
3
4
  Turn **any** csv-file into a [Ledger](http://ledger-cli.org/) journal.
4
5
 
@@ -14,7 +15,7 @@ gem install total_recall
14
15
 
15
16
  ```bash
16
17
  total_recall sample
17
- # An annotated config 'sample.yml' will be written the current directory.
18
+ # An annotated config 'sample.yml' will be written to the current directory.
18
19
  ```
19
20
 
20
21
  ### Generate a ledger
@@ -95,7 +96,7 @@ total_recall ledger -c my-bank.yml -r ./my_extension.rb
95
96
 
96
97
  This makes it possible to add helpers or redefine existing ones:
97
98
 
98
- ```
99
+ ```ruby
99
100
  cat my_extension.rb
100
101
  module MyExtension
101
102
  # adding some options to an existing helper:
@@ -130,7 +131,7 @@ Gert Goet (eval) :: gert@thinkcreate.nl :: @gertgoet
130
131
 
131
132
  (The MIT license)
132
133
 
133
- Copyright (c) 2014 Gert Goet, ThinkCreate
134
+ Copyright (c) 2017 Gert Goet, ThinkCreate
134
135
 
135
136
  Permission is hereby granted, free of charge, to any person obtaining
136
137
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,15 +1,6 @@
1
- #!/usr/bin/env rake
2
1
  require "bundler/gem_tasks"
3
2
  require "rspec/core/rake_task"
4
3
 
5
- RSpec::Core::RakeTask.new do |t|
6
- t.rspec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""]
7
- end
4
+ RSpec::Core::RakeTask.new(:spec)
8
5
 
9
- desc "Run the specs"
10
6
  task :default => :spec
11
-
12
- desc 'Removes trailing whitespace'
13
- task :whitespace do
14
- sh %{find . -name '*.rb' -exec sed -i '' 's/ *$//g' {} \\;}
15
- end
@@ -1,6 +1,6 @@
1
1
  require 'yaml'
2
- require "thor"
3
- require "mustache"
2
+ require 'thor'
3
+ require 'mustache'
4
4
  require 'csv'
5
5
 
6
6
  module TotalRecall
@@ -107,6 +107,7 @@ module TotalRecall
107
107
  def initialize(options = {})
108
108
  options = { file: 'total_recall.yml' }.merge(options)
109
109
  @config_file = File.expand_path(options[:file])
110
+ @transactions_only = !!options[:transactions_only]
110
111
  end
111
112
 
112
113
  def config
@@ -136,6 +137,26 @@ module TotalRecall
136
137
  end
137
138
  end
138
139
 
140
+ def transactions_only_template
141
+ @transactions_only_template ||= begin
142
+ Mustache::Template.new("").tap do |t|
143
+ _transactions_tokens = proc { transactions_tokens }
144
+ t.define_singleton_method(:tokens) do |*|
145
+ _transactions_tokens.call
146
+ end
147
+ end
148
+ end
149
+ end
150
+
151
+ def transactions_tokens
152
+ @transactions_tokens ||= begin
153
+ Mustache::Template.new(template).tokens.detect do |type, tag, *rest|
154
+ type == :mustache && tag == :section &&
155
+ [:mustache, :fetch, ["transactions"]]
156
+ end
157
+ end
158
+ end
159
+
139
160
  def context
140
161
  @context ||= config[:context].merge(transactions: transactions)
141
162
  end
@@ -183,7 +204,11 @@ module TotalRecall
183
204
  end
184
205
 
185
206
  def ledger
186
- Mustache.render(template, context)
207
+ tmp = @transactions_only ?
208
+ transactions_only_template :
209
+ template
210
+
211
+ Mustache.render(tmp, context)
187
212
  end
188
213
  end
189
214
 
@@ -196,11 +221,13 @@ module TotalRecall
196
221
  desc "ledger", "Convert CONFIG to a ledger"
197
222
  method_option :config, :aliases => "-c", :desc => "Config file", :required => true
198
223
  method_option :require, :aliases => "-r", :desc => "File to load"
224
+ method_option :transactions_only, :type => :boolean
199
225
  def ledger
200
226
  load(options[:require]) if options[:require]
201
227
 
202
228
  config_path = File.expand_path(options[:config])
203
- puts TotalRecall::Config.new(file: config_path).ledger
229
+ puts TotalRecall::Config.new(file: config_path,
230
+ :transactions_only => options[:transactions_only]).ledger
204
231
  end
205
232
 
206
233
  desc "sample", "Generate an annotated config"
@@ -37,8 +37,8 @@
37
37
  #:file: sample.csv
38
38
  :raw: |-
39
39
  "date";"description";"effective_data";"amount"
40
- "03.11.2013";"Foo";"04.11.2013";"1.638,00"
41
- "03.11.2013";"Bar";"04.11.2013";"-492,93"
40
+ "2013-11-01";"Foo";"2013-11-02";"1.638,00"
41
+ "2013-11-02";"Bar";"2013-11-03";"-492,93"
42
42
  :options:
43
43
  # Any option accepted by CSV#new (http://www.ruby-doc.org/stdlib-2.1.1/libdoc/csv/rdoc/CSV.html#method-c-new).
44
44
  :col_sep: ";"
@@ -7,7 +7,7 @@
7
7
 
8
8
  {{# transactions}}
9
9
  {{date}} {{{description}}}
10
- {{to}} {{currency}} {{amount}}
10
+ {{to}} EUR {{amount}}
11
11
  {{from}}
12
12
 
13
13
  {{/ transactions}}
@@ -15,21 +15,20 @@
15
15
  :csv:
16
16
  #:file: <%= @name %>.csv
17
17
  :raw: |-
18
- "03.11.2013";"Foo";"04.11.2013";"1.638,00";""
19
- "03.11.2013";"Bar";"04.11.2013";"-492,93";""
18
+ "2013-11-01","Foo","2013-11-02","1.638,00"
19
+ "2013-11-02","Bar","2013-11-03","-492,93"
20
20
  :options:
21
- :col_sep: ";"
22
- :headers: false
21
+ #:col_sep: ";"
22
+ #:headers: false
23
23
 
24
24
  :context:
25
25
  :transactions:
26
26
  :__defaults__:
27
27
  :from: !!proc |
28
28
  ask_account("What account provides these transactions?", default: 'Assets:Checking')
29
- :currency: $
30
- :date: !!proc Date.parse(row[0])
29
+ :date: !!proc row[0]
31
30
  :description: !!proc row[1]
32
31
  :amount: !!proc row[3]
33
32
  :to: !!proc |
34
- render_row(columns: [0, 1, 3, 4])
33
+ render_row(columns: [0, 1, 3])
35
34
  ask_account("To what account did the money go?")
@@ -1,3 +1,3 @@
1
1
  module TotalRecall
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -1,4 +1,8 @@
1
- require "bundler/setup"
2
- Bundler.require :default, :test
3
-
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'total_recall'
4
3
  require 'fakefs/spec_helpers'
4
+
5
+ RSpec.configure do |config|
6
+ config.color = true
7
+ config.tty = true
8
+ end
@@ -106,6 +106,28 @@ describe TotalRecall::Config do
106
106
 
107
107
  expect(instance.template).to eql('File template')
108
108
  end
109
+
110
+ context 'transactions only' do
111
+ it 'takes only the transactions-section of the template into account' do
112
+ instance = instance_with_config(<<-CONFIG, :transactions_only => true)
113
+ :csv:
114
+ :raw: |-
115
+ row1
116
+ :context:
117
+ :a: 1
118
+ :transactions:
119
+ :b: !!proc row[0]
120
+ :template:
121
+ :raw: |-
122
+ {{a}}
123
+ {{# transactions}}
124
+ {{b}}
125
+ {{/ transactions}}
126
+ CONFIG
127
+
128
+ expect(instance.ledger).to eql("row1\n")
129
+ end
130
+ end
109
131
  end
110
132
 
111
133
  describe 'YAML types' do
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["gert@thinkcreate.nl"]
11
11
  gem.description = %q{Turn any csv into a Ledger journal}
12
12
  gem.summary = %q{Turn any csv into a Ledger journal}
13
- gem.homepage = "https://github.com/eval/total_recall"
13
+ gem.homepage = "https://gitlab.com/eval/total_recall/tree/master#totalrecall-"
14
14
  gem.license = "MIT"
15
15
 
16
16
  gem.files = `git ls-files -z`.split("\x0")
@@ -19,11 +19,11 @@ Gem::Specification.new do |gem|
19
19
  gem.require_paths = ["lib"]
20
20
 
21
21
  gem.add_dependency 'thor', '~> 0.19'
22
- gem.add_dependency 'terminal-table', '~> 1.4'
23
- gem.add_dependency 'highline', '~> 1.6'
24
- gem.add_dependency 'mustache', '~> 0.99'
25
- gem.add_development_dependency "bundler", "~> 1.6"
26
- gem.add_development_dependency "rake"
27
- gem.add_development_dependency 'rspec', '~> 3.0.0'
28
- gem.add_development_dependency 'fakefs'
22
+ gem.add_dependency 'terminal-table', '~> 1.7'
23
+ gem.add_dependency 'highline', '~> 1.7'
24
+ gem.add_dependency 'mustache', '~> 1.0'
25
+ gem.add_development_dependency 'bundler', '~> 1.11'
26
+ gem.add_development_dependency 'rake', '~> 12.0'
27
+ gem.add_development_dependency 'rspec', '~> 3.4'
28
+ gem.add_development_dependency 'fakefs', '~> 0.10'
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: total_recall
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gert Goet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-10 00:00:00.000000000 Z
11
+ date: 2017-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -30,98 +30,98 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.4'
33
+ version: '1.7'
34
34
  type: :runtime
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: '1.4'
40
+ version: '1.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: highline
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.6'
47
+ version: '1.7'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.6'
54
+ version: '1.7'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mustache
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.99'
61
+ version: '1.0'
62
62
  type: :runtime
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: '0.99'
68
+ version: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.6'
75
+ version: '1.11'
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: '1.6'
82
+ version: '1.11'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '12.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '12.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 3.0.0
103
+ version: '3.4'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 3.0.0
110
+ version: '3.4'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: fakefs
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: '0.10'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: '0.10'
125
125
  description: Turn any csv into a Ledger journal
126
126
  email:
127
127
  - gert@thinkcreate.nl
@@ -132,7 +132,7 @@ extensions: []
132
132
  extra_rdoc_files: []
133
133
  files:
134
134
  - ".gitignore"
135
- - ".travis.yml"
135
+ - ".gitlab-ci.yml"
136
136
  - CHANGELOG.md
137
137
  - Gemfile
138
138
  - README.md
@@ -143,11 +143,10 @@ files:
143
143
  - lib/total_recall/templates/sample.yml.tt
144
144
  - lib/total_recall/templates/simple.yml.tt
145
145
  - lib/total_recall/version.rb
146
- - spec/spec.opts
147
146
  - spec/spec_helper.rb
148
147
  - spec/total_recall/total_recall_spec.rb
149
148
  - total_recall.gemspec
150
- homepage: https://github.com/eval/total_recall
149
+ homepage: https://gitlab.com/eval/total_recall/tree/master#totalrecall-
151
150
  licenses:
152
151
  - MIT
153
152
  metadata: {}
@@ -167,11 +166,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
166
  version: '0'
168
167
  requirements: []
169
168
  rubyforge_project:
170
- rubygems_version: 2.2.2
169
+ rubygems_version: 2.5.2
171
170
  signing_key:
172
171
  specification_version: 4
173
172
  summary: Turn any csv into a Ledger journal
174
173
  test_files:
175
- - spec/spec.opts
176
174
  - spec/spec_helper.rb
177
175
  - spec/total_recall/total_recall_spec.rb
@@ -1,3 +0,0 @@
1
- rvm:
2
- - 1.9.3
3
- - 2.1
@@ -1 +0,0 @@
1
- --color