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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +63 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +4 -2
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.md +42 -0
  7. data/README.md +10 -2
  8. data/exe/nacha +46 -29
  9. data/lib/nacha/aba_number.rb +33 -24
  10. data/lib/nacha/ach_date.rb +15 -8
  11. data/lib/nacha/field.rb +62 -77
  12. data/lib/nacha/formatter/base.rb +52 -0
  13. data/lib/nacha/formatter/html_formatter.rb +119 -0
  14. data/lib/nacha/formatter/json_formatter.rb +49 -0
  15. data/lib/nacha/formatter/markdown_formatter.rb +57 -0
  16. data/lib/nacha/formatter.rb +24 -0
  17. data/lib/nacha/has_errors.rb +12 -8
  18. data/lib/nacha/numeric.rb +13 -10
  19. data/lib/nacha/parser.rb +32 -31
  20. data/lib/nacha/parser_context.rb +4 -9
  21. data/lib/nacha/record/ack_entry_detail.rb +15 -8
  22. data/lib/nacha/record/addenda_record_type.rb +8 -1
  23. data/lib/nacha/record/adv_batch_control.rb +12 -7
  24. data/lib/nacha/record/adv_entry_detail.rb +3 -2
  25. data/lib/nacha/record/adv_file_control.rb +9 -5
  26. data/lib/nacha/record/adv_file_header.rb +11 -6
  27. data/lib/nacha/record/arc_entry_detail.rb +2 -2
  28. data/lib/nacha/record/base.rb +124 -106
  29. data/lib/nacha/record/batch_control.rb +13 -7
  30. data/lib/nacha/record/batch_header.rb +20 -11
  31. data/lib/nacha/record/batch_header_record_type.rb +5 -4
  32. data/lib/nacha/record/boc_entry_detail.rb +3 -2
  33. data/lib/nacha/record/ccd_addenda.rb +2 -2
  34. data/lib/nacha/record/ccd_entry_detail.rb +3 -2
  35. data/lib/nacha/record/cie_addenda.rb +2 -2
  36. data/lib/nacha/record/cie_entry_detail.rb +5 -3
  37. data/lib/nacha/record/ctx_addenda.rb +2 -2
  38. data/lib/nacha/record/ctx_corporate_entry_detail.rb +2 -2
  39. data/lib/nacha/record/detail_record_type.rb +4 -1
  40. data/lib/nacha/record/dne_addenda.rb +2 -2
  41. data/lib/nacha/record/dne_entry_detail.rb +6 -4
  42. data/lib/nacha/record/enr_addenda.rb +3 -2
  43. data/lib/nacha/record/enr_entry_detail.rb +4 -3
  44. data/lib/nacha/record/fifth_iat_addenda.rb +8 -4
  45. data/lib/nacha/record/file_control.rb +9 -5
  46. data/lib/nacha/record/file_control_record_type.rb +1 -1
  47. data/lib/nacha/record/file_header.rb +12 -8
  48. data/lib/nacha/record/file_header_record_type.rb +1 -1
  49. data/lib/nacha/record/filler.rb +3 -3
  50. data/lib/nacha/record/filler_record_type.rb +3 -1
  51. data/lib/nacha/record/first_iat_addenda.rb +4 -3
  52. data/lib/nacha/record/fourth_iat_addenda.rb +7 -4
  53. data/lib/nacha/record/iat_batch_header.rb +5 -3
  54. data/lib/nacha/record/iat_entry_detail.rb +9 -6
  55. data/lib/nacha/record/iat_foreign_coorespondent_bank_information_addenda.rb +10 -6
  56. data/lib/nacha/record/iat_remittance_information_addenda.rb +3 -2
  57. data/lib/nacha/record/mte_addenda.rb +4 -3
  58. data/lib/nacha/record/mte_entry_detail.rb +5 -3
  59. data/lib/nacha/record/pop_entry_detail.rb +3 -2
  60. data/lib/nacha/record/pos_addenda.rb +6 -3
  61. data/lib/nacha/record/pos_entry_detail.rb +5 -3
  62. data/lib/nacha/record/ppd_addenda.rb +3 -2
  63. data/lib/nacha/record/ppd_entry_detail.rb +5 -3
  64. data/lib/nacha/record/rck_entry_detail.rb +3 -2
  65. data/lib/nacha/record/second_iat_addenda.rb +3 -2
  66. data/lib/nacha/record/seventh_iat_addenda.rb +3 -2
  67. data/lib/nacha/record/shr_addenda.rb +5 -3
  68. data/lib/nacha/record/shr_entry_detail.rb +3 -2
  69. data/lib/nacha/record/sixth_iat_addenda.rb +5 -3
  70. data/lib/nacha/record/tel_entry_detail.rb +5 -3
  71. data/lib/nacha/record/third_iat_addenda.rb +3 -2
  72. data/lib/nacha/record/trc_entry_detail.rb +3 -2
  73. data/lib/nacha/record/trx_addenda.rb +3 -2
  74. data/lib/nacha/record/trx_entry_detail.rb +5 -3
  75. data/lib/nacha/record/validations/field_validations.rb +26 -14
  76. data/lib/nacha/record/validations/record_validations.rb +2 -1
  77. data/lib/nacha/record/web_addenda.rb +3 -2
  78. data/lib/nacha/record/web_entry_detail.rb +5 -3
  79. data/lib/nacha/record/xck_entry_detail.rb +3 -2
  80. data/lib/nacha/version.rb +4 -1
  81. data/lib/nacha.rb +21 -14
  82. data/nacha.gemspec +14 -16
  83. 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.rb'
