All files / app/lib parse.js

94.44% Statements 17/18
83.33% Branches 5/6
100% Functions 2/2
93.75% Lines 15/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33          2x 2x     94x 94x 130x 130x 10x   120x 2x   118x 118x           94x     2x 94x 94x    
// Parse patterns in string form into the form we use for interpreting
// (and later, for compiling).
 
'use strict';
 
var ast = require('./pattern');
var parser = require('./parser');
 
function parse_pattern(string) {
  var segments = parser.parse(string);
  for (var i=0, len = segments.length; i < len; i++) {
    var s = segments[i];
    if (s.string != undefined) {
      segments[i] = ast.string(s.string);
    }
    else if (s.value != undefined) {
      segments[i] = ast.value(s.value, s.size, s.specifiers);
    }
    else Eif (s.name != undefined) {
      segments[i] = ast.variable(s.name, s.size, s.specifiers);
    }
    else {
      throw "Unknown segment " + s;
    }
  }
  return segments;
}
 
module.exports.parse = function() {
  var str = [].join.call(arguments, ',');
  return parse_pattern(str);
};