From d4e6cc804ae9f30a50437f38c1cd3255e053299c Mon Sep 17 00:00:00 2001 From: Tommy Date: Sat, 27 Mar 2021 13:47:07 +0800 Subject: [PATCH] auto detect message seperator Using the string between field 8= and 35= as seperator. Allow multiple char seperators. --- src/scripts/app/FixParser.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/scripts/app/FixParser.js b/src/scripts/app/FixParser.js index ec6b3e6..a8a1782 100644 --- a/src/scripts/app/FixParser.js +++ b/src/scripts/app/FixParser.js @@ -18,15 +18,31 @@ define( return parseFloat(beginStr.substr("FIX.".length)); }; + var splitFields = function(str) { + var result = str.match(/[^0-9a-zA-Z:\s]*8=FIX(?:[^=]{0,20}?)\D9=\d+(?.*?\D)35=/); + if (result !== null) { + return str.split(result.groups.delim); + } else + { + return str.split(/\||;|\x001|\[SOH\]||\^A/); + } + }; + FixParser.prototype.parse = function(str) { // Create a sequence of fields - var regex = /([0-9]+)=([^|;\001]*)/g, + var regex = /([0-9]+)=(.*)/, fields = [], result; var fixVersion = 'unknown'; - while (result = regex.exec(str)) { + var splits = splitFields(str); + for (var i=0; i