5
- require 'nacha/record/addenda_record_type.rb'
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.rb'
5
- require 'nacha/record/detail_record_type.rb'
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.rb'
5
- require 'nacha/record/addenda_record_type.rb'
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.rb'
5
- require 'nacha/record/detail_record_type.rb'
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', position: 59..74
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 base
8
+ def self.included(base)
9
9
  base.extend ClassMethods
10
10
  end
11
+
11
12
  module ClassMethods
12
- def check_field_error(field, message = nil, condition = nil)
13
- (block_given? ? yield : condition) || (field.add_error("'#{field.name}' '#{field}' is invalid") && false)
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 field
17
- check_field_error(field, "'#{field.name}' '#{field}' should be one of #{SERVICE_CLASS_CODES.join(', ')}") {
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 field
23
- check_field_error(field, "'#{field.name}' '#{field}' should be one of #{STANDARD_ENTRY_CLASS_CODES.join(', ')}") {
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 field
29
- check_field_error(field, "'#{field.name}' '#{field}' should be one of #{TRANSACTION_CODES.join(', ')}") {
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 field
46
+ def valid_receiving_dfi_identification(field)
35
47
  check_field_error(field) { field.valid? }
36
48
  end
37
49
 
38
- def valid_filler field
50
+ def valid_filler(field)
39
51
  check_field_error(field) { field.to_s == ('9' * 93) }
40
52
  end
41
53
  end
@@ -5,9 +5,10 @@ module Nacha
5
5
  module Record
6
6
  module Validations
7
7
  module RecordValidations
8
- def self.included base
8
+ def self.included(base)
9
9
  base.extend ClassMethods
10
10
  end
11
+
11
12
  module ClassMethods
12
13
  end
13
14
  end
@@ -1,11 +1,12 @@
1
1
  # coding: utf-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'nacha/record/base.rb'
5
- require 'nacha/record/addenda_record_type.rb'
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.rb'
5
- require 'nacha/record/detail_record_type.rb'
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', position: 40..54
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.rb'
5
- require 'nacha/record/detail_record_type.rb'
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
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nacha
4
- VERSION = '0.1.10'
4
+ module Version
5
+ STRING = '0.1.14'
6
+ end
7
+ VERSION = Version::STRING
5
8
  end
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
- COR CTX DNE ENR IAT POP POS SHR
26
- MTE RCK TEL TRC TRX WEB XCK].freeze
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
- 43 44 51 52 53 54 81 83 85 87].freeze
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
- 48 49 55 56 82 84 86 88].freeze
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 strings representing the names of ACH record classes.
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, typically a FileHeader record
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
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
94
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
95
- tr('-', '_').
96
- downcase
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 =~ /\/spec\//}.each do |file|
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 =~ /\/spec\//}.each do |file|
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 "bundler"
27
- # Conditionally add byebug only for MRI Ruby
28
- if RUBY_ENGINE == 'ruby'
29
- spec.add_development_dependency "byebug"
30
- end
31
- if RUBY_ENGINE == 'jruby'
32
- spec.add_development_dependency "pry-nav"
33
- end
34
- spec.add_development_dependency "pry"
35
- spec.add_development_dependency "factory_bot"
36
- spec.add_development_dependency "gitlab-styles"
37
- spec.add_development_dependency "guard"
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.10
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-02 00:00:00.000000000 Z
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: pry
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: factory_bot
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: gitlab-styles
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: guard-rspec
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: '0'
352
+ version: 3.2.8
319
353
  required_rubygems_version: !ruby/object:Gem::Requirement
320
354
  requirements:
321
355
  - - ">="