norma43_parser 1.0.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE.md +13 -0
  3. data/.github/PULL_REQUEST_TEMPLATE.md +5 -0
  4. data/.github/workflows/ci.yml +22 -0
  5. data/.rubocop.yml +234 -0
  6. data/CHANGELOG.md +43 -0
  7. data/Gemfile +7 -1
  8. data/Gemfile.lock +72 -0
  9. data/README.md +6 -4
  10. data/Rakefile +2 -0
  11. data/lib/norma43/line_handlers.rb +2 -3
  12. data/lib/norma43/line_parsers/account_end.rb +18 -0
  13. data/lib/norma43/line_parsers/account_start.rb +18 -0
  14. data/lib/norma43/line_parsers/additional_currency.rb +12 -0
  15. data/lib/norma43/line_parsers/additional_item.rb +11 -0
  16. data/lib/norma43/line_parsers/document_end.rb +9 -0
  17. data/lib/norma43/line_parsers/document_start.rb +13 -0
  18. data/lib/norma43/line_parsers/file_format_validator.rb +15 -12
  19. data/lib/norma43/line_parsers/line_parser.rb +29 -28
  20. data/lib/norma43/line_parsers/transaction.rb +18 -0
  21. data/lib/norma43/line_processors.rb +2 -2
  22. data/lib/norma43/models.rb +5 -4
  23. data/lib/norma43/parser.rb +38 -42
  24. data/lib/norma43/utils/contexts.rb +40 -37
  25. data/lib/norma43/utils/string_helpers.rb +10 -6
  26. data/lib/norma43/utils/typecaster.rb +16 -12
  27. data/lib/norma43/version.rb +3 -1
  28. data/lib/norma43.rb +9 -3
  29. data/norma43_parser.gemspec +10 -10
  30. data/spec/example1_parse_spec.rb +12 -11
  31. data/spec/norma43/line_parsers/account_end_spec.rb +1 -1
  32. data/spec/norma43/line_parsers/account_start_spec.rb +1 -2
  33. data/spec/norma43/line_parsers/additional_currency_spec.rb +1 -1
  34. data/spec/norma43/line_parsers/additional_items_spec.rb +1 -1
  35. data/spec/norma43/line_parsers/document_end_spec.rb +1 -2
  36. data/spec/norma43/line_parsers/document_start_spec.rb +1 -1
  37. data/spec/norma43/line_parsers/transaction_spec.rb +1 -3
  38. data/spec/norma43/line_processors/account_end_spec.rb +6 -8
  39. data/spec/norma43/line_processors/account_start_spec.rb +8 -9
  40. data/spec/norma43/line_processors/additional_currency_spec.rb +6 -7
  41. data/spec/norma43/line_processors/additional_items_spec.rb +6 -7
  42. data/spec/norma43/line_processors/document_end_spec.rb +5 -6
  43. data/spec/norma43/line_processors/document_start_spec.rb +3 -4
  44. data/spec/norma43/line_processors/transaction_spec.rb +6 -7
  45. data/spec/norma43/parser_spec.rb +5 -4
  46. data/spec/norma43_spec.rb +2 -0
  47. data/spec/spec_helper.rb +1 -4
  48. data/spec/support/shared_examples_for_values_line_parsers.rb +2 -0
  49. metadata +41 -44
  50. data/lib/norma43/line_parsers/line_parsers.rb +0 -69
@@ -1,5 +1,4 @@
1
- require "norma43/utils/contexts"
2
- require "norma43/line_processors"
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Norma43
5
4
  module LineProcessors
@@ -10,8 +9,8 @@ module Norma43
10
9
  let(:line) { double "Line", record_number: 35 }
11
10
 
12
11
  it "moves to the nearest document context" do
13
- document = Models::Document.new
14
- contexts = Contexts.new [Thing.new, document, Thing.new, Thing.new]
12
+ document = Norma43::Models::Document.new
13
+ contexts = Norma43::Utils::Contexts.new [Thing.new, document, Thing.new, Thing.new]
15
14
 
16
15
  DocumentEnd.call line, contexts
17
16
 
@@ -19,9 +18,9 @@ module Norma43
19
18
  end
20
19
 
21
20
  it "sets the number of lines on the document" do
22
- document = Models::Document.new
21
+ document = Norma43::Models::Document.new
23
22
 
24
- DocumentEnd.call line, Contexts.new(document)
23
+ DocumentEnd.call line, Norma43::Utils::Contexts.new(document)
25
24
 
26
25
  expect(document.number_of_lines).to eq 35
27
26
  end
