reckon 0.9.1 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +6 -8
- data/CHANGELOG.md +25 -0
- data/Gemfile.lock +1 -1
- data/bin/build-new-version.sh +9 -4
- data/lib/reckon/beancount_parser.rb +1 -1
- data/lib/reckon/date_column.rb +34 -19
- data/lib/reckon/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc9cf03c584638f19ffd111497105288a9002a71ec4dd649655a7fa1b8c6566c
|
4
|
+
data.tar.gz: 75453fe81b3f131a72dae8ab1f592cf0bcfb61fb380c5486cb984ffb504fa64b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cc31d230176f3d70609d7560ce5b948295d3eef33402ea12aa91749ecb48cf4c36e9885af4ea07e451c8641ae1acacd5421b093621cbde65f88da116992be30
|
7
|
+
data.tar.gz: d4e743fa0f3104bc4fe14774ea5e7ce8b7862c0865b725f6e7fac5f0a68607c7baa45c95a99d755c46a03dd90389d69e6addfd06c990103e4bc12c9959e6bf65
|
data/.github/workflows/ruby.yml
CHANGED
@@ -9,13 +9,10 @@ name: Build Status
|
|
9
9
|
|
10
10
|
on:
|
11
11
|
push:
|
12
|
-
branches: [ master ]
|
13
12
|
pull_request:
|
14
|
-
branches: [ master ]
|
15
13
|
|
16
14
|
jobs:
|
17
15
|
test:
|
18
|
-
|
19
16
|
runs-on: ubuntu-latest
|
20
17
|
strategy:
|
21
18
|
matrix:
|
@@ -26,17 +23,18 @@ jobs:
|
|
26
23
|
- 3.0
|
27
24
|
# Ubuntu 20.04
|
28
25
|
- 2.7
|
26
|
+
# For date_column errors
|
27
|
+
- 2.6
|
29
28
|
steps:
|
30
|
-
- uses: actions/checkout@
|
29
|
+
- uses: actions/checkout@v3
|
31
30
|
- name: Update package
|
32
31
|
run: sudo apt-get update
|
33
32
|
- name: Install packages
|
34
33
|
run: sudo apt-get -y install ledger hledger
|
35
|
-
- name: Set up Ruby
|
36
|
-
|
37
|
-
|
34
|
+
- name: Set up Ruby ${{ matrix.ruby-version }}
|
35
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
36
|
+
# use ruby/setup-ruby@v1 (see https://github.com/ruby/setup-ruby#versioning):
|
38
37
|
uses: ruby/setup-ruby@v1
|
39
|
-
# uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
40
38
|
with:
|
41
39
|
ruby-version: ${{ matrix.ruby-version }}
|
42
40
|
bundler-cache: true # runs 'bundle install' and caches installed gems
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v0.9.3](https://github.com/cantino/reckon/tree/v0.9.3) (2023-08-25)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/cantino/reckon/compare/v0.9.2...v0.9.3)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- Can you choose to apply amounts against category instead of account name? [\#123](https://github.com/cantino/reckon/issues/123)
|
10
|
+
|
11
|
+
**Merged pull requests:**
|
12
|
+
|
13
|
+
- Fix end quote around note in beancount format [\#124](https://github.com/cantino/reckon/pull/124) ([stephas](https://github.com/stephas))
|
14
|
+
|
15
|
+
## [v0.9.2](https://github.com/cantino/reckon/tree/v0.9.2) (2023-04-14)
|
16
|
+
|
17
|
+
[Full Changelog](https://github.com/cantino/reckon/compare/v0.9.1...v0.9.2)
|
18
|
+
|
19
|
+
**Closed issues:**
|
20
|
+
|
21
|
+
- reckon fails any csv with Date::Error [\#121](https://github.com/cantino/reckon/issues/121)
|
22
|
+
- \[FEATURE REQUEST\] Use ledger files as input source in addition to csv's [\#92](https://github.com/cantino/reckon/issues/92)
|
23
|
+
|
24
|
+
**Merged pull requests:**
|
25
|
+
|
26
|
+
- 121 require date [\#122](https://github.com/cantino/reckon/pull/122) ([benprew](https://github.com/benprew))
|
27
|
+
|
3
28
|
## [v0.9.1](https://github.com/cantino/reckon/tree/v0.9.1) (2023-03-19)
|
4
29
|
|
5
30
|
[Full Changelog](https://github.com/cantino/reckon/compare/v0.9.0...v0.9.1)
|
data/Gemfile.lock
CHANGED
data/bin/build-new-version.sh
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
|
-
set -
|
3
|
+
set -e
|
4
4
|
|
5
5
|
VERSION=$1
|
6
6
|
|
7
|
+
if [ -z "$TOKEN" ]; then
|
8
|
+
echo "\$TOKEN var must be your github api token"
|
9
|
+
exit 1
|
10
|
+
fi
|
11
|
+
|
7
12
|
echo "Install github_changelog_generator"
|
8
13
|
gem install --user github_changelog_generator
|
9
14
|
|
@@ -12,16 +17,16 @@ echo -e "module Reckon\n VERSION = \"$VERSION\"\nend" > lib/reckon/version.rb
|
|
12
17
|
echo "Run `bundle install` to build updated Gemfile.lock"
|
13
18
|
bundle install
|
14
19
|
echo "Run changelog generator (requires $TOKEN to be your github token)"
|
15
|
-
github_changelog_generator -u cantino -p reckon -t $TOKEN --future-release v$VERSION
|
20
|
+
github_changelog_generator -u cantino -p reckon -t "$TOKEN" --future-release "v$VERSION"
|
16
21
|
echo "Commit changes"
|
17
22
|
git add CHANGELOG.md lib/reckon/version.rb Gemfile.lock
|
18
23
|
git commit -m "Release $VERSION"
|
19
24
|
echo "Tag release"
|
20
|
-
git tag v$VERSION
|
25
|
+
git tag "v$VERSION"
|
21
26
|
echo "Build new gem"
|
22
27
|
gem build reckon.gemspec
|
23
28
|
echo "Push changes and tags"
|
24
29
|
echo "git push && git push --tags"
|
25
30
|
echo "Push new gem"
|
26
31
|
echo "gem push reckon-$VERSION.gem"
|
27
|
-
gh release create v$VERSION reckon-$VERSION.gem --draft --generate-notes
|
32
|
+
gh release create "v$VERSION" "reckon-$VERSION.gem" --draft --generate-notes
|
@@ -65,7 +65,7 @@ module Reckon
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def format_row(row, line1, line2)
|
68
|
-
out = %Q{#{row[:pretty_date]} * "#{row[:description]}" "#{row[:note]}\n}
|
68
|
+
out = %Q{#{row[:pretty_date]} * "#{row[:description]}" "#{row[:note]}"\n}
|
69
69
|
out += "\t#{line1.first}\t\t\t#{line1.last}\n"
|
70
70
|
out += "\t#{line2.first}\t\t\t#{line2.last}\n\n"
|
71
71
|
out
|
data/lib/reckon/date_column.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
1
5
|
module Reckon
|
6
|
+
# Handle date columns in csv
|
2
7
|
class DateColumn < Array
|
3
8
|
attr_accessor :endian_precedence
|
4
|
-
|
9
|
+
|
10
|
+
def initialize(arr = [], options = {})
|
5
11
|
# output date format
|
6
12
|
@ledger_date_format = options[:ledger_date_format]
|
7
13
|
|
@@ -11,7 +17,9 @@ module Reckon
|
|
11
17
|
if date_format
|
12
18
|
begin
|
13
19
|
value = Date.strptime(value, date_format)
|
14
|
-
|
20
|
+
# ruby 2.6.0 doesn't have Date::Error, but Date::Error is a subclass of
|
21
|
+
# ArgumentError
|
22
|
+
rescue ArgumentError
|
15
23
|
puts "I'm having trouble parsing '#{value}' with the desired format: #{date_format}"
|
16
24
|
exit 1
|
17
25
|
end
|
@@ -22,12 +30,11 @@ module Reckon
|
|
22
30
|
value = [$1, $2, $3].join("/") if value =~ /^(\d{4})\-(\d{2})\-(\d{2})$/ # yyyy-mm-dd format
|
23
31
|
value = [$1, $2, $3].join("/") if value =~ /^(\d{4})(\d{2})(\d{2})/ # yyyymmdd format
|
24
32
|
|
25
|
-
|
26
33
|
unless @endian_precedence # Try to detect endian_precedence
|
27
|
-
reg_match = value.match(
|
34
|
+
reg_match = value.match(%r{^(\d\d)/(\d\d)/\d\d\d?\d?})
|
28
35
|
# If first one is not \d\d/\d\d/\d\d\d?\d set it to default
|
29
36
|
if !reg_match
|
30
|
-
@endian_precedence = [
|
37
|
+
@endian_precedence = %i[middle little]
|
31
38
|
elsif reg_match[1].to_i > 12
|
32
39
|
@endian_precedence = [:little]
|
33
40
|
elsif reg_match[2].to_i > 12
|
@@ -35,23 +42,24 @@ module Reckon
|
|
35
42
|
end
|
36
43
|
end
|
37
44
|
end
|
38
|
-
|
45
|
+
push(value)
|
39
46
|
end
|
47
|
+
|
40
48
|
# if endian_precedence still nil, raise error
|
41
|
-
|
42
|
-
|
43
|
-
|
49
|
+
return if @endian_precedence || date_format
|
50
|
+
|
51
|
+
raise("Unable to determine date format. Please specify using --date-format")
|
44
52
|
end
|
45
53
|
|
46
|
-
def for(
|
47
|
-
value =
|
48
|
-
guess = Chronic.parse(value, :
|
49
|
-
|
50
|
-
if guess.to_i <
|
51
|
-
guess = Chronic.parse((value.split("/")[0...-1] + [(2000 + value.split("/").last.to_i).to_s]).join("/"), :
|
52
|
-
|
54
|
+
def for(index)
|
55
|
+
value = at(index)
|
56
|
+
guess = Chronic.parse(value, contex: :past,
|
57
|
+
endian_precedence: @endian_precedence)
|
58
|
+
if guess.to_i < 953_236_800 && value =~ %r{/}
|
59
|
+
guess = Chronic.parse((value.split("/")[0...-1] + [(2000 + value.split("/").last.to_i).to_s]).join("/"), context: :past,
|
60
|
+
endian_precedence: @endian_precedence)
|
53
61
|
end
|
54
|
-
guess
|
62
|
+
guess&.to_date
|
55
63
|
end
|
56
64
|
|
57
65
|
def pretty_for(index)
|
@@ -65,7 +73,10 @@ module Reckon
|
|
65
73
|
date_score = 0
|
66
74
|
date_score += 10 if entry =~ /\b(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i
|
67
75
|
date_score += 5 if entry =~ /^[\-\/\.\d:\[\]]+$/
|
68
|
-
|
76
|
+
# add points for columns that start with date-like characters -/.\d:[]
|
77
|
+
date_score += entry.gsub(/[^\-\/\.\d:\[\]]/, '').length if entry.gsub(
|
78
|
+
/[^\-\/\.\d:\[\]]/, ''
|
79
|
+
).length > 3
|
69
80
|
date_score -= entry.gsub(/[\-\/\.\d:\[\]]/, '').length
|
70
81
|
date_score += 30 if entry =~ /^\d+[:\/\.-]\d+[:\/\.-]\d+([ :]\d+[:\/\.]\d+)?$/
|
71
82
|
date_score += 10 if entry =~ /^\d+\[\d+:GMT\]$/i
|
@@ -73,7 +84,11 @@ module Reckon
|
|
73
84
|
begin
|
74
85
|
DateTime.parse(entry)
|
75
86
|
date_score += 20
|
76
|
-
|
87
|
+
# ruby 2.6.0 doesn't have Date::Error, but Date::Error is a subclass of
|
88
|
+
# ArgumentError
|
89
|
+
rescue ArgumentError
|
90
|
+
# we don't need do anything here since the column didn't parse as a date
|
91
|
+
nil
|
77
92
|
end
|
78
93
|
|
79
94
|
date_score
|
data/lib/reckon/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reckon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Cantino
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-08-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|