krl-parser
Advanced tools
Comparing version 0.0.1 to 0.0.2
@@ -54,16 +54,25 @@ // Generated automatically by nearley | ||
function(data, loc){ | ||
var ast = { | ||
type: 'rule', | ||
loc: loc, | ||
name: data[2].src | ||
}; | ||
if(data[6]){ | ||
ast.body = data[6]; | ||
} | ||
var ast = data[6] || {}; | ||
ast.type = 'rule'; | ||
ast.loc = loc; | ||
ast.name = data[2].src; | ||
return ast; | ||
} | ||
}, | ||
{"name": "rule_body", "symbols": ["_"], "postprocess": id}, | ||
{"name": "rule_body", "symbols": ["select_when"]}, | ||
{"name": "rule_body", "symbols": ["select_when", "__", "event_action"]}, | ||
{"name": "rule_body", "symbols": ["_"], "postprocess": noop}, | ||
{"name": "rule_body", "symbols": ["select_when"], "postprocess": | ||
function(data, loc){ | ||
return { | ||
select: data[0] | ||
}; | ||
} | ||
}, | ||
{"name": "rule_body", "symbols": ["select_when", "__", "event_action"], "postprocess": | ||
function(data, loc){ | ||
return { | ||
select: data[0], | ||
actions: [data[2]] | ||
}; | ||
} | ||
}, | ||
{"name": "select_when$string$1", "symbols": [{"literal":"s"}, {"literal":"e"}, {"literal":"l"}, {"literal":"e"}, {"literal":"c"}, {"literal":"t"}], "postprocess": function joiner(d) {return d.join('');}}, | ||
@@ -70,0 +79,0 @@ {"name": "select_when$string$2", "symbols": [{"literal":"w"}, {"literal":"h"}, {"literal":"e"}, {"literal":"n"}], "postprocess": function joiner(d) {return d.join('');}}, |
{ | ||
"name": "krl-parser", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"description": "Parse KRL source code into an AST", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
19
tests.js
@@ -7,3 +7,3 @@ var _ = require('lodash'); | ||
if(_.isArray(ast)){ | ||
return _.map(_.compact(ast), rmLoc); | ||
return _.map(ast, rmLoc); | ||
} | ||
@@ -23,3 +23,3 @@ if(_.isObject(ast)){ | ||
src += '}'; | ||
return parser(src)[0].rules[0].body; | ||
return parser(src)[0].rules[0]; | ||
}; | ||
@@ -104,3 +104,3 @@ | ||
var asertRuleAST = function(rule_body, expected){ | ||
var ast = parseRuleBody(rule_body)[0]; | ||
var ast = parseRuleBody(rule_body).select; | ||
t.equals(ast.type, 'select_when'); | ||
@@ -151,6 +151,11 @@ t.deepEquals(rmLoc(ast.event_expressions), expected); | ||
var ast = parseRuleBody('select when d a\n' + rule_body); | ||
t.deepEquals(rmLoc(ast), [ | ||
{type: 'select_when', event_expressions: mkEventExp('d', 'a')}, | ||
expected | ||
]); | ||
var exp_ast = { | ||
name: ast.name, | ||
type: ast.type, | ||
select: {type: 'select_when', event_expressions: mkEventExp('d', 'a')}, | ||
}; | ||
if(_.size(expected) > 0){ | ||
exp_ast.actions = [expected]; | ||
} | ||
t.deepEquals(rmLoc(ast), exp_ast); | ||
}; | ||
@@ -157,0 +162,0 @@ |
Sorry, the diff of this file is not supported yet
19606
382