reckon 0.9.1 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03c20b48d4333969c8304a5bb9a3c01fc6053050ab9146329ce14ae6a9886b38
4
- data.tar.gz: 27a2ce4e8db5c7818cc4cefb19f180a7c727190f0a990403f565fad503e749a9
3
+ metadata.gz: 9ddc247a822ee229bd5530bdfd0b4ec72f9022712ac10b15174e30dceb452bef
4
+ data.tar.gz: '069982cf8f6c5e899c93fe02a746561011beb968e34dcbdde69622143ff272e7'
5
5
  SHA512:
6
- metadata.gz: 2f569b3d5cf4038714065a6d184d6c07f57d10598e5efc610eeb9919e8b18c65aff5e5329ab89a9ed30f72cabce9d11f5645af4d0df3bda6d05ad9afd988f7e7
7
- data.tar.gz: 1783a63ba138c2b87a0756d6b9bcfbce068daf977e582a4c920a37ff50358328f8514f308dbbf932ef5cc4111e9e52dadfaed5876b9d30f4759d4a1eb31299fa
6
+ metadata.gz: 893a0734cfbfe3cc575f426677ecc5d4f80a08b2e35901962aa64cb4ae7c17e9671e181446647f5c6a97ce4ce8bea9ef11bfda5978e9f051b2442410f449b316
7
+ data.tar.gz: 2a2993018406fecff07d1b61b1371ea9eea16e816312cbb67f6c2dc097086fef1dd253658249b17f105ef415b9c0744e6ca6ad8f29d3c91456e3cbddd8046508
@@ -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@v2
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
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
37
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
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,18 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.9.2](https://github.com/cantino/reckon/tree/v0.9.2) (2023-04-14)
4
+
5
+ [Full Changelog](https://github.com/cantino/reckon/compare/v0.9.1...v0.9.2)
6
+
7
+ **Closed issues:**
8
+
9
+ - reckon fails any csv with Date::Error [\#121](https://github.com/cantino/reckon/issues/121)
10
+ - \[FEATURE REQUEST\] Use ledger files as input source in addition to csv's [\#92](https://github.com/cantino/reckon/issues/92)
11
+
12
+ **Merged pull requests:**
13
+
14
+ - 121 require date [\#122](https://github.com/cantino/reckon/pull/122) ([benprew](https://github.com/benprew))
15
+
3
16
  ## [v0.9.1](https://github.com/cantino/reckon/tree/v0.9.1) (2023-03-19)
4
17
 
5
18
  [Full Changelog](https://github.com/cantino/reckon/compare/v0.9.0...v0.9.1)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- reckon (0.9.1)
4
+ reckon (0.9.2)
5
5
  chronic (>= 0.3.0)
6
6
  highline (>= 1.5.2)
7
7
  matrix (>= 0.4.2)
@@ -1,9 +1,14 @@
1
1
  #!/bin/bash
2
2
 
3
- set -xe
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
@@ -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
- def initialize( arr = [], options = {} )
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
- rescue
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( /^(\d\d)\/(\d\d)\/\d\d\d?\d?/ )
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 = [:middle, :little]
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
- self.push( value )
45
+ push(value)
39
46
  end
47
+
40
48
  # if endian_precedence still nil, raise error
41
- unless @endian_precedence || date_format
42
- raise( "Unable to determine date format. Please specify using --date-format" )
43
- end
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( index )
47
- value = self.at( index )
48
- guess = Chronic.parse(value, :context => :past,
49
- :endian_precedence => @endian_precedence )
50
- if guess.to_i < 953236800 && value =~ /\//
51
- guess = Chronic.parse((value.split("/")[0...-1] + [(2000 + value.split("/").last.to_i).to_s]).join("/"), :context => :past,
52
- :endian_precedence => @endian_precedence)
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 && guess.to_date
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
- date_score += entry.gsub(/[^\-\/\.\d:\[\]]/, '').length if entry.gsub(/[^\-\/\.\d:\[\]]/, '').length > 3
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
- rescue Date::Error, ArgumentError
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
@@ -1,3 +1,3 @@
1
1
  module Reckon
2
- VERSION = "0.9.1"
2
+ VERSION = "0.9.2"
3
3
  end
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.1
4
+ version: 0.9.2
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-03-19 00:00:00.000000000 Z
13
+ date: 2023-04-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec