@steadyx/aether
v0.0.21
Published
A JSON parser implemented in TypeScript
Downloads
30
Maintainers
Keywords
Readme
Aether: A Minimalist JSON Parser and Formatter
Aether is a powerful and minimalist JSON parser designed with a strong sense of community in mind. It provides a simple and efficient way to parse JSON strings into a structured format, enabling developers to work with JSON data effortlessly.
Features:
- Lightweight: Aether is designed to be minimalistic, providing only the essential features needed for JSON parsing.
- Easy to Use: With a simple API, Aether is accessible to developers of all skill levels.
- Extensible: Aether's modular design allows for easy customization and extension.
- Community-Driven: Aether values community contributions and encourages collaboration.
Ever wondered how a JSON string transforms into a structured format you can manipulate? Aether does this elegantly, and here's a sneak peek into its magic!
Installation:
npm i -g @steadyx/aether
Usage:
Formatting JSON Code
To format a JSON file, use the -f
flag followed by the path to the JSON file.
aether -f test.json
This will format the JSON code in test.json
and overwrite the file with the formatted code.
Outputting the Abstract Syntax Tree (AST)
To output the AST of a JSON file, simply provide the path to the JSON file.
aether test.json
This will output the AST of the JSON data in test.json
to the console.
🎭 The Original JSON String
{
"hello": "world",
"embedded": {
"numbers": 12,
"numbers2": [1, 2, 3, 4],
"strings": ["hello", "world"]
}
}
🎨 Tokenized Form
Aether first breaks down the JSON string into a series of tokens. Each token represents a fundamental unit of the string.
[
{ "type": "PUNCTUATION", "value": "{" },
{ "type": "STRING", "value": "\"hello\"" },
{ "type": "PUNCTUATION", "value": ":" },
{ "type": "STRING", "value": "\"world\"" },
{ "type": "PUNCTUATION", "value": "," },
{ "type": "STRING", "value": "\"embedded\"" },
{ "type": "PUNCTUATION", "value": ":" },
{ "type": "PUNCTUATION", "value": "{" },
{ "type": "STRING", "value": "\"numbers\"" },
{ "type": "PUNCTUATION", "value": ":" },
{ "type": "NUMBER", "value": 12 },
{ "type": "PUNCTUATION", "value": "," },
{ "type": "STRING", "value": "\"numbers2\"" },
{ "type": "PUNCTUATION", "value": ":" },
{ "type": "PUNCTUATION", "value": "[" },
{ "type": "NUMBER", "value": 1 },
{ "type": "PUNCTUATION", "value": "," },
{ "type": "NUMBER", "value": 2 },
{ "type": "PUNCTUATION", "value": "," },
{ "type": "NUMBER", "value": 3 },
{ "type": "PUNCTUATION", "value": "," },
{ "type": "NUMBER", "value": 4 },
{ "type": "PUNCTUATION", "value": "]" },
{ "type": "PUNCTUATION", "value": "," },
{ "type": "STRING", "value": "\"strings\"" },
{ "type": "PUNCTUATION", "value": ":" },
{ "type": "PUNCTUATION", "value": "[" },
{ "type": "STRING", "value": "\"hello\"" },
{ "type": "PUNCTUATION", "value": "," },
{ "type": "STRING", "value": "\"world\"" },
{ "type": "PUNCTUATION", "value": "]" },
{ "type": "PUNCTUATION", "value": "}" },
{ "type": "PUNCTUATION", "value": "}" }
]
🌳 Abstract Syntax Tree (AST)
Next, Aether constructs an Abstract Syntax Tree (AST), which represents the hierarchical structure of the JSON data.
{
"type": "ObjectExpression",
"properties": [
{
"type": "Property",
"key": { "type": "StringLiteral", "value": "hello" },
"value": { "type": "StringLiteral", "value": "world" }
},
{
"type": "Property",
"key": { "type": "StringLiteral", "value": "embedded" },
"value": {
"type": "ObjectExpression",
"properties": [
{
"type": "Property",
"key": { "type": "StringLiteral", "value": "numbers" },
"value": { "type": "NumberLiteral", "value": 12 }
},
{
"type": "Property",
"key": { "type": "StringLiteral", "value": "numbers2" },
"value": {
"type": "ArrayExpression",
"elements": [
{ "type": "NumberLiteral", "value": 1 },
{ "type": "NumberLiteral", "value": 2 },
{ "type": "NumberLiteral", "value": 3 },
{ "type": "NumberLiteral", "value": 4 }
]
}
},
{
"type": "Property",
"key": { "type": "StringLiteral", "value": "strings" },
"value": {
"type": "ArrayExpression",
"elements": [
{ "type": "StringLiteral", "value": "hello" },
{ "type": "StringLiteral", "value": "world" }
]
}
}
]
}
}
]
}