bai2 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 975f734808bc96fce7ca38c08e1ba90e8839b8c6
4
- data.tar.gz: 99d17eec7002b0b0c6ca70b9a3228f2500efadc5
3
+ metadata.gz: b2c135a421db2cecf82dd36a921239da5893f64f
4
+ data.tar.gz: 13b70262c5e59a5c0568fa4ddabddb3deb7176f1
5
5
  SHA512:
6
- metadata.gz: bdd5385fe33114722442f33838c2bab6406cfc41ab7a1e3125bd09bf1d269e351e57008090da8ccb34b6ae11edefd4ec222cf9ae7fad32edcd3fb86a9b18bb6e
7
- data.tar.gz: eb2228fdfaaba4856d141508995809e7ecc0235de2b6437206faa774c9382c469486ae9a001be4a2398746882a697b59936fd01aad5cf1713382159c6eed3ed7
6
+ metadata.gz: b23d85fe51f1ec6b4e75a9c9735c796dc2ba5249baba21d2b35663d0ccf0e747f57079df2d0b79965c6788d87fc24789c86e3683c0b78d078d1522082a872161
7
+ data.tar.gz: 045ebbb486134bde017a2d3de65a3a5ff21bcd92f217645e62171c35f0f36ba3b3e6a1930aa81db736b37b7dc183c812e70c0e8b34b62fddf3f23b63dce30eeb
@@ -0,0 +1,37 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ parallelism: 1
5
+ resource_class: small
6
+ working_directory: "~/bai2"
7
+ docker:
8
+ - image: 207583270433.dkr.ecr.us-west-1.amazonaws.com/universe/ruby_24:0.15
9
+ steps:
10
+ - checkout
11
+ - run:
12
+ name: build gem
13
+ command: |
14
+ gem build bai2.gemspec
15
+ - run:
16
+ name: push gem
17
+ command: |
18
+ if [[ -n "${GEMFURY_USERNAME}" && -n "${GEMFURY_PASSWORD}" ]]; then
19
+ echo -e "machine api.fury.io\n login ${GEMFURY_USERNAME}\n password ${GEMFURY_PASSWORD}" >> ~/.netrc
20
+ chmod 600 ~/.netrc
21
+ version=$(parse-gemspec-cli bai2.gemspec | jq -r ".version")
22
+ grep -q "${version}" <(fury versions bai2) || EXIT_CODE=$? && true
23
+ if [[ $EXIT_CODE == 1 ]]; then
24
+ fury push bai2-${version}.gem
25
+ else
26
+ echo "bai2 version ${version} has previously been released to gemfury, increment the version for a new release"
27
+ fi
28
+ fi
29
+ workflows:
30
+ version: 2
31
+ build-and-push:
32
+ jobs:
33
+ - build:
34
+ context: org-global
35
+ filters:
36
+ branches:
37
+ only: master
@@ -1,5 +1,8 @@
1
1
  Changelog
2
2
 
3
+ ## 2.0.1
4
+ - Add `continuations_slash_delimit_end_of_line_only` to options. This option allows parsing continuation records that begin with a slash character (`/`).
5
+
3
6
  ## 2.0.0
4
7
  - Add parameters for whether or not we use account summaries for account control checksum. We now include it by default. To disable it `account_control_ignores_summary_amounts` should passed into `options` This is the only breaking change.
5
8
  - Allow for optional "as of" times on the Group header.
data/README.md CHANGED
@@ -86,6 +86,9 @@ account control values.
86
86
  * `options[:num_account_summary_continuation_records]` (Integer, Default: 0)
87
87
  The number of continuation records the account summary.
88
88
 
