mt940_parser 1.4.2 → 1.5.0

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
  SHA1:
3
- metadata.gz: 17596b27612729b7edd98c55da6ae9476f209a87
4
- data.tar.gz: 393359bde883692d86ceea4a39db17e5e5c2999c
3
+ metadata.gz: 42cb84cc227bceddd6ea91f92716e4530f67e2f0
4
+ data.tar.gz: bfcd87183ea9c989dd2e33512751e1698302ccf9
5
5
  SHA512:
6
- metadata.gz: 550267032a9d3b097fece386a4644e9bfc1dd3b9c62c6fdd385b3d41b84705e0b1bccf75abc5da7f4ba1b1f65f176b7ba3ffe90365a84877a6bae0aa10dfe775
7
- data.tar.gz: 4c26dda885e42c91eb0e8d1553195d556b867b2a35f029af54b4df7535256ad4d9c68110ad53d06ba93f70b8dd7232c8f72536faab37a8d72ed1117cc80eca8d
6
+ metadata.gz: 1c0f8c13f8251f60fa13e71504f5f7966dc6faed579f39453a95853e1c1eb8711a8b9cdabec34515be30a62087f6f88ce5a625051f211df2b6a111715e87b881
7
+ data.tar.gz: 653f72213b46828efd6812333d02eeb01da1147f63d3fb973650e9b4d5b71f89011ab33d5e9225f00126ceac888d3b0afdbdf26aec95763c6db7dee451bf1a1c
@@ -1,7 +1,9 @@
1
+ sudo: false
1
2
  rvm:
2
3
  - 2.0
3
4
  - 2.1
4
5
  - 2.2
6
+ - 2.3.0
5
7
  - ruby-head
6
8
  - jruby-head
7
9
  matrix:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.2
