Commit 6a0eba853d0b651ad47e5e704c6da8c1320633d9
1 parent
95d4f71b1e
Exists in
master
getDetailFromMessage support replace rules
Showing 4 changed files with 64 additions and 103 deletions Side-by-side Diff
index.js
1 | 1 | "use strict"; |
2 | 2 | |
3 | +const regexLooperReplace = require('tektrans-lib/regex-looper/replace'); | |
3 | 4 | const rcFromMsg = require('komodo-sdk/rc-from-msg'); |
4 | 5 | const organicRc = require('./rc'); |
5 | 6 | |
... | ... | @@ -111,16 +112,17 @@ function getBalanceFromMessage(msg, rule) { |
111 | 112 | return Number(result.replace(/\./g, '')); |
112 | 113 | } |
113 | 114 | |
114 | -function getDetailFromMessage(msg, rule) { | |
115 | +function getDetailFromMessage(msg, rule, replacementRules) { | |
115 | 116 | if (!rule) { |
116 | 117 | rule = { |
117 | 118 | pattern: " Detail:\\s*(.+?)\\s+Sisa [Ss]aldo", |
118 | 119 | match_idx: 1, |
119 | 120 | } |
120 | 121 | } |
121 | - | |
122 | - let result = extractFromMessage(msg, rule); | |
123 | - return (result || '').trim(); | |
122 | + | |
123 | + return ( | |
124 | + regexLooperReplace(extractFromMessage(msg, rule), replacementRules) || '' | |
125 | + ).trim() || null; | |
124 | 126 | } |
125 | 127 | |
126 | 128 | function splitPostpaidDetail(str) { |
package-lock.json
... | ... | @@ -138,7 +138,8 @@ |
138 | 138 | "arr-union": { |
139 | 139 | "version": "3.1.0", |
140 | 140 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", |
141 | - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" | |
141 | + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", | |
142 | + "optional": true | |
142 | 143 | }, |
143 | 144 | "array-flatten": { |
144 | 145 | "version": "1.1.1", |
... | ... | @@ -369,23 +370,6 @@ |
369 | 370 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", |
370 | 371 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" |
371 | 372 | }, |
372 | - "bytewise": { | |
373 | - "version": "1.1.0", | |
374 | - "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", | |
375 | - "integrity": "sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4=", | |
376 | - "requires": { | |
377 | - "bytewise-core": "^1.2.2", | |
378 | - "typewise": "^1.0.3" | |
379 | - } | |
380 | - }, | |
381 | - "bytewise-core": { | |
382 | - "version": "1.2.3", | |
383 | - "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", | |
384 | - "integrity": "sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI=", | |
385 | - "requires": { | |
386 | - "typewise-core": "^1.2" | |
387 | - } | |
388 | - }, | |
389 | 373 | "cache-base": { |
390 | 374 | "version": "1.0.1", |
391 | 375 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", |
... | ... | @@ -1839,7 +1823,8 @@ |
1839 | 1823 | "get-value": { |
1840 | 1824 | "version": "2.0.6", |
1841 | 1825 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", |
1842 | - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" | |
1826 | + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", | |
1827 | + "optional": true | |
1843 | 1828 | }, |
1844 | 1829 | "getpass": { |
1845 | 1830 | "version": "0.1.7", |
... | ... | @@ -2093,7 +2078,8 @@ |
2093 | 2078 | "is-buffer": { |
2094 | 2079 | "version": "1.1.6", |
2095 | 2080 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", |
2096 | - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" | |
2081 | + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", | |
2082 | + "optional": true | |
2097 | 2083 | }, |
2098 | 2084 | "is-data-descriptor": { |
2099 | 2085 | "version": "0.1.4", |
... | ... | @@ -2137,7 +2123,8 @@ |
2137 | 2123 | "is-extendable": { |
2138 | 2124 | "version": "0.1.1", |
2139 | 2125 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", |
2140 | - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" | |
2126 | + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", | |
2127 | + "optional": true | |
2141 | 2128 | }, |
2142 | 2129 | "is-extglob": { |
2143 | 2130 | "version": "2.1.1", |
... | ... | @@ -2184,6 +2171,7 @@ |
2184 | 2171 | "version": "2.0.4", |
2185 | 2172 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", |
2186 | 2173 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", |
2174 | + "optional": true, | |
2187 | 2175 | "requires": { |
2188 | 2176 | "isobject": "^3.0.1" |
2189 | 2177 | } |
... | ... | @@ -2220,7 +2208,8 @@ |
2220 | 2208 | "isobject": { |
2221 | 2209 | "version": "3.0.1", |
2222 | 2210 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", |
2223 | - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" | |
2211 | + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", | |
2212 | + "optional": true | |
2224 | 2213 | }, |
2225 | 2214 | "isstream": { |
2226 | 2215 | "version": "0.1.2", |
... | ... | @@ -2299,30 +2288,29 @@ |
2299 | 2288 | "basic-auth": "^2.0.0", |
2300 | 2289 | "body-parser": "^1.18.2", |
2301 | 2290 | "dot-object": "^1.7.0", |
2302 | - "express": "^4.16.3", | |
2291 | + "express": "^4.17.1", | |
2303 | 2292 | "express-session": "^1.15.6", |
2304 | 2293 | "fs-copy-file": "^2.1.2", |
2305 | 2294 | "json-query": "^2.2.2", |
2306 | 2295 | "lru-cache": "^4.1.1", |
2307 | - "macaddress": "^0.2.8", | |
2308 | - "moment": "^2.19.1", | |
2296 | + "macaddress": "^0.2.9", | |
2297 | + "moment": "^2.24.0", | |
2309 | 2298 | "node-machine-id": "^1.1.10", |
2310 | 2299 | "node-natural-sort": "^0.8.6", |
2311 | 2300 | "numeral": "^2.0.6", |
2312 | - "nunjucks": "^3.0.1", | |
2301 | + "nunjucks": "^3.2.1", | |
2313 | 2302 | "pkginfo": "^0.4.1", |
2314 | 2303 | "redis": "^2.8.0", |
2315 | - "request": "^2.81.0", | |
2304 | + "request": "^2.88.0", | |
2316 | 2305 | "sha1": "^1.1.1", |
2317 | 2306 | "simple-git": "^1.80.1", |
2318 | - "sort-object": "^3.0.2", | |
2319 | 2307 | "strftime": "^0.10.0", |
2320 | 2308 | "string-natural-compare": "^2.0.2", |
2321 | 2309 | "uniqid": "^4.1.1", |
2322 | 2310 | "uuid": "^3.1.0", |
2323 | - "winston": "^2.3.1", | |
2311 | + "winston": "^3.3.3", | |
2324 | 2312 | "winston-circular-buffer": "^1.0.0", |
2325 | - "winston-daily-rotate-file": "^1.4.6" | |
2313 | + "winston-daily-rotate-file": "^3.10.0" | |
2326 | 2314 | } |
2327 | 2315 | }, |
2328 | 2316 | "lcid": { |
... | ... | @@ -3324,61 +3312,6 @@ |
3324 | 3312 | } |
3325 | 3313 | } |
3326 | 3314 | }, |
3327 | - "sort-asc": { | |
3328 | - "version": "0.2.0", | |
3329 | - "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", | |
3330 | - "integrity": "sha1-AKSelHvCXVEL/eLLuN/9qfUOsvw=" | |
3331 | - }, | |
3332 | - "sort-desc": { | |
3333 | - "version": "0.2.0", | |
3334 | - "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz", | |
3335 | - "integrity": "sha1-KAwb2vxld4h87brR7S5BwDeXZkY=" | |
3336 | - }, | |
3337 | - "sort-object": { | |
3338 | - "version": "3.0.2", | |
3339 | - "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.2.tgz", | |
3340 | - "integrity": "sha1-2vK2k/YR990qIbgrgF5OrCMPdV4=", | |
3341 | - "requires": { | |
3342 | - "bytewise": "^1.1.0", | |
3343 | - "get-value": "^2.0.2", | |
3344 | - "is-extendable": "^0.1.1", | |
3345 | - "sort-asc": "^0.2.0", | |
3346 | - "sort-desc": "^0.2.0", | |
3347 | - "union-value": "^0.2.3" | |
3348 | - }, | |
3349 | - "dependencies": { | |
3350 | - "extend-shallow": { | |
3351 | - "version": "2.0.1", | |
3352 | - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", | |
3353 | - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", | |
3354 | - "requires": { | |
3355 | - "is-extendable": "^0.1.0" | |
3356 | - } | |
3357 | - }, | |
3358 | - "set-value": { | |
3359 | - "version": "0.4.3", | |
3360 | - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", | |
3361 | - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", | |
3362 | - "requires": { | |
3363 | - "extend-shallow": "^2.0.1", | |
3364 | - "is-extendable": "^0.1.1", | |
3365 | - "is-plain-object": "^2.0.1", | |
3366 | - "to-object-path": "^0.3.0" | |
3367 | - } | |
3368 | - }, | |
3369 | - "union-value": { | |
3370 | - "version": "0.2.4", | |
3371 | - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz", | |
3372 | - "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=", | |
3373 | - "requires": { | |
3374 | - "arr-union": "^3.1.0", | |
3375 | - "get-value": "^2.0.6", | |
3376 | - "is-extendable": "^0.1.1", | |
3377 | - "set-value": "^0.4.3" | |
3378 | - } | |
3379 | - } | |
3380 | - } | |
3381 | - }, | |
3382 | 3315 | "source-map": { |
3383 | 3316 | "version": "0.5.7", |
3384 | 3317 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", |
... | ... | @@ -3559,6 +3492,10 @@ |
3559 | 3492 | } |
3560 | 3493 | } |
3561 | 3494 | }, |
3495 | + "tektrans-lib": { | |
3496 | + "version": "git+https://github.com/tektrans/tektrans-lib.git#fa043c81e72e10ee1232e1273fd1297c3d50a88d", | |
3497 | + "from": "git+https://github.com/tektrans/tektrans-lib.git" | |
3498 | + }, | |
3562 | 3499 | "text-table": { |
3563 | 3500 | "version": "0.2.0", |
3564 | 3501 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", |
... | ... | @@ -3584,6 +3521,7 @@ |
3584 | 3521 | "version": "0.3.0", |
3585 | 3522 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", |
3586 | 3523 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", |
3524 | + "optional": true, | |
3587 | 3525 | "requires": { |
3588 | 3526 | "kind-of": "^3.0.2" |
3589 | 3527 | }, |
... | ... | @@ -3592,6 +3530,7 @@ |
3592 | 3530 | "version": "3.2.2", |
3593 | 3531 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", |
3594 | 3532 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", |
3533 | + "optional": true, | |
3595 | 3534 | "requires": { |
3596 | 3535 | "is-buffer": "^1.1.5" |
3597 | 3536 | } |
... | ... | @@ -3678,19 +3617,6 @@ |
3678 | 3617 | "mime-types": "~2.1.24" |
3679 | 3618 | } |
3680 | 3619 | }, |
3681 | - "typewise": { | |
3682 | - "version": "1.0.3", | |
3683 | - "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", | |
3684 | - "integrity": "sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE=", | |
3685 | - "requires": { | |
3686 | - "typewise-core": "^1.2.0" | |
3687 | - } | |
3688 | - }, | |
3689 | - "typewise-core": { | |
3690 | - "version": "1.2.0", | |
3691 | - "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", | |
3692 | - "integrity": "sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU=" | |
3693 | - }, | |
3694 | 3620 | "uid-safe": { |
3695 | 3621 | "version": "2.1.5", |
3696 | 3622 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", |
package.json
... | ... | @@ -24,6 +24,7 @@ |
24 | 24 | "should": "^13.2.3" |
25 | 25 | }, |
26 | 26 | "dependencies": { |
27 | - "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git" | |
27 | + "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git", | |
28 | + "tektrans-lib": "git+https://github.com/tektrans/tektrans-lib.git" | |
28 | 29 | } |
29 | 30 | } |
test/main.js
... | ... | @@ -105,6 +105,38 @@ describe('#irs', function() { |
105 | 105 | irs.getDetailFromMessage('REFF#561744 CEK TAGIHAN PLN25 SUKSES IDPEL:172000147469 Detail: NAMA:MASJID-NURUL-IMAN/DAYA:900/TARIF:S2/JMLBLN:1BLN/PERIODE:201912/METERKINI:19627/METERLALU:19428/TAGIHAN:79340/ADM:2500/DENDA:0/TOTALTAGIHAN:81840 Sisa Saldo: 1.000.000 - 0 = 1.000.000 @2019/12/20 19:41:21') |
106 | 106 | .should.equal('NAMA:MASJID-NURUL-IMAN/DAYA:900/TARIF:S2/JMLBLN:1BLN/PERIODE:201912/METERKINI:19627/METERLALU:19428/TAGIHAN:79340/ADM:2500/DENDA:0/TOTALTAGIHAN:81840'); |
107 | 107 | }); |
108 | + | |
109 | + it('should return correct result with custom pattern', () => { | |
110 | + irs.getDetailFromMessage( | |
111 | + 'Cek Tagihan PLN SUKSES ke 520550410074, REFID: 520550410074/MASJID.. KATEGORI:S2/900 , PERIODE:092020, JUMLAH:1, TOTAL TAGIHAN : 72.010', | |
112 | + { | |
113 | + pattern: '(REFID: .*)$', | |
114 | + match_idx: 1, | |
115 | + }, | |
116 | + [ | |
117 | + { | |
118 | + pattern: ' *\\.\\.+ *', | |
119 | + replacement: '/', | |
120 | + flags: 'g', | |
121 | + }, | |
122 | + { | |
123 | + pattern: ' *, *', | |
124 | + replacement: '/', | |
125 | + flags: 'g', | |
126 | + }, | |
127 | + { | |
128 | + pattern: ' *: *', | |
129 | + replacement: ':', | |
130 | + flags: 'g', | |
131 | + }, | |
132 | + { | |
133 | + pattern: 'TOTAL TAGIHAN*', | |
134 | + replacement: 'TOTALTAGIHAN', | |
135 | + }, | |
136 | + ] | |
137 | + ) | |
138 | + .should.equal('REFID:520550410074/MASJID/KATEGORI:S2/900/PERIODE:092020/JUMLAH:1/TOTALTAGIHAN:72.010', 'TAJIRA PLN POSTPAID'); | |
139 | + }); | |
108 | 140 | }); |
109 | 141 | |
110 | 142 | describe('#splitPostpaidDetail', () => { |