mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-10 21:01:41 +00:00
update
This commit is contained in:
116
node_modules/gonzales-pe/bin/gonzales.js
generated
vendored
Executable file
116
node_modules/gonzales-pe/bin/gonzales.js
generated
vendored
Executable file
@ -0,0 +1,116 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
var parseArgs = require('minimist');
|
||||
var gonzales = require('..');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var options = getOptions();
|
||||
|
||||
if (options.help) {
|
||||
displayHelp();
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
if (isSTDIN()) {
|
||||
processSTDIN();
|
||||
} else {
|
||||
processFile(options._[0]);
|
||||
}
|
||||
|
||||
function getOptions() {
|
||||
var parserOptions = {
|
||||
boolean: ['silent', 'simple'],
|
||||
alias: {
|
||||
help: 'h',
|
||||
syntax: 's',
|
||||
context: 'c'
|
||||
}
|
||||
};
|
||||
return parseArgs(process.argv.slice(2), parserOptions);
|
||||
}
|
||||
|
||||
function isSTDIN() {
|
||||
return options._.indexOf('-') !== -1;
|
||||
}
|
||||
|
||||
function processSTDIN() {
|
||||
var input = '';
|
||||
process.stdin.resume();
|
||||
process.stdin.setEncoding('utf8');
|
||||
process.stdin.on('data', data => {
|
||||
input += data;
|
||||
});
|
||||
process.stdin.on('end', () => {
|
||||
processInputData(input);
|
||||
});
|
||||
}
|
||||
|
||||
function processFile(file) {
|
||||
if (!file) process.exit(0);
|
||||
if (!options.syntax) options.syntax = path.extname(file).substring(1);
|
||||
var css = fs.readFileSync(file, 'utf-8').trim();
|
||||
processInputData(css);
|
||||
}
|
||||
|
||||
function processInputData(input) {
|
||||
try {
|
||||
var ast = gonzales.parse(input, {
|
||||
syntax: options.syntax,
|
||||
context: options.context
|
||||
});
|
||||
printTree(ast);
|
||||
process.exit(0);
|
||||
} catch (e) {
|
||||
if (!options.silent) process.stderr.write(e.toString());
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
function printTree(ast) {
|
||||
if (!options.simple) {
|
||||
var tree = ast.toJson();
|
||||
process.stdout.write(tree);
|
||||
} else {
|
||||
var lastLevel;
|
||||
|
||||
ast.traverse(function(node, i, parent, lastLevel) {
|
||||
var type = node.type;
|
||||
var spaces = new Array(lastLevel).join(' |');
|
||||
if (typeof node.content === 'string') {
|
||||
var content = JSON.stringify(node.content);
|
||||
console.log(spaces, '->', type);
|
||||
console.log(spaces, ' ', content);
|
||||
} else {
|
||||
console.log(spaces, '->', type);
|
||||
}
|
||||
});
|
||||
|
||||
var spaces = new Array(lastLevel).join(' -');
|
||||
console.log(spaces);
|
||||
}
|
||||
}
|
||||
|
||||
function displayHelp() {
|
||||
var help = [
|
||||
'NAME',
|
||||
' gonzlaes-pe — Parse a css file and print its parse tree in JSON',
|
||||
'',
|
||||
'SYNOPSIS',
|
||||
' gonzales-pe [options] file.js',
|
||||
' cat file.js | gonzales-pe [options] -',
|
||||
'',
|
||||
'OPTIONS',
|
||||
' -s, --syntax',
|
||||
' Syntax name: css, less, sass or scss.',
|
||||
' -c, --context',
|
||||
' Context of code part. See docs on node types for more info.',
|
||||
' --simple',
|
||||
' Print a simplified parse tree structure instead of JSON.',
|
||||
' --silent',
|
||||
' Don\'t print any error messages.'
|
||||
];
|
||||
console.log(help.join('\n'));
|
||||
}
|
Reference in New Issue
Block a user