1
+ 1.5.0
@@ -18,7 +18,7 @@ class MT940
18
18
  klass = {
19
19
  '20' => Job,
20
20
  '21' => Reference,
21
- '25' => Account,
21
+ '25' => AccountIdentification,
22
22
  '28' => Statement,
23
23
  '60' => AccountBalance,
24
24
  '61' => StatementLine,
@@ -80,6 +80,30 @@ class MT940
80
80
  end
81
81
 
82
82
  # 25
83
+ class AccountIdentification < Field
84
+ attr_reader :account_identifier
85
+ CONTENT = /(.{1,35})/ #any 35 chars (35x from the docs)
86
+
87
+ def parse_content(content)
88
+ content.match(CONTENT)
89
+ @account_identifier = $1
90
+ end
91
+
92
+ # fail over to the old Account class
93
+ def method_missing(method, *args, &block)
94
+ @fail_over_implementation ||= Account.new(@modifier, @content)
95
+ value = @fail_over_implementation.send(method)
96
+ warn "[DEPRECATION]:"
97
+ warn "You used '#{method}' on the Account/AccountIdentification class"
98
+ warn "This field is not part of the MT940 specification but implementation specific"
99
+ warn "Please use the 'account_identifier' and parse yourself."
100
+
101
+ value
102
+ end
103
+ end
104
+
105
+ # 25 - Legacy
106
+ # This class is deprecated as it does not match the spec.
83
107
  class Account < Field
84
108
  attr_reader :bank_code, :account_number, :account_currency
85
109
 
@@ -16,7 +16,7 @@ class MT940
16
16
  end
17
17
 
18
18
  def initialize(lines)
19
- @account = lines.find { |line| line.class == MT940::Account }
19
+ @account = lines.find { |line| line.class == MT940::AccountIdentification }
20
20
  @statement_lines = []
21
21
  lines.each_with_index do |line, i|
22
22
  next unless line.class == MT940::StatementLine
@@ -1,7 +1,5 @@
1
1
  ---
2
- - - !ruby/object:MT940::Account
2
+ - - !ruby/object:MT940::AccountIdentification
3
3
  modifier:
4
4
  content: 51210600/9223382012EUR
5
- bank_code: '51210600'
6
- account_number: '9223382012'
7
- account_currency: EUR
5
+ account_identifier: 51210600/9223382012EUR
@@ -3,12 +3,10 @@
3
3
  modifier:
4
4
  content: T089413946000001
5
5
  reference: T089413946000001
6
- - !ruby/object:MT940::Account
6
+ - !ruby/object:MT940::AccountIdentification
7
7
  modifier:
8
8
  content: 50880050/0194774600888
9
- bank_code: '50880050'
10
- account_number: 0194774600888
11
- account_currency:
9
+ account_identifier: 50880050/0194774600888
12
10
  - !ruby/object:MT940::Statement
13
11
  modifier: C
14
12
  content: 00004/00001
@@ -192,12 +190,10 @@
192
190
  modifier:
193
191
  content: T089413956000001
194
192
  reference: T089413956000001
195
- - !ruby/object:MT940::Account
193
+ - !ruby/object:MT940::AccountIdentification
196
194
  modifier:
197
195
  content: 50880050/0194777100888
198
- bank_code: '50880050'
199
- account_number: 0194777100888
200
- account_currency:
196
+ account_identifier: 50880050/0194777100888
201
197
  - !ruby/object:MT940::Statement
202
198
  modifier: C
203
199
  content: 00004/00001
@@ -297,12 +293,10 @@
297
293
  modifier:
298
294
  content: T089413966000001
299
295
  reference: T089413966000001
300
- - !ruby/object:MT940::Account
296
+ - !ruby/object:MT940::AccountIdentification
301
297
  modifier:
302
298
  content: 50880050/0194778300888
303
- bank_code: '50880050'
304
- account_number: 0194778300888
305
- account_currency:
299
+ account_identifier: 50880050/0194778300888
306
300
  - !ruby/object:MT940::Statement
307
301
  modifier: C
308
302
  content: 00004/00001
@@ -477,12 +471,10 @@
477
471
  modifier:
478
472
  content: T089413976000001
479
473
  reference: T089413976000001
480
- - !ruby/object:MT940::Account
474
+ - !ruby/object:MT940::AccountIdentification
481
475
  modifier:
482
476
  content: 50880050/0194779500888
483
- bank_code: '50880050'
484
- account_number: 0194779500888
485
- account_currency:
477
+ account_identifier: 50880050/0194779500888
486
478
  - !ruby/object:MT940::Statement
487
479
  modifier: C
488
480
  content: 00004/00001
@@ -605,12 +597,10 @@
605
597
  modifier:
606
598
  content: T089413986000001
607
599
  reference: T089413986000001
608
- - !ruby/object:MT940::Account
600
+ - !ruby/object:MT940::AccountIdentification
609
601
  modifier:
610
602
  content: 50880050/0194780100888
611
- bank_code: '50880050'
612
- account_number: 0194780100888
613
- account_currency:
603
+ account_identifier: 50880050/0194780100888
614
604
  - !ruby/object:MT940::Statement
615
605
  modifier: C
616
606
  content: 00004/00001
@@ -751,12 +741,10 @@
751
741
  modifier:
752
742
  content: T089413996000001
753
743
  reference: T089413996000001
754
- - !ruby/object:MT940::Account
744
+ - !ruby/object:MT940::AccountIdentification
755
745
  modifier:
756
746
  content: 50880050/0194780101888
757
- bank_code: '50880050'
758
- account_number: 0194780101888
759
- account_currency:
747
+ account_identifier: 50880050/0194780101888
760
748
  - !ruby/object:MT940::Statement
761
749
  modifier: C
762
750
  content: 00004/00001
@@ -818,12 +806,10 @@
818
806
  modifier:
819
807
  content: T089414006000001
820
808
  reference: T089414006000001
821
- - !ruby/object:MT940::Account
809
+ - !ruby/object:MT940::AccountIdentification
822
810
  modifier:
823
811
  content: 50880050/0194781300888
824
- bank_code: '50880050'
825
- account_number: 0194781300888
826
- account_currency:
812
+ account_identifier: 50880050/0194781300888
827
813
  - !ruby/object:MT940::Statement
828
814
  modifier: C
829
815
  content: 00004/00001
@@ -985,12 +971,10 @@
985
971
  modifier:
986
972
  content: T089414006000002
987
973
  reference: T089414006000002
988
- - !ruby/object:MT940::Account
974
+ - !ruby/object:MT940::AccountIdentification
989
975
  modifier:
990
976
  content: 50880050/0194781300888
991
- bank_code: '50880050'
992
- account_number: 0194781300888
993
- account_currency:
977
+ account_identifier: 50880050/0194781300888
994
978
  - !ruby/object:MT940::Statement
995
979
  modifier: C
996
980
  content: 00004/00002
@@ -1158,12 +1142,10 @@
1158
1142
  modifier:
1159
1143
  content: T089414016000001
1160
1144
  reference: T089414016000001
1161
- - !ruby/object:MT940::Account
1145
+ - !ruby/object:MT940::AccountIdentification
1162
1146
  modifier:
1163
1147
  content: 50880050/0194782500888
1164
- bank_code: '50880050'
1165
- account_number: 0194782500888
1166
- account_currency:
1148
+ account_identifier: 50880050/0194782500888
1167
1149
  - !ruby/object:MT940::Statement
1168
1150
  modifier: C
1169
1151
  content: 00004/00001
@@ -1383,12 +1365,10 @@
1383
1365
  modifier:
1384
1366
  content: T089414016000002
1385
1367
  reference: T089414016000002
1386
- - !ruby/object:MT940::Account
1368
+ - !ruby/object:MT940::AccountIdentification
1387
1369
  modifier:
1388
1370
  content: 50880050/0194782500888
1389
- bank_code: '50880050'
1390
- account_number: 0194782500888
1391
- account_currency:
1371
+ account_identifier: 50880050/0194782500888
1392
1372
  - !ruby/object:MT940::Statement
1393
1373
  modifier: C
1394
1374
  content: 00004/00002
@@ -1490,12 +1470,10 @@
1490
1470
  modifier:
1491
1471
  content: T089414026000001
1492
1472
  reference: T089414026000001
1493
- - !ruby/object:MT940::Account
1473
+ - !ruby/object:MT940::AccountIdentification
1494
1474
  modifier:
1495
1475
  content: 50880050/0194783700888
1496
- bank_code: '50880050'
1497
- account_number: 0194783700888
1498
- account_currency:
1476
+ account_identifier: 50880050/0194783700888
1499
1477
  - !ruby/object:MT940::Statement
1500
1478
  modifier: C
1501
1479
  content: 00004/00001
@@ -1685,12 +1663,10 @@
1685
1663
  modifier:
1686
1664
  content: T089414026000002
1687
1665
  reference: T089414026000002
1688
- - !ruby/object:MT940::Account
1666
+ - !ruby/object:MT940::AccountIdentification
1689
1667
  modifier:
1690
1668
  content: 50880050/0194783700888
1691
- bank_code: '50880050'
1692
- account_number: 0194783700888
1693
- account_currency:
1669
+ account_identifier: 50880050/0194783700888
1694
1670
  - !ruby/object:MT940::Statement
1695
1671
  modifier: C
1696
1672
  content: 00004/00002
@@ -1878,12 +1854,10 @@
1878
1854
  modifier:
1879
1855
  content: T089414036000001
1880
1856
  reference: T089414036000001
1881
- - !ruby/object:MT940::Account
1857
+ - !ruby/object:MT940::AccountIdentification
1882
1858
  modifier:
1883
1859
  content: 50880050/0194784900888
1884
- bank_code: '50880050'
1885
- account_number: 0194784900888
1886
- account_currency:
1860
+ account_identifier: 50880050/0194784900888
1887
1861
  - !ruby/object:MT940::Statement
1888
1862
  modifier: C
1889
1863
  content: 00004/00001
@@ -2068,12 +2042,10 @@
2068
2042
  modifier:
2069
2043
  content: T089414036000002
2070
2044
  reference: T089414036000002
2071
- - !ruby/object:MT940::Account
2045
+ - !ruby/object:MT940::AccountIdentification
2072
2046
  modifier:
2073
2047
  content: 50880050/0194784900888
2074
- bank_code: '50880050'
2075
- account_number: 0194784900888
2076
- account_currency:
2048
+ account_identifier: 50880050/0194784900888
2077
2049
  - !ruby/object:MT940::Statement
2078
2050
  modifier: C
2079
2051
  content: 00004/00002
@@ -2173,12 +2145,10 @@
2173
2145
  modifier:
2174
2146
  content: T089414046000001
2175
2147
  reference: T089414046000001
2176
- - !ruby/object:MT940::Account
2148
+ - !ruby/object:MT940::AccountIdentification
2177
2149
  modifier:
2178
2150
  content: 50880050/0194784901888
2179
- bank_code: '50880050'
2180
- account_number: 0194784901888
2181
- account_currency:
2151
+ account_identifier: 50880050/0194784901888
2182
2152
  - !ruby/object:MT940::Statement
2183
2153
  modifier: C
2184
2154
  content: 00003/00001
@@ -2245,12 +2215,10 @@
2245
2215
  modifier:
2246
2216
  content: T089414056000001
2247
2217
  reference: T089414056000001
2248
- - !ruby/object:MT940::Account
2218
+ - !ruby/object:MT940::AccountIdentification
2249
2219
  modifier:
2250
2220
  content: 50880050/0194785000888
2251
- bank_code: '50880050'
2252
- account_number: 0194785000888
2253
- account_currency:
2221
+ account_identifier: 50880050/0194785000888
2254
2222
  - !ruby/object:MT940::Statement
2255
2223
  modifier: C
2256
2224
  content: 00004/00001
@@ -2421,12 +2389,10 @@
2421
2389
  modifier:
2422
2390
  content: T089414056000002
2423
2391
  reference: T089414056000002
2424
- - !ruby/object:MT940::Account
2392
+ - !ruby/object:MT940::AccountIdentification
2425
2393
  modifier:
2426
2394
  content: 50880050/0194785000888
2427
- bank_code: '50880050'
2428
- account_number: 0194785000888
2429
- account_currency:
2395
+ account_identifier: 50880050/0194785000888
2430
2396
  - !ruby/object:MT940::Statement
2431
2397
  modifier: C
2432
2398
  content: 00004/00002
@@ -2594,12 +2560,10 @@
2594
2560
  modifier:
2595
2561
  content: T089414056000003
2596
2562
  reference: T089414056000003
2597
- - !ruby/object:MT940::Account
2563
+ - !ruby/object:MT940::AccountIdentification
2598
2564
  modifier:
2599
2565
  content: 50880050/0194785000888
2600
- bank_code: '50880050'
2601
- account_number: 0194785000888
2602
- account_currency:
2566
+ account_identifier: 50880050/0194785000888
2603
2567
  - !ruby/object:MT940::Statement
2604
2568
  modifier: C
2605
2569
  content: 00004/00003
@@ -2696,12 +2660,10 @@
2696
2660
  modifier:
2697
2661
  content: T089414066000001
2698
2662
  reference: T089414066000001
2699
- - !ruby/object:MT940::Account
2663
+ - !ruby/object:MT940::AccountIdentification
2700
2664
  modifier:
2701
2665
  content: 50880050/0194785001888
2702
- bank_code: '50880050'
2703
- account_number: 0194785001888
2704
- account_currency:
2666
+ account_identifier: 50880050/0194785001888
2705
2667
  - !ruby/object:MT940::Statement
2706
2668
  modifier: C
2707
2669
  content: 00004/00001
@@ -2763,12 +2725,10 @@
2763
2725
  modifier:
2764
2726
  content: T089414076000001
2765
2727
  reference: T089414076000001
2766
- - !ruby/object:MT940::Account
2728
+ - !ruby/object:MT940::AccountIdentification
2767
2729
  modifier:
2768
2730
  content: 50880050/0194786200888
2769
- bank_code: '50880050'
2770
- account_number: 0194786200888
2771
- account_currency:
2731
+ account_identifier: 50880050/0194786200888
2772
2732
  - !ruby/object:MT940::Statement
2773
2733
  modifier: C
2774
2734
  content: 00004/00001
@@ -2891,12 +2851,10 @@
2891
2851
  modifier:
2892
2852
  content: T089414086000001
2893
2853
  reference: T089414086000001
2894
- - !ruby/object:MT940::Account
2854
+ - !ruby/object:MT940::AccountIdentification
2895
2855
  modifier:
2896
2856
  content: 50880050/0194787400888
2897
- bank_code: '50880050'
2898
- account_number: 0194787400888
2899
- account_currency:
2857
+ account_identifier: 50880050/0194787400888
2900
2858
  - !ruby/object:MT940::Statement
2901
2859
  modifier: C
2902
2860
  content: 00004/00001
@@ -3043,12 +3001,10 @@
3043
3001
  modifier:
3044
3002
  content: T089414096000001
3045
3003
  reference: T089414096000001
3046
- - !ruby/object:MT940::Account
3004
+ - !ruby/object:MT940::AccountIdentification
3047
3005
  modifier:
3048
3006
  content: 50880050/0194791600888
3049
- bank_code: '50880050'
3050
- account_number: 0194791600888
3051
- account_currency:
3007
+ account_identifier: 50880050/0194791600888
3052
3008
  - !ruby/object:MT940::Statement
3053
3009
  modifier: C
3054
3010
  content: 00004/00001
@@ -3264,12 +3220,10 @@
3264
3220
  modifier:
3265
3221
  content: T089414106000001
3266
3222
  reference: T089414106000001
3267
- - !ruby/object:MT940::Account
3223
+ - !ruby/object:MT940::AccountIdentification
3268
3224
  modifier:
3269
3225
  content: 50880050/0194791601888
3270
- bank_code: '50880050'
3271
- account_number: 0194791601888
3272
- account_currency:
3226
+ account_identifier: 50880050/0194791601888
3273
3227
  - !ruby/object:MT940::Statement
3274
3228
  modifier: C
3275
3229
  content: 00004/00001
@@ -3385,12 +3339,10 @@
3385
3339
  modifier:
3386
3340
  content: T089414116000001
3387
3341
  reference: T089414116000001
3388
- - !ruby/object:MT940::Account
3342
+ - !ruby/object:MT940::AccountIdentification
3389
3343
  modifier:
3390
3344
  content: 50880050/0194798900888
3391
- bank_code: '50880050'
3392
- account_number: 0194798900888
3393
- account_currency:
3345
+ account_identifier: 50880050/0194798900888
3394
3346
  - !ruby/object:MT940::Statement
3395
3347
  modifier: C
3396
3348
  content: 00004/00001
@@ -3448,12 +3400,10 @@
3448
3400
  modifier:
3449
3401
  content: T089414126000001
3450
3402
  reference: T089414126000001
3451
- - !ruby/object:MT940::Account
3403
+ - !ruby/object:MT940::AccountIdentification
3452
3404
  modifier:
3453
3405
  content: 50880050/0194799000888
3454
- bank_code: '50880050'
3455
- account_number: 0194799000888
3456
- account_currency:
3406
+ account_identifier: 50880050/0194799000888
3457
3407
  - !ruby/object:MT940::Statement
3458
3408
  modifier: C
3459
3409
  content: 00004/00001
@@ -3511,12 +3461,10 @@
3511
3461
  modifier:
3512
3462
  content: T089414136000001
3513
3463
  reference: T089414136000001
3514
- - !ruby/object:MT940::Account
3464
+ - !ruby/object:MT940::AccountIdentification
3515
3465
  modifier:
3516
3466
  content: 50880050/0194804000888
3517
- bank_code: '50880050'
3518
- account_number: 0194804000888
3519
- account_currency:
3467
+ account_identifier: 50880050/0194804000888
3520
3468
  - !ruby/object:MT940::Statement
3521
3469
  modifier: C
3522
3470
  content: 00001/00001
@@ -0,0 +1,32 @@
1
+ require_relative 'test_helper'
2
+
3
+ class TestAccountIdentification < Test::Unit::TestCase
4
+ def test_account_identifier
5
+ acc_ident = MT940::AccountIdentification.new('','12345690')
6
+ assert_equal '12345690', acc_ident.account_identifier
7
+ end
8
+
9
+ def test_account_identifier_gets_the_first_35_characters
10
+ content = '1' * 40
11
+ acc_ident = MT940::AccountIdentification.new('', content)
12
+ assert_equal 35, acc_ident.account_identifier.length
13
+ end
14
+
15
+ def test_DEPRECATED_bank_code
16
+ content = '123456789/987EUR'
17
+ acc_ident = MT940::AccountIdentification.new('', content)
18
+ assert_equal '123456789', acc_ident.bank_code
19
+ end
20
+
21
+ def test_DEPRECATED_account_number
22
+ content = '123456789/987EUR'
23
+ acc_ident = MT940::AccountIdentification.new('', content)
24
+ assert_equal '987', acc_ident.account_number
25
+ end
26
+
27
+ def test_DEPRECATED_account_currency
28
+ content = '123456789/987EUR'
29
+ acc_ident = MT940::AccountIdentification.new('', content)
30
+ assert_equal 'EUR', acc_ident.account_currency
31
+ end
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mt940_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thies C. Arntzen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-10 00:00:00.000000000 Z
12
+ date: 2016-04-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gem_hadar
@@ -105,6 +105,7 @@ files:
105
105
  - test/fixtures/sepa_snippet_broken.txt
106
106
  - test/fixtures/with_binary_character.txt
107
107
  - test/fixtures/with_binary_character.yml
108
+ - test/test_account_identifier.rb
108
109
  - test/test_customer_statement_message.rb
109
110
  - test/test_helper.rb
110
111
  - test/test_mt940.rb
@@ -132,11 +133,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
133
  version: '0'
133
134
  requirements: []
134
135
  rubyforge_project:
135
- rubygems_version: 2.4.8
136
+ rubygems_version: 2.5.1
136
137
  signing_key:
137
138
  specification_version: 4
138
139
  summary: MT940 parses account statements in the SWIFT MT940 format.
139
140
  test_files:
141
+ - test/test_account_identifier.rb
140
142
  - test/test_customer_statement_message.rb
141
143
  - test/test_helper.rb
142
144
  - test/test_mt940.rb