mt940_parser 1.4.2 → 1.5.0

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: 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