@@ -1,5 +1,4 @@
1
- require "norma43/utils/contexts"
2
- require "norma43/line_processors"
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Norma43
5
4
  module LineProcessors
@@ -9,7 +8,7 @@ module Norma43
9
8
  it "instantiates a new document with the line attributes" do
10
9
  allow(Models::Document).to receive :new
11
10
 
12
- DocumentStart.call line, Contexts.new
11
+ DocumentStart.call line, Norma43::Utils::Contexts.new
13
12
 
14
13
  expect(Models::Document).to have_received(:new).with line.attributes
15
14
  end
@@ -18,7 +17,7 @@ module Norma43
18
17
  fake_document = double "Models::Document"
19
18
  allow(Models::Document).to receive(:new) { fake_document }
20
19
 
21
- contexts = DocumentStart.call line, Contexts.new
20
+ contexts = DocumentStart.call line, Norma43::Utils::Contexts.new
22
21
 
23
22
  expect(contexts.current).to be fake_document
24
23
  end
@@ -1,16 +1,15 @@
1
- require "norma43/utils/contexts"
2
- require "norma43/line_processors"
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Norma43
5
4
  module LineProcessors
6
5
  RSpec.describe "Transaction" do
7
- let(:line){ double "Line", attributes: {} }
8
- let(:account){ Models::Account.new }
9
- let(:contexts){ Contexts.new(
6
+ let(:line) { double "Line", attributes: {} }
7
+ let(:account) { Norma43::Models::Account.new }
8
+ let(:contexts) { Norma43::Utils::Contexts.new(
10
9
  [
11
- Models::Document.new ,
10
+ Norma43::Models::Document.new,
12
11
  account,
13
- Models::Transaction.new
12
+ Norma43::Models::Transaction.new
14
13
  ])
15
14
  }
16
15
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "norma43/parser"
2
4
 
3
5
  module Norma43
@@ -5,18 +7,17 @@ module Norma43
5
7
  describe "ensuring the file is valid" do
6
8
  it "accepts a valid file starting with document" do
7
9
  valid_file = "00TI222222 2011102504133012345601TL1Norma43 "
8
- expect{ Parser.new(valid_file) }.to_not raise_error
10
+ expect { Parser.new(valid_file) }.to_not raise_error
9
11
  end
10
12
 
11
13
  it "accepts a valid file starting with an account" do
12
-
13
14
  valid_file = "119999111101234567890408040409052000000001234569783MY ACCOUNT "
14
- expect{ Parser.new(valid_file) }.to_not raise_error
15
+ expect { Parser.new(valid_file) }.to_not raise_error
15
16
  end
16
17
 
17
18
  it "should start with 00 or 11" do
18
19
  invalid_file = "99TI222222 2011102504133012345601TL1Norma43 "
19
- expect{ Parser.new(invalid_file) }.to raise_error{ Norma43::InvalidFileFormatError }
20
+ expect { Parser.new(invalid_file) }.to raise_error { Norma43::InvalidFileFormatError }
20
21
  end
21
22
  end
22
23
  end
data/spec/norma43_spec.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "norma43"
2
4
 
3
5
  RSpec.describe Norma43 do
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,4 @@
1
- if ENV["CI"]
2
- require "codeclimate-test-reporter"
3
- CodeClimate::TestReporter.start
4
- end
1
+ # frozen_string_literal: true
5
2
 
6
3
  RSpec.configure do |config|
7
4
  config.order = :random
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.shared_examples "a values line parser" do
2
4
  describe "#values" do
3
5
  it "finds first value" do
metadata CHANGED
@@ -1,93 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: norma43_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sequra engineering
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-11 00:00:00.000000000 Z
11
+ date: 2022-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: virtus
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
20
- type: :development
19
+ version: '1.0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.5'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: zeitwerk
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
33
+ version: '2.0'
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: byebug
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '3.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: virtus
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '0'
83
- description:
68
+ version: '3.0'
69
+ description:
84
70
  email:
85
71
  - dev@sequra.es
86
72
  executables: []
87
73
  extensions: []
88
74
  extra_rdoc_files: []
89
75
  files:
76
+ - ".github/ISSUE_TEMPLATE.md"
77
+ - ".github/PULL_REQUEST_TEMPLATE.md"
78
+ - ".github/workflows/ci.yml"
79
+ - ".rubocop.yml"
80
+ - CHANGELOG.md
90
81
  - Gemfile
82
+ - Gemfile.lock
91
83
  - LICENSE
92
84
  - README.md
93
85
  - Rakefile
@@ -95,9 +87,15 @@ files:
95
87
  - doc/cuaderno_43_-_junio_2012.pdf
96
88
  - lib/norma43.rb
97
89
  - lib/norma43/line_handlers.rb
90
+ - lib/norma43/line_parsers/account_end.rb
91
+ - lib/norma43/line_parsers/account_start.rb
92
+ - lib/norma43/line_parsers/additional_currency.rb
93
+ - lib/norma43/line_parsers/additional_item.rb
94
+ - lib/norma43/line_parsers/document_end.rb
95
+ - lib/norma43/line_parsers/document_start.rb
98
96
  - lib/norma43/line_parsers/file_format_validator.rb
99
97
  - lib/norma43/line_parsers/line_parser.rb
100
- - lib/norma43/line_parsers/line_parsers.rb
98
+ - lib/norma43/line_parsers/transaction.rb
101
99
  - lib/norma43/line_processors.rb
102
100
  - lib/norma43/models.rb
103
101
  - lib/norma43/parser.rb
@@ -130,24 +128,23 @@ homepage: https://github.com/sequra/norma43_parser
130
128
  licenses:
131
129
  - MIT
132
130
  metadata: {}
133
- post_install_message:
131
+ post_install_message:
134
132
  rdoc_options: []
135
133
  require_paths:
136
134
  - lib
137
135
  required_ruby_version: !ruby/object:Gem::Requirement
138
136
  requirements:
139
- - - "~>"
137
+ - - ">="
140
138
  - !ruby/object:Gem::Version
141
- version: '2.0'
139
+ version: '2.6'
142
140
  required_rubygems_version: !ruby/object:Gem::Requirement
143
141
  requirements:
144
142
  - - ">="
145
143
  - !ruby/object:Gem::Version
146
144
  version: '0'
147
145
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.4.6
150
- signing_key:
146
+ rubygems_version: 3.2.32
147
+ signing_key:
151
148
  specification_version: 4
152
149
  summary: Parses banks transactions files specified in rule 43
153
150
  test_files:
@@ -1,69 +0,0 @@
1
- require "norma43/line_parsers/line_parser"
2
-
3
- module Norma43
4
- module LineParsers
5
- class DocumentStart < LineParser
6
- field :id, 2..13
7
- field :created_at, 14..33, :time
8
- field :delivery_number, 34..35, :integer
9
- field :file_type, 36..38
10
- field :name, 39..48
11
- end
12
-
13
- class DocumentEnd < LineParser
14
- field :record_number, 20..25, :integer
15
- end
16
-
17
- class AccountStart < LineParser
18
- field :bank_code, 2..5, :integer
19
- field :branch_code, 6..9, :integer
20
- field :account_number, 10..19, :integer
21
- field :start_date, 20..25, :date
22
- field :end_date, 26..31, :date
23
- field :balance_code, 32, :integer
24
- field :balance_amount, 33..46, :integer
25
- field :currency_code, 47..49, :integer
26
- field :information_mode_code, 50, :integer
27
- field :abbreviated_name, 51..76
28
- end
29
-
30
- class AccountEnd < LineParser
31
- field :bank_code, 2..5, :integer
32
- field :branch_code, 6..9, :integer
33
- field :account_number, 10..19, :integer
34
- field :debit_entries, 20..24, :integer
35
- field :debit_amount, 25..38, :integer
36
- field :credit_entries, 39..43, :integer
37
- field :credit_amount, 44..57, :integer
38
- field :balance_code, 58, :integer
39
- field :balance_amount, 59..72, :integer
40
- field :currency_code, 73..75, :integer
41
- end
42
-
43
- class Transaction < LineParser
44
- field :origin_branch_code, 6..9, :integer
45
- field :transaction_date, 10..15, :date
46
- field :value_date, 16..21, :date
47
- field :shared_item, 22..23, :integer
48
- field :own_item, 24..26, :integer
49
- field :amount_code, 27, :integer
50
- field :amount, 28..41, :integer
51
- field :document_number, 42..51, :integer
52
- field :reference_1, 52..63, :integer
53
- field :reference_2, 64..79
54
- end
55
-
56
- class AdditionalItem < LineParser
57
- field :data_code, 2..3, :integer
58
- field :item_1, 4..41
59
- field :item_2, 42..79
60
- end
61
-
62
- class AdditionalCurrency < LineParser
63
- field :data_code, 2..3, :integer
64
- field :currency_code, 4..6, :integer
65
- field :amount, 7..20, :integer
66
- field :free, 21..79
67
- end
68
- end
69
- end