89
+ * `options[:continuations_slash_delimit_end_of_line_only]` (Boolean, Default: False)
90
+ This allows continuation records to begin with `88,\` and still have the text including the slash to be processed.
91
+
89
92
 
90
93
  ##### Usage:
91
94
 
@@ -1,11 +1,10 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'bai2/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = 'bai2'
8
- spec.version = Bai2::VERSION
7
+ spec.version = '2.0.1'
9
8
  spec.authors = ['Kenneth Ballenegger']
10
9
  spec.email = ['kenneth@ballenegger.com']
11
10
  spec.summary = %q{Parse BAI2 files.}
@@ -1,4 +1,3 @@
1
- require 'bai2/version'
2
1
  require 'bai2/record'
3
2
  require 'bai2/parser'
4
3
  require 'bai2/integrity'
@@ -13,7 +12,8 @@ module Bai2
13
12
 
14
13
  DEFAULT_OPTIONS = {
15
14
  account_control_ignores_summary_amounts: false,
16
- num_account_summary_continuation_records: 0
15
+ num_account_summary_continuation_records: 0,
16
+ continuations_slash_delimit_end_of_line_only: false,
17
17
  }.freeze
18
18
 
19
19
  # Parse a file on disk:
@@ -33,7 +33,7 @@ module Bai2
33
33
  @raw = raw
34
34
  @groups = []
35
35
  @options = DEFAULT_OPTIONS.merge(options)
36
- parse(raw)
36
+ parse(raw, options)
37
37
  end
38
38
 
39
39
  # This is the raw data. Probably not super important.
@@ -62,9 +62,9 @@ module Bai2
62
62
  # This delegates most of the work to Bai2::Parser to build the ParseNode
63
63
  # tree.
64
64
  #
65
- def parse(data)
65
+ def parse(data, options)
66
66
 
67
- root = Parser.parse(data)
67
+ root = Parser.parse(data, options)
68
68
 
69
69
  # parse the file node; will descend tree and parse children
70
70
  parse_file_node(root)
@@ -26,10 +26,10 @@ module Bai2
26
26
  # 1. Build a tree
27
27
  # 2. Parse the tree
28
28
  #
29
- def parse(data)
29
+ def parse(data, options)
30
30
 
31
31
  # split records, handle stupid DOS-format files, instantiate records
32
- records = data.split("\n").map(&:strip).map {|l| Record.new(l) }
32
+ records = data.split("\n").map(&:strip).map {|l| Record.new(l, options: options) }
33
33
 
34
34
  # merge continuations
35
35
  records = merge_continuations(records)
@@ -112,11 +112,18 @@ module Bai2
112
112
  }
113
113
 
114
114
 
115
- def initialize(line, physical_record_count = 1)
115
+ def initialize(line, physical_record_count = 1, options: {})
116
116
  @code = RECORD_CODES[line[0..1]]
117
117
  @physical_record_count = physical_record_count
118
118
  # clean / delimiter
119
- @raw = line.sub(/,\/.+$/, '').sub(/\/$/, '')
119
+ @raw = if options[:continuations_slash_delimit_end_of_line_only]
120
+ # Continuation records for transaction details extend the text fields
121
+ # and they may begin with 88,/ but should include the rest of the line.
122
+ # A proper fix would involve each continuation record knowing what field it was extending.
123
+ line.sub(/\/$/, '')
124
+ else
125
+ line.sub(/,\/.+$/, '').sub(/\/$/, '')
126
+ end
120
127
  end
121
128
 
122
129
  attr_reader :code, :raw, :physical_record_count
@@ -0,0 +1,18 @@
1
+ 01,121140399,3333333333,100831,1720,000001,80,1,2/
2
+ 02,3333333333,121140399,1,100831,,USD,4/
3
+ 03,3333333333,USD,,,,/
4
+ 16,195,8325982,,,,FED NO: 20100831L1B77D1CDSDSDJSIO15608310954FT01
5
+ 88,SENDER BNK:=ETRADE BANK
6
+ 88,SENDER ID:=056073573
7
+ 88,ORG:=OPTIONS LINK WIRE CLEARING
8
+ 88,ORG ADDRESS:=2/AV MAIN 2/AVENUE DE ANGELLIST 3/MX
9
+ 88,/MEXICO ;
10
+ 88,BNF ID:=3300333333
11
+ 88,BNF NAME:=YOUR NAME HERE INC
12
+ 88,BNF ADDRESS:=185 B ST SAN FRAN, CA 94011
13
+ 88,REC FI:=SIL VLY BK SCLA
14
+ 88,REC ID:=121140399
15
+ 88,OBI:=INVOICE 123456
16
+ 49,8325982,14/
17
+ 98,8325982,1,16/
18
+ 99,8325982,1,18/
@@ -11,8 +11,10 @@ class Bai2Test < Minitest::Test
11
11
 
12
12
  @eod = Bai2::BaiFile.parse(File.expand_path('../../data/eod.bai2', __FILE__))
13
13
  @eod_no_as_of_time = Bai2::BaiFile.parse(File.expand_path('../../data/eod_without_as_of_time.bai2', __FILE__))
14
+ @eod_with_slash_in_continuation = Bai2::BaiFile.parse(File.expand_path('../../data/eod_with_slash_in_text.bai2', __FILE__),
15
+ continuations_slash_delimit_end_of_line_only: true)
14
16
 
15
- @all_files = [@daily, @daily_with_summary, @eod, @eod_no_as_of_time]
17
+ @all_files = [@daily, @daily_with_summary, @eod, @eod_no_as_of_time, @eod_with_slash_in_continuation]
16
18
  end
17
19
 
18
20
  def test_parsing
@@ -73,5 +75,4 @@ class Bai2Test < Minitest::Test
73
75
  Bai2::BaiFile.parse(File.expand_path('../../data/invalid_checksum_eod.bai2', __FILE__))
74
76
  end
75
77
  end
76
-
77
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bai2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenneth Ballenegger
@@ -73,6 +73,7 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
+ - ".circleci/config.yml"
76
77
  - ".gitignore"
77
78
  - CHANGELOG.md
78
79
  - Gemfile
@@ -86,11 +87,11 @@ files:
86
87
  - lib/bai2/parser.rb
87
88
  - lib/bai2/record.rb
88
89
  - lib/bai2/type-code-data.rb
89
- - lib/bai2/version.rb
90
90
  - test/autorun.rb
91
91
  - test/data/daily.bai2
92
92
  - test/data/daily_with_summary.bai2
93
93
  - test/data/eod.bai2
94
+ - test/data/eod_with_slash_in_text.bai2
94
95
  - test/data/eod_without_as_of_time.bai2
95
96
  - test/data/invalid_checksum_eod.bai2
96
97
  - test/tests/bai2.rb
@@ -124,6 +125,7 @@ test_files:
124
125
  - test/data/daily.bai2
125
126
  - test/data/daily_with_summary.bai2
126
127
  - test/data/eod.bai2
128
+ - test/data/eod_with_slash_in_text.bai2
127
129
  - test/data/eod_without_as_of_time.bai2
128
130
  - test/data/invalid_checksum_eod.bai2
129
131
  - test/tests/bai2.rb
@@ -1,3 +0,0 @@
1
- module Bai2
2
- VERSION = '2.0.0'
3
- end