Skip to content

Commit

Permalink
Restructuring the code to be more readable
Browse files Browse the repository at this point in the history
  • Loading branch information
realityking committed Mar 17, 2018
1 parent ccf27cf commit add54e4
Showing 1 changed file with 31 additions and 30 deletions.
61 changes: 31 additions & 30 deletions lib/parser.js
@@ -1,16 +1,15 @@
const parse = function (trace) {
const dir = function (ident) {
if (ident === '=>') {
return 'request';
}
if (ident === '<=') {
return 'response';
}
};
function dir(ident) {
if (ident === '=>') {
return 'request';
}
if (ident === '<=') {
return 'response';
}
}

function parse(trace) {
// better regex, please, start here:
// http://scriptular.com/#%5E(%3F%3A%5Ba-z0-9%5D%7B4%7D%3A)%20((%3F%3A%5Ba-z0-9%5D%7B2%7D%20)%7B1%2C16%7D)%7C%7C%7C%7C%7C%7C%7C%7C%5B%2200a0%3A%2011%2022%2033%2044%2055%2066%2077%2088%2099%2010%2011%2012%2013%2014%2015%2016%2017%20%20%7B.%20%20%5C%22headers%5C%22%3A%20%7B%22%5D

const traceLines = trace.split('\n');
const dataPattern = /^(?:[a-z0-9]{4}:) ((?:[a-z0-9]{2} ){1,16})/;
const dirPattern = /^(=>|<=)/;
Expand All @@ -35,7 +34,6 @@ const parse = function (trace) {
}
}


// split lines by spaces and make array of ASCII hex bytes
const asciiHexBuffer = { request: [], response: [] };
for (const [direction, data] of asciiHexSets) {
Expand All @@ -62,14 +60,13 @@ const parse = function (trace) {
}
}

const output = {};
output.request = stringBuffer.request.join('');
output.response = stringBuffer.response.join('');
return output;
};

return {
request: stringBuffer.request.join(''),
response: stringBuffer.response.join('')
};
}

const parseToString = function (trace) {
function parseToString(trace) {
const message = parse(trace);
let output = '';

Expand All @@ -89,34 +86,38 @@ const parseToString = function (trace) {
output += response.join('\r\n');
output += '\n';
return output;
};
}


const parseBackRequestAndResponseFromString = function (string) {
const output = {};
function parseBackRequestAndResponseFromString(string) {
const output = {request: '', response: ''};

const request = [];
const stringLines = string.split('\r\n');
for (const line of stringLines) {
if (/^> /.test(line)) { request.push(line.replace(/^> /, '')); }
if (line.startsWith('> ')) {
request.push(line.replace(/^> /, ''));
}
}

// removing trailing LF
output.request = request.join('\r\n').replace(/\n$/, '');

const response = [];
for (const line of stringLines) {
if (/^< /.test(line)) { response.push(line.replace(/^< /, '')); }
if (line.startsWith('< ')) {
response.push(line.replace(/^< /, ''));
}
}

// removing trailing LF
output.response = response.join('\r\n').replace(/\n$/, '');

return output;
};
}


module.exports.parseBackRequestAndResponseFromString = parseBackRequestAndResponseFromString;
module.exports.parseBack = parseBackRequestAndResponseFromString;
module.exports.parseToString = parseToString;
module.exports.parse = parse;
module.exports = {
parseBackRequestAndResponseFromString,
parseBack: parseBackRequestAndResponseFromString,
parseToString,
parse
};

0 comments on commit add54e4

Please sign in to comment.