cucumber to json
by Elvis de Freitas
HTML
<fieldset>
<legend>entrada cucumber</legend>
<textarea id="entradaCucumber"></textarea>
</fieldset>
<fieldset>
<legend>saida json</legend>
<textarea id="saidaJson" readonly></textarea>
</fieldset>
<br />
<button>converter</button>
CSS
textarea {
width: 100%;
height: 50px;
}
#saidaCucumber{
height: 200px;
}
JavaScript
$("button").click(function() {
log(true);
console.debug('starting.....');
var result = JSON.stringify(cucumber2Json($("#entradaCucumber").val()), null, ' ');
console.debug('conterted!');
log(result);
});
function cucumber2Json(cucumber){
var lines = cucumber.split(/[\n\r]+/), keys, result = [];
if(lines.length){
keys = cucumberHeader2JsonKeys(lines[0]);
if(lines.length > 1){
lines.shift();
lines.forEach(function(line){
result.push(cucumberBody2JsonKeys(keys, line));
});
}
}
return result;
}
function cucumberHeader2JsonKeys(cucumberHeader){
var keys = pipeline2Array(cucumberHeader);
console.debug('converted keys: ', keys);
return keys;
}
function cucumberBody2JsonKeys(keys, line){
var lineValues = pipeline2Array(line), o = {};
lineValues.forEach(function(value, i){
o[keys[i]] = value;
});
console.debug('converted body:', o);
return o;
}
function pipeline2Array(line){
var array = line.split(/ *\| */);
array.shift();
array.pop();
return array;
}
function log(text) {
var out = $("#saidaJson");
out.val(out.val() + text);
if(text === true){out.val('');}
}