diff --git a/lib/message-extractor.js b/lib/message-extractor.js index 3325ff6..d7c5201 100644 --- a/lib/message-extractor.js +++ b/lib/message-extractor.js @@ -22,9 +22,11 @@ module.exports = (rules, originalMessage, isDebug) => { const rule = rules[i]; // eslint-disable-next-line no-continue - if (rule.disable || rule.disabled) continue; + if (!rule || !rule.pattern || rule.disable || rule.disabled) continue; - const re = new RegExp(rule.pattern, rule.flags || ''); + const patternConstructorName = rule.pattern.constructor.name; + const re = patternConstructorName === 'RegExp' ? rule.pattern + : new RegExp(rule.pattern, rule.flags || ''); const matches = msg.match(re); let result = matches && matches[rule.idx]; diff --git a/lib/pattern-rules.js b/lib/pattern-rules.js index 8e14a5c..f8a5233 100644 --- a/lib/pattern-rules.js +++ b/lib/pattern-rules.js @@ -4,14 +4,14 @@ module.exports = { sn: [ { - pattern: '(?:^|,|\\.|;|\\s)SN\\s*[=: ]\\s*(.+?)(?:;|$)', + pattern: /(?:^|,|\.|;|\s)SN\s*[=: ]\s*(.+?)(?:;|$)/, idx: 1, disable: false, }, ], price: [ { - pattern: '(?:,|\\.|;|\\s)(?:HRG|HARGA)\\s*[=: ]\\s*(?:RP)*\\s*(([0-9]|\\.||,)+)', + pattern: /(?:,|\.|;|\s)(?:HRG|HARGA)\s*[=: ]\s*(?:(?:RP|Rp)\.*)*\s*(([0-9]|\.||,)+)/, idx: 1, disable: false, postprocessing: (val) => (val || '').replace(/[,.]/g, ''), @@ -19,7 +19,7 @@ module.exports = { ], balance: [ { - pattern: '(?:,|\\.|;|\\s)SAL(?:DO)*\\s*[=: ]\\s*(?:RP)*\\s*(([0-9]|\\.||,)+)', + pattern: /(?:,|\.|;|\s)SAL(?:DO)*\s*[=: ]\s*(?:(?:RP|Rp)\.*)*\s*(([0-9]|\.||,)+)/, idx: 1, disable: false, postprocessing: (val) => (val || '').replace(/[,.]/g, ''),