node package manager
Painless code sharing. npm Orgs help your team discover, share, and reuse code. Create a free org »

cssauron-falafel

cssauron-falafel

cssauron bindings for falafel / esprima JS ASTs.

It shortens the esprima names they're a bit verbose.

It also supports .relation classes -- for example:

if(x) {
 
}
 
if(x > y) {
 
}
 
if(100) {
 
}

If we wanted to select all of the if tests ("x", "x > y", "100"), we could use the following selectors:

if > *:first-child                  // lil verbose!
.test                               // test the relation from the parent, not the node type
if > .test                          // more specific -- only ".test" relations from "if" statements.

node types

LabeledStatement	    ->	label
BlockStatement	        ->	block
Program	                ->	root
ExpressionStatement	    ->	expr
ConditionalExpression	->	ternary
IfStatement	        	->	if
BreakStatement	    	->	break
ContinueStatement		->	continue
WithStatement	    	->	with
SwitchStatement	    	->	switch
ReturnStatement	    	->	return
ThrowStatement	    	->	throw
TryStatement	    	->	try
WhileStatement	    	->	while
DoWhileStatement		->	do-while
ForStatement	    	->	for
ForInStatement	    	->	for-in
FunctionDeclaration		->	function
VariableDeclaration		->	variable-decl
VariableDeclarator		->	variable
LogicalExpression		->	binary
BinaryExpression		->	binary
AssignmentExpression	->	assign
ArrayExpression	    	->	array
ObjectExpression		->	object
ObjectKeyExpression		->	key
FunctionExpression		->	function
SequenceExpression		->	sequence
UpdateExpression		->	update
UnaryExpression	    	->	unary
CallExpression	    	->	call
NewExpression	    	->	new
MemberExpression		->	lookup
SwitchClause	    	->	case
CatchClause	        	->	catch
DebuggerStatement		->	debugger
ThisExpression	    	->	this
Identifier	        	->	id
Literal	            	->	literal

license

MIT