chiffon v2.5.4
Chiffon
A small ECMAScript parser, tokenizer and minifier written in JavaScript.
Features
- Supports for ECMAScript 6
- Supports for Abstract Syntax Tree (JavaScript AST)
Installation
In Browser:
<script src="chiffon.js"></script>
or
<script src="chiffon.min.js"></script>
Object Chiffon will defined in the global scope.
In Node.js:
npm install chiffon
var Chiffon = require('chiffon');
bower:
bower install chiffon
Parse
Parse a string source.
The result will be an abstract syntax tree (JavaScript AST) object.
(JavaScript AST is specified by the ESTree spec.)
- {Object} Chiffon.parse ( source , options )
@param {string} source Target source.
@param {Object} options(#parse-options).
@return {Object} Return an abstract syntax tree object.
Example:
var ast = Chiffon.parse('1 + 1');
console.log(ast);
/*
{
"type": "Program",
"body": [
{
"type": "ExpressionStatement",
"expression": {
"type": "BinaryExpression",
"operator": "+",
"left": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"right": {
"type": "Literal",
"value": 1,
"raw": "1"
}
}
}
]
}
*/
Parse Options
range : {boolean} default=false
Include an index-based location range. (array)loc : {boolean} default=false
Include line number and column-based location info.
Full options are following.
var options = {
range: Boolean,
loc: Boolean
};
Tokenize
Tokenize a string source.
- {Array} Chiffon.tokenize ( source , options )
@param {string} source Target source.
@param {Object} options(#tokenize-options).
@return {Array} Return an array of the parsed tokens.
var tokens = Chiffon.tokenize('var a = 1');
console.log(tokens);
/*
[ { type: 'Keyword', value: 'var' },
{ type: 'Identifier', value: 'a' },
{ type: 'Punctuator', value: '=' },
{ type: 'Numeric', value: '1' } ]
*/
Defined token type
- Comment
- WhiteSpace
- LineTerminator
- Template
- String
- Punctuator
- RegularExpression
- Numeric
- Identifier
- Null
- Boolean
- Keyword
Tokenize Options
comment : {boolean} default=false
Keep comment tokens.whiteSpace : {boolean} default=false
Keep white space tokens.lineTerminator : {boolean} default=false
Keep line terminator tokens.range : {boolean} default=false
Include an index-based location range. (array)loc : {boolean} default=false
Include line number and column-based location info.
Full options are following.
var options = {
comment: Boolean,
whiteSpace: Boolean,
lineTerminator: Boolean,
range: Boolean,
loc: Boolean
};
Untokenize
Concatenate to string from the parsed tokens.
- {string} Chiffon.untokenize ( tokens )
@param {Array} tokens An array of the parsed tokens.
@param {Object} options(#untokenize-options).
@return {string} Return a concatenated string.
Untokenize Options
- unsafe : {boolean} (default=false)
Untokenizer does not add a space between the identifier and identifier.
Tokens can return to the original string by using the untokenize with these options.
var source = 'var a = 1, b = 2; // comment';
var tokens = Chiffon.tokenize(source, {
comment: true,
whiteSpace: true,
lineTerminator: true
});
var result = Chiffon.untokenize(tokens, { unsafe: true });
console.log(result === source); // true
Minify
Minify JavaScript source.
- {string} Chiffon.minify ( source )
@param {string} source Target source.
@param {Object} options(#minify-options).
@return {string} Return a minified source.
var min = Chiffon.minify('var a = 1 + 1; // comment');
console.log(min); // 'var a=1+1;'
Minify Options
- maxLineLen : {number} default=32000
Limit the line length in symbols.
Demo
License
MIT
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago