nacha 0.1.10 → 0.1.14
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/.github/workflows/ci.yml +63 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +4 -2
- data/.ruby-version +1 -1
- data/CHANGELOG.md +42 -0
- data/README.md +10 -2
- data/exe/nacha +46 -29
- data/lib/nacha/aba_number.rb +33 -24
- data/lib/nacha/ach_date.rb +15 -8
- data/lib/nacha/field.rb +62 -77
- data/lib/nacha/formatter/base.rb +52 -0
- data/lib/nacha/formatter/html_formatter.rb +119 -0
- data/lib/nacha/formatter/json_formatter.rb +49 -0
- data/lib/nacha/formatter/markdown_formatter.rb +57 -0
- data/lib/nacha/formatter.rb +24 -0
- data/lib/nacha/has_errors.rb +12 -8
- data/lib/nacha/numeric.rb +13 -10
- data/lib/nacha/parser.rb +32 -31
- data/lib/nacha/parser_context.rb +4 -9
- data/lib/nacha/record/ack_entry_detail.rb +15 -8
- data/lib/nacha/record/addenda_record_type.rb +8 -1
- data/lib/nacha/record/adv_batch_control.rb +12 -7
- data/lib/nacha/record/adv_entry_detail.rb +3 -2
- data/lib/nacha/record/adv_file_control.rb +9 -5
- data/lib/nacha/record/adv_file_header.rb +11 -6
- data/lib/nacha/record/arc_entry_detail.rb +2 -2
- data/lib/nacha/record/base.rb +124 -106
- data/lib/nacha/record/batch_control.rb +13 -7
- data/lib/nacha/record/batch_header.rb +20 -11
- data/lib/nacha/record/batch_header_record_type.rb +5 -4
- data/lib/nacha/record/boc_entry_detail.rb +3 -2
- data/lib/nacha/record/ccd_addenda.rb +2 -2
- data/lib/nacha/record/ccd_entry_detail.rb +3 -2
- data/lib/nacha/record/cie_addenda.rb +2 -2
- data/lib/nacha/record/cie_entry_detail.rb +5 -3
- data/lib/nacha/record/ctx_addenda.rb +2 -2
- data/lib/nacha/record/ctx_corporate_entry_detail.rb +2 -2
- data/lib/nacha/record/detail_record_type.rb +4 -1
- data/lib/nacha/record/dne_addenda.rb +2 -2
- data/lib/nacha/record/dne_entry_detail.rb +6 -4
- data/lib/nacha/record/enr_addenda.rb +3 -2
- data/lib/nacha/record/enr_entry_detail.rb +4 -3
- data/lib/nacha/record/fifth_iat_addenda.rb +8 -4
- data/lib/nacha/record/file_control.rb +9 -5
- data/lib/nacha/record/file_control_record_type.rb +1 -1
- data/lib/nacha/record/file_header.rb +12 -8
- data/lib/nacha/record/file_header_record_type.rb +1 -1
- data/lib/nacha/record/filler.rb +3 -3
- data/lib/nacha/record/filler_record_type.rb +3 -1
- data/lib/nacha/record/first_iat_addenda.rb +4 -3
- data/lib/nacha/record/fourth_iat_addenda.rb +7 -4
- data/lib/nacha/record/iat_batch_header.rb +5 -3
- data/lib/nacha/record/iat_entry_detail.rb +9 -6
- data/lib/nacha/record/iat_foreign_coorespondent_bank_information_addenda.rb +10 -6
- data/lib/nacha/record/iat_remittance_information_addenda.rb +3 -2
- data/lib/nacha/record/mte_addenda.rb +4 -3
- data/lib/nacha/record/mte_entry_detail.rb +5 -3
- data/lib/nacha/record/pop_entry_detail.rb +3 -2
- data/lib/nacha/record/pos_addenda.rb +6 -3
- data/lib/nacha/record/pos_entry_detail.rb +5 -3
- data/lib/nacha/record/ppd_addenda.rb +3 -2
- data/lib/nacha/record/ppd_entry_detail.rb +5 -3
- data/lib/nacha/record/rck_entry_detail.rb +3 -2
- data/lib/nacha/record/second_iat_addenda.rb +3 -2
- data/lib/nacha/record/seventh_iat_addenda.rb +3 -2
- data/lib/nacha/record/shr_addenda.rb +5 -3
- data/lib/nacha/record/shr_entry_detail.rb +3 -2
- data/lib/nacha/record/sixth_iat_addenda.rb +5 -3
- data/lib/nacha/record/tel_entry_detail.rb +5 -3
- data/lib/nacha/record/third_iat_addenda.rb +3 -2
- data/lib/nacha/record/trc_entry_detail.rb +3 -2
- data/lib/nacha/record/trx_addenda.rb +3 -2
- data/lib/nacha/record/trx_entry_detail.rb +5 -3
- data/lib/nacha/record/validations/field_validations.rb +26 -14
- data/lib/nacha/record/validations/record_validations.rb +2 -1
- data/lib/nacha/record/web_addenda.rb +3 -2
- data/lib/nacha/record/web_entry_detail.rb +5 -3
- data/lib/nacha/record/xck_entry_detail.rb +3 -2
- data/lib/nacha/version.rb +4 -1
- data/lib/nacha.rb +21 -14
- data/nacha.gemspec +14 -16
- metadata +42 -8
@@ -1,11 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'nacha/record/base
|
5
|
-
require 'nacha/record/addenda_record_type
|
4
|
+
require 'nacha/record/base'
|
5
|
+
require 'nacha/record/addenda_record_type'
|
6
6
|
|
7
7
|
module Nacha
|
8
8
|
module Record
|
9
|
+
# Represents a third IAT addenda record.
|
9
10
|
class ThirdIatAddenda < Nacha::Record::Base
|
10
11
|
include AddendaRecordType
|
11
12
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'nacha/record/base
|
5
|
-
require 'nacha/record/detail_record_type
|
4
|
+
require 'nacha/record/base'
|
5
|
+
require 'nacha/record/detail_record_type'
|
6
6
|
|
7
7
|
module Nacha
|
8
8
|
module Record
|
9
|
+
# Represents a Truncated Entry (TRC) detail record.
|
9
10
|
class TrcEntryDetail < Nacha::Record::Base
|
10
11
|
include DetailRecordType
|
11
12
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'nacha/record/base
|
5
|
-
require 'nacha/record/addenda_record_type
|
4
|
+
require 'nacha/record/base'
|
5
|
+
require 'nacha/record/addenda_record_type'
|
6
6
|
|
7
7
|
module Nacha
|
8
8
|
module Record
|
9
|
+
# Represents a Truncated Entry (TRX) addenda record.
|
9
10
|
class TrxAddenda < Nacha::Record::Base
|
10
11
|
include AddendaRecordType
|
11
12
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'nacha/record/base
|
5
|
-
require 'nacha/record/detail_record_type
|
4
|
+
require 'nacha/record/base'
|
5
|
+
require 'nacha/record/detail_record_type'
|
6
6
|
|
7
7
|
module Nacha
|
8
8
|
module Record
|
9
|
+
# Represents a Truncated Entry with Remittance Data (TRX) detail record.
|
9
10
|
class TrxEntryDetail < Nacha::Record::Base
|
10
11
|
include DetailRecordType
|
11
12
|
|
@@ -16,7 +17,8 @@ module Nacha
|
|
16
17
|
nacha_field :total_amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
|
17
18
|
nacha_field :identification_number, inclusion: 'O', contents: 'Alphameric', position: 40..54
|
18
19
|
nacha_field :number_of_addenda_records, inclusion: 'M', contents: 'Numeric', position: 55..58
|
19
|
-
nacha_field :receiving_company_name_id_number, inclusion: 'R', contents: 'Alphameric',
|
20
|
+
nacha_field :receiving_company_name_id_number, inclusion: 'R', contents: 'Alphameric',
|
21
|
+
position: 59..74
|
20
22
|
nacha_field :reserved, inclusion: 'M', contents: 'C ', position: 75..76
|
21
23
|
nacha_field :item_type_indicator, inclusion: 'O', contents: 'Alphameric', position: 77..78
|
22
24
|
nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
|
@@ -5,37 +5,49 @@ module Nacha
|
|
5
5
|
module Record
|
6
6
|
module Validations
|
7
7
|
module FieldValidations
|
8
|
-
def self.included
|
8
|
+
def self.included(base)
|
9
9
|
base.extend ClassMethods
|
10
10
|
end
|
11
|
+
|
11
12
|
module ClassMethods
|
12
|
-
def check_field_error(field,
|
13
|
-
(block_given? ? yield : condition) ||
|
13
|
+
def check_field_error(field, _message = nil, condition = nil)
|
14
|
+
(block_given? ? yield : condition) ||
|
15
|
+
(field.add_error("'#{field.name}' '#{field}' is invalid") && false)
|
14
16
|
end
|
15
17
|
|
16
|
-
def valid_service_class_code
|
17
|
-
check_field_error(
|
18
|
+
def valid_service_class_code(field)
|
19
|
+
check_field_error(
|
20
|
+
field,
|
21
|
+
"'#{field.name}' '#{field}' should be one of #{SERVICE_CLASS_CODES.join(', ')}"
|
22
|
+
) do
|
18
23
|
SERVICE_CLASS_CODES.include? field.to_s
|
19
|
-
|
24
|
+
end
|
20
25
|
end
|
21
26
|
|
22
|
-
def valid_standard_entry_class_code
|
23
|
-
check_field_error(
|
27
|
+
def valid_standard_entry_class_code(field)
|
28
|
+
check_field_error(
|
29
|
+
field,
|
30
|
+
"'#{field.name}' '#{field}' should be one of " \
|
31
|
+
"#{STANDARD_ENTRY_CLASS_CODES.join(', ')}"
|
32
|
+
) do
|
24
33
|
STANDARD_ENTRY_CLASS_CODES.include? field.data
|
25
|
-
|
34
|
+
end
|
26
35
|
end
|
27
36
|
|
28
|
-
def valid_transaction_code
|
29
|
-
check_field_error(
|
37
|
+
def valid_transaction_code(field)
|
38
|
+
check_field_error(
|
39
|
+
field,
|
40
|
+
"'#{field.name}' '#{field}' should be one of #{TRANSACTION_CODES.join(', ')}"
|
41
|
+
) do
|
30
42
|
TRANSACTION_CODES.include? field.to_s
|
31
|
-
|
43
|
+
end
|
32
44
|
end
|
33
45
|
|
34
|
-
def valid_receiving_dfi_identification
|
46
|
+
def valid_receiving_dfi_identification(field)
|
35
47
|
check_field_error(field) { field.valid? }
|
36
48
|
end
|
37
49
|
|
38
|
-
def valid_filler
|
50
|
+
def valid_filler(field)
|
39
51
|
check_field_error(field) { field.to_s == ('9' * 93) }
|
40
52
|
end
|
41
53
|
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'nacha/record/base
|
5
|
-
require 'nacha/record/addenda_record_type
|
4
|
+
require 'nacha/record/base'
|
5
|
+
require 'nacha/record/addenda_record_type'
|
6
6
|
|
7
7
|
module Nacha
|
8
8
|
module Record
|
9
|
+
# Represents an Internet-Initiated Entry (WEB) addenda record.
|
9
10
|
class WebAddenda < Nacha::Record::Base
|
10
11
|
include AddendaRecordType
|
11
12
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'nacha/record/base
|
5
|
-
require 'nacha/record/detail_record_type
|
4
|
+
require 'nacha/record/base'
|
5
|
+
require 'nacha/record/detail_record_type'
|
6
6
|
|
7
7
|
module Nacha
|
8
8
|
module Record
|
9
|
+
# Represents an Internet-Initiated Entry (WEB) detail record.
|
9
10
|
class WebEntryDetail < Nacha::Record::Base
|
10
11
|
include DetailRecordType
|
11
12
|
|
@@ -14,7 +15,8 @@ module Nacha
|
|
14
15
|
nacha_field :receiving_dfi_identification, inclusion: 'M', contents: 'TTTTAAAAC', position: 4..12
|
15
16
|
nacha_field :dfi_account_number, inclusion: 'R', contents: 'Alphameric', position: 13..29
|
16
17
|
nacha_field :amount, inclusion: 'M', contents: '$$$$$$$$¢¢', position: 30..39
|
17
|
-
nacha_field :individual_identification_number, inclusion: 'O', contents: 'Alphameric',
|
18
|
+
nacha_field :individual_identification_number, inclusion: 'O', contents: 'Alphameric',
|
19
|
+
position: 40..54
|
18
20
|
nacha_field :individual_name, inclusion: 'R', contents: 'Alphameric', position: 55..76
|
19
21
|
nacha_field :payment_type_code, inclusion: 'O', contents: 'Alphameric', position: 77..78
|
20
22
|
nacha_field :addenda_record_indicator, inclusion: 'M', contents: 'Numeric', position: 79..79
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'nacha/record/base
|
5
|
-
require 'nacha/record/detail_record_type
|
4
|
+
require 'nacha/record/base'
|
5
|
+
require 'nacha/record/detail_record_type'
|
6
6
|
|
7
7
|
module Nacha
|
8
8
|
module Record
|
9
|
+
# Represents a Destroyed Check Entry (XCK) detail record.
|
9
10
|
class XckEntryDetail < Nacha::Record::Base
|
10
11
|
include DetailRecordType
|
11
12
|
|
data/lib/nacha/version.rb
CHANGED
data/lib/nacha.rb
CHANGED
@@ -22,15 +22,15 @@ require 'nacha/numeric'
|
|
22
22
|
# including various entry detail, addenda, batch, and file control records.
|
23
23
|
module Nacha
|
24
24
|
STANDARD_ENTRY_CLASS_CODES = %w[ACK ADV ARC ATX BOC CCD PPD CIE
|
25
|
-
|
26
|
-
|
25
|
+
COR CTX DNE ENR IAT POP POS SHR
|
26
|
+
MTE RCK TEL TRC TRX WEB XCK].freeze
|
27
27
|
|
28
28
|
SERVICE_CLASS_CODES = %w[200 220 225 280].freeze
|
29
29
|
|
30
30
|
CREDIT_TRANSACTION_CODES = %w[20 21 22 23 24 30 31 32 33 34 41 42
|
31
|
-
|
31
|
+
43 44 51 52 53 54 81 83 85 87].freeze
|
32
32
|
DEBIT_TRANSACTION_CODES = %w[25 26 27 28 29 35 36 37 38 39 46 47
|
33
|
-
|
33
|
+
48 49 55 56 82 84 86 88].freeze
|
34
34
|
|
35
35
|
TRANSACTION_CODES = (CREDIT_TRANSACTION_CODES + DEBIT_TRANSACTION_CODES).freeze
|
36
36
|
|
@@ -53,17 +53,24 @@ module Nacha
|
|
53
53
|
|
54
54
|
# Returns an array of all currently registered ACH record type class names.
|
55
55
|
#
|
56
|
-
# @return [Array<String>] An array of
|
56
|
+
# @return [Array<String>] An array of ACH record class names.
|
57
57
|
def ach_record_types
|
58
58
|
@ach_record_types || []
|
59
59
|
end
|
60
60
|
|
61
|
+
def to_h
|
62
|
+
types_hash = {}
|
63
|
+
ach_record_types.each do |record_type|
|
64
|
+
types_hash.merge! Object.const_get(record_type).to_h
|
65
|
+
end
|
66
|
+
types_hash
|
67
|
+
end
|
68
|
+
|
61
69
|
# Parses a NACHA file or string into a structured object representation.
|
62
70
|
#
|
63
71
|
# @param object [String, File, IO] The input to parse, either a string containing
|
64
72
|
# NACHA data or an IO object (e.g., a File) representing the NACHA file.
|
65
|
-
# @return [Nacha::Record::Base] The parsed NACHA file object
|
66
|
-
# with nested batch and entry detail records.
|
73
|
+
# @return [Nacha::Record::Base] The parsed NACHA file object.
|
67
74
|
def parse(object)
|
68
75
|
parser = Nacha::Parser.new
|
69
76
|
if object.is_a?(String)
|
@@ -89,11 +96,11 @@ module Nacha
|
|
89
96
|
# @param str [String] The string to underscore.
|
90
97
|
# @return [String] The underscored string.
|
91
98
|
def underscore(str)
|
92
|
-
str.gsub(/::/, '/')
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
99
|
+
str.gsub(/::/, '/')
|
100
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
101
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
102
|
+
.tr('-', '_')
|
103
|
+
.downcase
|
97
104
|
end
|
98
105
|
end
|
99
106
|
end
|
@@ -110,11 +117,11 @@ require 'nacha/record/detail_record_type'
|
|
110
117
|
# This is necessary because the parser relies on the record types being defined
|
111
118
|
# and available in the Nacha module.
|
112
119
|
|
113
|
-
Gem.find_files('nacha/record/*.rb').reject{|f| f
|
120
|
+
Gem.find_files('nacha/record/*.rb').reject { |f| f.include?('/spec/') }.each do |file|
|
114
121
|
require File.expand_path(file)
|
115
122
|
end
|
116
123
|
|
117
|
-
Gem.find_files('nacha/record/**/*.rb').reject{|f| f
|
124
|
+
Gem.find_files('nacha/record/**/*.rb').reject { |f| f.include?('/spec/') }.each do |file|
|
118
125
|
require File.expand_path(file)
|
119
126
|
end
|
120
127
|
|
data/nacha.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.description = %q(Ruby parser for ACH files.)
|
15
15
|
spec.homepage = 'https://github.com/dwilkins/nacha'
|
16
16
|
spec.license = 'MIT'
|
17
|
+
spec.required_ruby_version = '>= 3.2.8'
|
17
18
|
|
18
19
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
20
|
f.match(%r{^(test|spec|features)/})
|
@@ -23,23 +24,20 @@ Gem::Specification.new do |spec|
|
|
23
24
|
spec.require_paths = ["lib"]
|
24
25
|
spec.add_dependency 'bigdecimal'
|
25
26
|
|
26
|
-
spec.add_development_dependency
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
spec.add_development_dependency
|
35
|
-
spec.add_development_dependency
|
36
|
-
spec.add_development_dependency
|
37
|
-
spec.add_development_dependency
|
38
|
-
spec.add_development_dependency "guard-rspec"
|
39
|
-
spec.add_development_dependency "rake"
|
40
|
-
spec.add_development_dependency "rspec"
|
41
|
-
spec.add_development_dependency "rubocop"
|
27
|
+
spec.add_development_dependency 'bundler'
|
28
|
+
spec.add_development_dependency 'byebug' if RUBY_ENGINE == 'ruby'
|
29
|
+
spec.add_development_dependency 'factory_bot'
|
30
|
+
spec.add_development_dependency 'gitlab-styles'
|
31
|
+
spec.add_development_dependency 'guard'
|
32
|
+
spec.add_development_dependency 'guard-rspec'
|
33
|
+
spec.add_development_dependency 'pry'
|
34
|
+
spec.add_development_dependency 'pry-nav' if RUBY_ENGINE == 'jruby'
|
35
|
+
spec.add_development_dependency 'rake'
|
36
|
+
spec.add_development_dependency 'reek'
|
37
|
+
spec.add_development_dependency 'rspec'
|
38
|
+
spec.add_development_dependency 'rubocop'
|
42
39
|
spec.add_development_dependency 'rubocop-performance'
|
43
40
|
spec.add_development_dependency 'rubocop-rspec'
|
44
41
|
spec.add_development_dependency 'simplecov'
|
42
|
+
spec.add_development_dependency 'simplecov-lcov'
|
45
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nacha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David H. Wilkins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-07-
|
11
|
+
date: 2025-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bigdecimal
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: factory_bot
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: gitlab-styles
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: guard
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name: guard
|
98
|
+
name: guard-rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: pry
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: reek
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: rspec
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,6 +220,20 @@ dependencies:
|
|
206
220
|
- - ">="
|
207
221
|
- !ruby/object:Gem::Version
|
208
222
|
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: simplecov-lcov
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
209
237
|
description: Ruby parser for ACH files.
|
210
238
|
email:
|
211
239
|
- dwilkins@conecuh.com
|
@@ -214,6 +242,7 @@ executables:
|
|
214
242
|
extensions: []
|
215
243
|
extra_rdoc_files: []
|
216
244
|
files:
|
245
|
+
- ".github/workflows/ci.yml"
|
217
246
|
- ".gitignore"
|
218
247
|
- ".gitlab-ci.yml"
|
219
248
|
- ".rspec"
|
@@ -235,6 +264,11 @@ files:
|
|
235
264
|
- lib/nacha/aba_number.rb
|
236
265
|
- lib/nacha/ach_date.rb
|
237
266
|
- lib/nacha/field.rb
|
267
|
+
- lib/nacha/formatter.rb
|
268
|
+
- lib/nacha/formatter/base.rb
|
269
|
+
- lib/nacha/formatter/html_formatter.rb
|
270
|
+
- lib/nacha/formatter/json_formatter.rb
|
271
|
+
- lib/nacha/formatter/markdown_formatter.rb
|
238
272
|
- lib/nacha/has_errors.rb
|
239
273
|
- lib/nacha/numeric.rb
|
240
274
|
- lib/nacha/parser.rb
|
@@ -315,7 +349,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
315
349
|
requirements:
|
316
350
|
- - ">="
|
317
351
|
- !ruby/object:Gem::Version
|
318
|
-
version:
|
352
|
+
version: 3.2.8
|
319
353
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
320
354
|
requirements:
|
321
355
|
- - ">="
|